Database Transaction: ACID

5 Juli, 2009

Sedikit review mengenai transaction theory pada suatu database. Mekanisme Oracle untuk mengelola transaction integrity sendiri menkombinasikan undo segment dan redo log files, database lain memiliki mekanisme sendiri untuk data processing mereka. Singkat cerita setiap relational database harus memenuhi kriteria ACID (Atomicity, Consistency, Isolation, dan Durability)

Atomicity
Prinsip dari atomicity adalah seluruh transaksi harus dilaksanakan semua (complete) atau tidak sama sekali. Sebagai contoh pada payroll processing: pada setiap kenaikan gaji karyawan maka grade dari karyawan tersebut juga harus ikut berubah, maka „atomictransaction akan terdiri dari dua update. Database harus dapat menggaransi bahwa kedua bagian update tersebut harus berhasil atau tidak sama sekali untuk semuanya. Jika hanya satu update saja yang berhasil, maka anda akan memiliki karyawan dengan pendapatan/gaji yang tidak sesuai/kompatibel dengan grade yang seharusnya: istilah bisnisnya adalah data corruption. Jika terjadi sedikit kesalahan saja/error/sesuatu yang tidak di kehendaki, maka database harus dapat memastikan bahwa tidak ada satu bagian pun yang tersimpan (tidak ada satupun update yang di lakukan), dan ini harus terjadi secara otomatis.

Oracle menjamin atomicity ini dengan menggunakan undo segment.

Consistency

Prinsip dasar dari consistency adalah hasil dari sebuah query harus konsisten dengan apa yang ada di database pada saat query di jalankan. Misalkan saja sebuah query sederhana untuk melihat rata-rata nilai pada satu kolom sebuah tabel. Jika tabel tersebut besar, maka akan membutuhkan waktu beberapa menit untuk menyelesaikannya. Jika pada query berjalan dan pada saat yang sama ada user yang meng-update kolom tersebut, apakah query tersebut mengikutkan baris baru tersebut atau tidak? Pada dasarnya sesuai dengan prinsip consistency, database akan memastikan perubahan nilai tidak di lihat oleh query: hal ini akan memberikan nilai rata-rata kolom sama seperti saat query pertama kali di jalankan, tidak peduli berapa lama eksekusi query berlangsung atau adanya aktifitas lain yang terjadi pada table tersebut.

Seringkali jika konfigurasi undo segment tidak benar akan muncul Oracle error, „ORA-1555 snapshot too old.“

Isolation

Prinsip dari isolation adalah incomplete transaction (uncommitted) (harus) tidak dilihat. Ketika sebuah transaction sedang berjalan, hanya satu session saja yaitu session yang mengeksekusi transaksi yang diijinkankan untuk melihat perubahan dari hasil transaksi tersebut: session yang lain harus melihat data asli, yaitu data sebelum adanya perubahan dari transaksi. Logikanya, pertama, full transaction tidak akan melewati (ingat prinsip atomicity) dan tidak ada satu user pun yang di ijikan melihat perubahan yang mungkin di terimanya. Kedua pada saat progress sebuah transaksi maka datanya (istilah bisnisnya) incoherent: terdapat sedikit jeda waktu ketika data pendapatan (salary) seorang karyawan (employee) telah berubah, tetapi grade employee tersebut tidak berubah. Transaction isolation membutuhkan database harus menyembunyikan transaksi (conceal transactions) yang sedang berjalan dari user lain: user hanya akan melihat versi sebelum update (preupdate)  sampai transaksi tersebut benar benar selesai (complete). Oracle menjamin transaction isolation ini melalui undo segments.

Durability

Prinsip durability pada dasaranya adalah satu transation dinyatakan complete dengan sebuah COMMIT. Pada saat transaksi sedang berjalan, konsep Isolation menghendaki tidak ada satupun (selain session tersebut) yang dapat melihat perubahan data yang telah di buat. Setelah transactions completes, maka semua session akan dapat melihat perubahan data tersebut dan database harus menjamin perubahan tersebut tidak akan hilang. Pada kasus tertentu bisa saja database kehilangan datanya dikarenakan user error: DML yang tidak baik atau dropping objects.

Oracle memenuhi Durability ini melalu penggunaan logfiles. Logfiles terdiri dari dua bentuk: Online redo log files, dan archive redo log files.

P.S: Dari buku ORACLE DATABASE 10g OCP Certification All-in-One Exam Guide (Exams #1Z0-042 and #1Z0-043)

Tags: ,

7 Antworten zu “Database Transaction: ACID”

  1. Ojat Sagt:

    sugeng suru baca ni git hehehe

    • mybrainsgrowell Sagt:

      agak menyimpang dari topiknya sugeng, dia kan backup n performance tuning. acid lbh terkait sama DML

  2. peopledochange Sagt:

    Wah ini dia yang saya cari…..bisa nambah ilmu oracle….hehe
    Upload semua yg penting2 pak……..

  3. kukuh Sagt:

    Oioioi, add blogspotkuuuuu

  4. adi wirawan Sagt:

    Ehm…emailmu kudune ganti dadi seagatebountang. BTW sampeyan kie siapa nya pak seagatejogja git? :D

    • mybrainsgrowell Sagt:

      aih.. males pak punya email banyak. hehe.. btw, saya ini dulu pernah di ajar matakuliah sistem informasi oleh seagatejogja bareng sampeyan juga. saya dua kali malahan.:D


Eine Antwort schreiben