vee’s notes

this is about everything

Column Oriented vs Row Oriented DBMS April 28, 2009

Filed under: database — veeolina @ 4:48 pm
Tags: , ,

Suatu DBMS (Database Management System) terdiri dari row dan column. Jumlah column sudah ditentukan pada waktu pembuatan database sedangkan jumlah row akan terus bertambah seiring dengan penggunaan database.

Terdapat dua jenis DBMS berdasarkan cara penyimpanan datanya pada storage, yaitu column oriented DBMS dan row oriented DBMS. Column oriented database menyimpan data berdasarkan column dan row oriented DBMS menyimpan berdasarkan row. Untuk lebih jelasnya dapat dilihat pada contoh di bawah ini:

Misalnya terdapat tabel Employee yang terdiri dari 4 column, yaitu column EmpNo, EName, Salary, dan DeptNo. Berikut visualisasi dari tabel tersebut:

EmpNo  Ename  Salary  DeptNo

1      Smith    800      20

2      Allen    1600     30

3      Ward     1250     20

Row oriented DBMS akan menyimpan setiap atribut dari suatu row secara berurutan. Jadi data dari tabel di atas akan disimpan dalam bentuk:

1, Smith, 800, 20; 2, Allen, 1600, 30; 3, Ward, 1250, 20;

Sedangkan column oriented akan menyimpan data dari tabel di atas dalam bentuk:

1, 2, 3; Smith, Allen, Ward; 800, 1600, 1250; 20, 30, 20;

Column oriented dan row oriented DBMS memiliki kelebihan masing-masing. Column oriented cocok digunakan untuk komputasi pada row yang banyak tapi hanya untuk column-column tertentu. Selain itu, jenis DBMS ini juga cocok untuk penulisan nilai suatu column yang berlaku untuk semua row. Hal ini akan membuat proses penulisan menjadi lebih efisien karena tidak mengganggu column yang lain.

Sedangkan row oriented DBMS cocok digunakan jika dalam suatu komputasi melibatkan bayak column dari suatu row secara bersamaan dan jumlah row relatif sedikit. Row oriented juga cocok digunakan untuk penulisan data suatu row di mana semua column terisi secara bersamaan.

 

DELETE vs TRUNCATE April 23, 2009

Filed under: oracle — veeolina @ 5:35 pm
Tags: , ,

DELETE sama TRUNCATE apa bedanya sih? Perasaan fungsinya sama, hapus-hapus juga..

Eits..tunggu dulu..tnyata klo salah pilih, akibatnya bisa fatal lho..

Kok bisa gitu??

Command DELETE bisa dipakai untuk menghapus semua row yg ada dalam suatu tabel. Jika pada command DELETE ditambahkan clause WHERE maka yang dihapus hanya row tertentu saja yang memenuhi kondisi WHERE tersebut. Sedangkan command TRUNCATE digunakan untuk menghapus semua row yang ada pada suatu tabel. Command ini tidak bisa diikuti oleh clause WHERE.

DELETE adalah DML (Data Manipulation Language) command. Jadi setiap operasi DELETE selesai dilakukan, command COMMIT harus dipanggil untuk membuat perubahan menjadi permanen. Selain itu setelah operasi DELETE, operasi ROLLBACK juga dapat dilakukan. Untuk dapat ROLLBACK maka semua data yang dihapus harus di-copy terlebih dahulu ke tablesapce  UNDO/ROLLBACK. Hal inilah yang menyebabkan operasi DELETE lebih lambat daripada operasi TRUNCATE. Pada operasi TRUNCATE semua data langsung dihapus dari storage tanpa harus di-copy terlebih dahulu. TRUNCATE adalah DDL (Data Defenition Language) command yang tidak bisa di undo (ROLLBACK). Sebagai DDL command, TRUNCATE tidak bisa memanggil TRIGGER sedangkan DELETE dapat memanggil TRIGGER yang berhubungan dengan tabel yang dihapus.

Jadi pastikan untuk memilih command yang tepat ya..biar ga kehilangan data, operasi yang dijalankan benar, ga lemot, dan hasilnya sesuai dg yang diinginkan 🙂

 

Solusi ORA-01157 dan ORA-01110 April 15, 2009

Filed under: oracle — veeolina @ 5:44 pm
Tags: , ,

Aku pernah ngalamin masalah tiba-tiba oracle nya ga bisa di startup. Waktu mencoba untuk startup muncul pesan error:

SQL> startup
ORACLE instance started.

Total System Global Area 700448768 bytes
Fixed Size 1221372 bytes
Variable Size 88083716 bytes
Database Buffers 608174080 bytes
Redo Buffers 2969600 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 9 - see DBWR trace file
ORA-01110: data file 9: '/opt/oracle/oradata/DATA/datafile_a.dbf'

Ada masalah apa ya?
Ternyata ORA-01157 muncul karena background process tidak menemukan salah satu datafile. Hal ini bisa terjadi karena file nya rusak atau hilang.

Nah..untuk menyelesaikan masalah ini aku ngejalanin langkah-langkah berikut:
1. matikan oracle instance

SQL>shutdown immediate
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.

2. nyalakan oracle instance tanpa open database

SQL>startup mount
ORACLE instance started.
Total System Global Area 236404368 bytes
Fixed Size 724624 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 798720 bytes
Database mounted.

3. drop datafile yang rusak/hilang

SQL>alter database datafile '/opt/oracle/oradata/DATA/datafile_a.dbf' offline drop;
Database altered.

4. coba untuk open database

SQL>alter database open;
Database altered.

5. matikan oracle instance

SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

6. nyalakan oracle

SQL>startup
ORACLE instance started.
Total System Global Area 236404368 bytes
Fixed Size 724624 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 798720 bytes
Database mounted.
Database opened.
SQL>

Drop datafile pada dasarnya dapat dilakukan, karena untuk startup, oracle tidak memerlukan datafile.

case solved ^^