Manajemen Transaksi Dalam Basis Data
Aang Ardam
Jurusan
teknik Informatika, Fakultas Teknik dan Ilmu Komputer, Universitas Komputer
Indonesia
Jl. Dipati Ukur No. 112-114-116, Bandung 40132
Jl. Dipati Ukur No. 112-114-116, Bandung 40132
Abstrak :
Transaksi adalah sebuah aksi atau serangkaian aksi, yang dilakukan oleh
user atau aplikasi yang mengakses atau mengubah isi dari database atau dapat
juga dikatakan sebagai unit kerja logical (Logical unit of work) dari suatu
database, sehingga yang dimaksud dengan majemen transaksi (transaction management) adalah
pengaturan transaksi-transaksi yang digunakan/diakses oleh suatu
aplikasi/sistem. Transaksi-transaksi ini perlu diatur untuk mempertahankan ACID
(atomicity, consistency, isolation, and durability). Selain transaksi
terdapat pula concurrency control atau konkurensi kontrol, concurrency control
atau konkurensi kontrol merupakan suatu sistem manajemen database ( DBMS )
konsep yang digunakan untuk mengatasi konflik dengan mengakses simultan atau
mengubah data yang dapat terjadi dengan sistem multi-user. Kontrol konkurensi,
bila diterapkan ke DBMS, dimaksudkan untuk mengkoordinasikan transaksi simultan
sambil menjaga integritas data
banyaknya transaksi yang dijalankan secara bersamaan dalam satu waktu (waktu
bersamaan). Serta ada pula recovery system yakni suatu cara utuk mengembalikan
data yang sudah rusak kembali menjadi benar atau baik.
Kata Kunci - Manajemen Transaksi, Transaksi, Kontrol Konkurensi, Recovery
System
I.
PENDAHULUAN
1.1.
Latar Belakang
Dalam kehidupan sehari-hari kita tidak akan
pernah lepas bahkan jauh dari yang namanya manajemen transaksi, karena
dimanapun kita berada pasti kita akan merasakan yang namanya transaksi misalkan
saja apabila kita mau jual beli pasi kita akan mengadakan yang namanya
manajemen transaksi makanya manajemen transaksi dan kehidupan tidak bisa
dilepaskan.
Manajemen transaksi terjadi bukan hanya ketika
kita jual beli atau dalam kehidupan ril kita namun manajeman transaksi juga
bakal kita rasakan dalam kehidupan program/aplikasi terutama pada basis data.
Manajemen transaksi ini dilakukan untuk
mengatur transaksi-transaksi yang digunakan/diakses oleh suatu aplikasi/system.
II. PEMBAHASAN
A. Transaksi
Transaksi
adalah sebuah aksi atau serangkaian aksi, yang dilakukan oleh user atau
aplikasi yang mengakses atau mengubah isi dari database atau transaksi juga
bisa diartikan sebagai pengeksekusian sebuah program/aplikasi yang melakukan
pengaksesan dan perubahan basis data. Namun apabila kita ingin melakukan
transaksi data setelah melakukan transksi haruslah tetap konsisten dan DBMS
yang kita gunakan juga harus menjamin bahwa setiap transaksi harus dapat
dikerjakan secara utuh atau tidak sama sekali.
Tidak boleh ada transaksi yang hanya dikerjakan sebagian, karena
dapat menyebabkan inkonsistensi basis data. Misalkan ketika kita melakukan pengubahan, penambahan atau penghapusan suatu
tabel maka akan berdampak pada isi tabel tersebut dan pada saat eksekusi transaksi
terjadi kagagalan, maka akan menimbulkan
ketidak konsistenan integrasi antar tabel. Namun Untuk
menjamin agar integritas dapat tetap terpelihara maka setiap transaksi harus
memiliki sifat-sifat:
1.
Atomik,
dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak
sama sekali.
2.
Konsisten,
dimana eksekusi transaksi secara tunggal harus dapat menjamin data tetap
konsisten setelah transaksi berakhir.
3.
Terisolasi,
jika pada sebuah sistem basis data terdapat sejumlah transaksi yang dilaksanakan
secara bersamaan, maka semua transaksi yang dilaksanakan pada saat yang
bersamaan tersebut harus dapat dimulai dan bisa berakhir.
4.
Bertahan,
dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan
baik, harus dapat bertahan bahkan jika seandainya sistem menjadi mati.
Terhentinya suatu transaksi tidak selalu diakibatkan oleh kegagalan
insidental baik dari perangkat keras (crash) ataupun kemacetan sistem operasi
(hang). Tapi lebih sering terjadi karena
user sengaja menghentikan transaksi atau karena penghentian transaksi oleh DBMS
akibat adanya kondisi tak diinginkan, seperti deadlock atau timeout.
Sebuah transaksi dapat menghasilkan dua kemungkinan:
a.
Jika
dilaksanakan lengkap seluruhnya, transaksi tersebut telah di commit dan basis data mencapai keadaan
konsisten baru.
b.
Jika transaksi
tidak sukses, maka transaksi dibatalkan dan basis data dikembalikan ke keadaan
konsisten sebelumnya (rollback).
Transaksi yang
sudah di commit tidak dapat dibatalkan lagi.
Jika ada kesalahan, maka harus dilakukan transaksi lain yang membalik
dampak transaksi sebelumnya
Ketika transaksi dilaksanakan/ dilakukan dari awal sampai akhir maka
terdapat beberapa kemungkinan yang akan terjadi, yaitu :
1.
Aktif (Active),
yang merupakan status awal (initial state) sebuah transaksi yang menunjukkan
transaksi tersebut masih dieksekusi.
2.
Berhasil
Sebagian (Partially Committed), yaitu keadaan
yang dicapai transaksi tepat pada saat operasi terakhir dalam transaksi selesai
dikerjakan.
3.
Gagal (Failed),
yang merupakan keadaan dimana sebuah transaksi terhenti pengeksekusiannya
sebelum tuntas sama sekali.
4.
Batal
(Aborted), yaitu keadaan dimana sebuah transaksi dianggap tidak/belum
dikerjakan yang tentu dengan terlebih dahulu diawali dengan mengembalikan semua
data yang telah diubah ke nilai-nilai semula. (yang menjadi tanggung jawab
DBMS).
5.
Berhasil
Sempurna (Committed), keadaan dimana transaksi telah dinyatakan berhasil dikerjakan
seluruhnya dan basis data telah merefleksikan perubahan-perubahan yang memang
diinginkan transaksi.
Ketika sebuah transaksi mulai dikerjakan, maka transaksi itu berada
dalam status aktif. Jika terjadi
penghentian sebelum operasi berakhir, maka transaksi segera beralih ke status gagal/failed. Namun, bila keseluruhan transaksi selesai
dikerjakan, maka transaksi itu berada pada status berhasil
sebagian/partially committed, dimana perubahan-perubahan data masih berada
di dalam memori utama yang bersifat volatile/tidak permanen. Transaksi dalam status ini masih mungkin
untuk pindah ke status failed, karena ada pembatalan transaksi baik sengaja
maupun tidak. Jika tidak beralih ke
status failed, maka nilai-nilai data yang ada di memori utama akan direkam ke
dalam disk yang bersifat permanen.
Begitu proses perekaman selesai, maka transaksi beralih ke status committed.
Sementara itu, transaksi yang berada pada status failed, maka DBMS
harus menjalan proses rollback.
Proses tersebut dapat berupa:
·
Mengulangi
pelaksanaan transaksi / restart, yang dilakukan pada transaksi yang
failed akbiat kemacetan perangkat keras ataupun perangkat lunak dan bukannya
penghentian transaksi secara sengaja oleh user.
·
Mematikan
transaksi / kill, yang dilakukan untuk transaksi yang dihentikan secara
sengaja oleh user atau akibat adanya kesalahan lojik dalam penulisan aplikasi.
Operasi-operasi yang dapat dilakukan oleh
transksi yaitu :
Ø read(x)
mengeksekusi
operasi pembacaan (read)
Ø write(x)
mengeksekusi
perintah penulisan kembali ke database (write).
Misalkan Transaksi transfer uang sebesar $50
dari rekening A ke rekening B, didefinisikan sbg berikut:
1. read (A)
3. write (A)
4. read (B)
6. write (B)
B. Concurrency Control
konkurensi kontrol merupakan suatu sistem manajemen database
( DBMS ) konsep yang digunakan untuk mengatasi konflik dengan mengakses
simultan atau mengubah data yang dapat terjadi dengan sistem multi-user.
Kontrol konkurensi, bila diterapkan ke DBMS, dimaksudkan untuk
mengkoordinasikan transaksi simultan sambil menjaga integritas data banyaknya transaksi
yang dijalankan secara bersamaan dalam satu waktu (waktu bersamaan).
Ilustrasi
: ada dua wisatawan yang pergi
ke kios elektronik pada saat yang sama untuk membeli tiket kereta api untuk
tujuan yang sama pada kereta yang sama. Hanya
ada satu kursi di kiri pelatih, tetapi tanpa kontrol concurrency, mungkin
wisatawan yang baik akan berakhir membeli tiket untuk satu kursi. Namun, dengan
kontrol concurrency, database ini tidak akan terjadi.. Kedua wisatawan akan masih dapat mengakses
database kereta tempat duduk, tetapi concurrency kontrol akan menjaga
keakuratan data dan memungkinkan hanya satu jalan untuk membeli kursi.
Kokurensi ini banyak yang menggunakannya hal tersebut
dikarenakan beberapa fakor, diantarany :
ü
Idle time (waktu menganggur) kecil.
ü time (waktu tanggap) lebih
baik.
Akan tetapi konkurensi juga suka ada
masalah, dan masalah umum yang sering terjadi pada komkurensi adala
- Masalah kehilangan modifikasi
- Masalah kehilangan modifikasi sementara
- Masalah analisa yang tidak konsisten
§ Masalah
Kehilangan Modifikasi
Contoh:
Transaksi A
|
Waktu
|
Transaksi B
|
=
|
|
|
=
|
Baca R
|
t1
|
=
|
=
|
|
|
=
|
=
|
t2
|
Baca R
|
=
|
|
|
=
|
Modifikasi R
|
t3
|
=
|
=
|
|
|
=
|
=
|
t4
|
Modifikasi R
|
=
|
|
|
=
|
· Transaksi A membaca R pada t1, transaksi B membaca
R pada t2.
· Transaksi A memodifikasi R pada t3.
· Transaksi B memodifikasi record yang sama pada t4.
· Modifikasi dari transaksi A akan hilang karena transaksi B
akan memodifikasi R tanpa memperhatikan modifikasi dari transaksi A pada t3
§ Masalah
kehilangan modifikasi sementara
Masalah ini timbul jika
transaksi membaca suatu record yang sudah dimodifikasi oleh transaksi lain
tetapi belum terselesaikan (uncommited), terdapat kemungkinan kalau transaksi
tersebut dibatalkan (rollback).
Contoh:
Transaksi A
|
Waktu
|
Transaksi B
|
=
|
|
|
=
|
=
|
t1
|
Modifikasi R
|
=
|
|
|
=
|
Baca R
|
t2
|
=
|
=
|
|
|
=
|
=
|
t3
|
rollback
|
=
|
|
|
=
|
· Transaksi B memodifikasi record R pada t1
· Transaksi A membaca R pada t2.
·
Pada saat t3 transaksi B dibatalkan.
·
Maka transaksi A akan membaca record yang salah
Transaksi A
|
Waktu
|
Transaksi B
|
=
|
|
|
=
|
=
|
t1
|
Modifikasi R
|
=
|
|
|
=
|
Modifikasi R
|
t2
|
=
|
=
|
|
|
=
|
=
|
t3
|
rollback
|
=
|
|
|
=
|
·
Pada waktu t2 transaksi A memodifikasi R
·
Karena transaksi B dibatalkan pada waktu t3, maka transaksi A memodifikasi
record yang salah
§
Masalah analisa yang tidak konsisten
Contoh :
Nilai 1 = 40 Nilai 2 = 50 Nilai 3 = 30
Transaksi A
|
Waktu
|
Transaksi B
|
=
|
|
|
=
|
Baca nilai 1 (40)
Juml = 40
|
t1
|
=
=
|
=
|
|
|
=
|
Baca nilai 2 (50)
Juml = 90
|
t2
|
=
|
=
|
|
|
=
|
=
|
t3
|
Baca nilai 3 (30)
|
=
|
|
|
=
|
=
|
t4
|
Modifikasi nilai 3
30 " 20
|
=
|
|
|
=
|
|
t5
|
Baca nilai 1 (40)
|
|
|
|
=
|
|
t6
|
Modifikasi nilai 1
40 " 50
|
|
|
|
=
|
|
t7
|
Commit
|
|
|
|
|
Baca nilai 3 (20)
Juml = 110
(bukan 120)
|
t8
|
|
=
|
|
|
|
·
Transaksi A menjumlah nilai 1, nilai 2 dan nilai 3.
·
Transaksi B " nilai 1 + 10 ; nilai 3 - 10
·
Pada waktu t8, transaksi A membaca
nilai yang salah karena nilai 3 sudah
·
dimodifikasi menjadi 20 (transaksi B sudah melakukan commit sebelum
transaksi A membaca nilai 3).
Namun ada dua cara atau mekanisme untuk menyelesaikan
masalah-masalah di atas, yaitu :
v Locking.
Locking adalah salah satu mekanisasi pengontrolan konkuren.
Konsep dasarnya adalah: ketika suatu transaksi memerlukan jaminan
kalau record yang diinginkan tidak akan berubah secara mendadak, maka
diperlukan kunci untuk record tersebut.
Fungsinya kunci (lock) adalah dengan menjaga
record tersebut agar tidak dimodifikasi oleh transaksi lain.
Cara kerja dari kunci:
1. Pertama kita asumsikan terdapat 2 macam kunci:
· Kunci X : kunci yang eksklusif.
· Kunci S : kunci yang digunakan bersama-sama.
2. Jika transaksi A menggunakan kunci X pada
record R, maka permintaan dari transaksi B untuk suatu kunci pada R ditunda,
dan B harus menunggu sampai A melepaskan kunci tersebut.
3. Jika transaksi A menggunakan kunci S pada record R, maka:
· Bila transaksi B ingin menggunakan kunci X, maka B
harus menunggu sampai A melepaskan kunci tersebut.
· Bila transaksi B ingin menggunakan kunci S, maka B
dapat menggunakan kunci S bersama A.
Tabel Kunci:
|
X
|
S
|
-
|
X = kunci X
|
X
|
N
|
N
|
Y
|
S = kunci S
|
S
|
N
|
Y
|
Y
|
N = No
|
-
|
Y
|
Y
|
Y
|
Y = Yes
|
4. - Bila suatu transaksi hanya melakukan
pembacaan saja, secara otomatis ia memerlukan kunci S " baca (S)
- Bila transaksi tersebut ingin memodifikasi
record maka secara otomatis ia memerlukan kunci S " memodifikasi (X)
- Bila transaksi tersebut sudah menggunakan kunci
S, setelah itu ia akan memodifikasi record, maka kunci S akan dinaikan ke level
kunci X.
5. Kunci X dan kunci S akan dilepaskan pada saat
synchpoint (synchronization point).
Synchpoint menyatakan akhir dari suatu transaksi dimana basis data
berada pada state yang konsisten. Bila
synchpoint ditetapkan maka:
- Semua modifikasi program menjalankan operasi commit atau
rollback.
- Semua kunci dari record dilepaskan.
Misalkan untuk menyelesaikan
permasalahan kehilangan modifikasi
Transaksi A
|
Waktu
|
Transaksi B
|
=
|
|
|
=
|
Baca R
(kunci S)
|
t1
|
=
|
=
|
|
|
=
|
=
|
t2
|
Baca R
(kunci S)
|
=
|
|
|
=
|
Modifikasi R
(kunci S)
tunggu
|
t3
|
=
|
=
|
|
|
=
|
=
|
t4
|
Modifikasi R
(kunci X)
tunggu
|
=
|
|
|
=
|
|
|
|
=
|
tunggu
|
|
|
tunggu
|
·
Pada waktu t3, transaksi A memerlukan kunci X, maka transaksi A harus
menunggu sampai B melepaskan kunci S.
·
Transaksi B juga harus menunggu pada t4.
·
Maka tidak akan ada yang kehilangan modifikasi, tetapi terdapat keadaan
baru yaitu deadlock.
Deadlock, yaitu suatu kondisi dimana ke-2 transaksi dalam keadaan menunggu,
sehingga keduanya tidak akan pernah selesai dieksekusi.
ika pelepasan kunci terlalu cepat dilakukan, maka
bisa terjadi inkonsistensi informasi.
Tapi bila dilepas di akhir transaksi, bisa terjadi deadlock. Hal ini merupakan kondisi dilematis pada
sebuah sistem konkuren yang memanfaatkan mekanisme locking.
v
Time Stamping
Salah satu alternatif concurrency control yang
dapat menghilangkan deadlock adalah time stamping. Secara umum, timestamping
(TS) adalah penanda waktu saat transaksi
terjadi. Hal ini untuk mengurutkan
eksekusi transaksi agar sama dengan eksekusi serial.
Time stamp dapat berupa:
- waktu sistem saat transaksi dimulai, atau
- penghitung logik (logical counter) yang terus bertambah
nilainya tiap kali terjadi transaksi baru.
Jika time stamp transaksi a lebih kecil dari pada time stamp transaksi b , atau
TS(Ta) < TS(Tb),
maka transaksi a (Ta) selalu dilaksanakan sebelum transaksi b (Tb).
Contoh:
Misal rekaman pada basis data memuat TS 168, yang
mengidentifikasikan transaksi dengn TS 168 adalah transaksi yang terkemudian
yang sukses mengupdate rekaman yang bersangkutan. Maka jika ada transaksi dengan TS 170 mencoba
mengupdate rekaman yang sama, maka update ini akan diijinkan, karena TS yang
dimiliki lebih kemudian dari TS pada rekaman.
Saat transaksi ini dilakukan, TS pada rekaman akan diatur menjadi
170. Sekarang, jika transaksi yang akan mengupdate rekaman tersebut memiliki TS 165,
maka update ditolak karena TS-nya
< TS di rekaman.
Selain transaksi, item data juga memiliki nilai
time stamp. Untuk setiap item data Q, ada 2 nilai time stamp, yaitu:
a.
Read time stamp atau R-timestamp(Q), yang menunjukkan nilai TS terbesar
dari setiap transaksi yang berhasil menjalankan operasi read(Q).
b.
Write time stamp atau W-timestamp(Q), yang menunjukkan nilai TS terbesar
dari setiap transaksi yang berhasil menjalankan operasi write(Q).
Time stamp ini akan selalu diperbarui ketika ada
perintah baru read(Q) atau write(Q) yang dijalankan
Cara pemberian nilai timestamp:
- Global (systemwide) monotonically increasing number
- Local (site) monotonically increasing number.
C. Recovery System
Recovery merupakan upaya untuk mengembalikan
basis data ke keadaaan yang dianggap benar setelah terjadinya suatu kegagalan.
Terdapat beberapa jenis
pemulihan :
- Pemulihan
terhadap kegagalan transaksi : Kesatuan prosedur alam program yang dapat
mengubah / memperbarui data pada sejumlah tabel.
- Pemulihan
terhadap kegagalan media : Pemulihan karena kegagalan media dengan cara
mengambil atau memuat kembali salinan basis data (backup)
- Pemulihan
terhadap kegagalan sistem : Karena gangguan sistem, hang, listrik terputus
alirannya.
Mekanisme recovery memiliki dua bagian utama, yaitu:
- Aksi-aksi
yang ditempuh selama transaksi berjalan normal untuk menjamin adanya
informasi yang memadai yang kelak dibutuhkan oleh mekanisme recovery.
- Aksi-aksi
yang ditempuh setelah terjadinya kerusakan/ kegagalan sistem yang
dilakukan untuk memulihkan isi basis data ke suatu keadaan yang menjamin
konsistensi basis data, keatomikan, dan ketahanan transaksi.
Skema
Mekanisme Recovery
Dengan
asumsi ruang disk yang dialokasikan untuk basis data tidak mengalami kerusakan,
maka ada 3 pilihan skema untuk menjalankan mekanisme recovery secara otomatis
begitu kerusakan atau kegagalan sistem telah terjadi. Ketiga skema pilihan itu
adalah:
- File
Log dengan Penundaan Pengubahan (Incremental Log With Defered Update)
- File
Log dengan Pengubahan langsung (Incremental Log With Immediate Updates)
- Page
Bayangan (Shadow Paging), yang memerlukan akses ke disk yang lebih
sedikit.
Recovery
untuk Transaksi Konkuren
a. Interaksi dengan pengendalian konkurensi
Skema recovery ini akan banyak tergantung pada
skema pengendalian konkurensi yang digunakan. Untuk menjalankan proses roll
back terhadap transaksi yang gagal/ batal,kita harus membatalkan perubahan yang
telah dilakukan oleh transaksi tersebut.
Jika
sebuah transaksi T telah mengubah sebuah item data Q, tidak boleh ada transaksi
lain yang boleh mengubah item data yang sama hingga T telah di-commit ataupun
di-roll back. Kita dapat menjamin hal ini dengan memanfaatkan Loking Protokol
Dua Fase yang Ketat, yang menerapkan penguncian dengan mode exclusive hingga
akhir transaksi.
b. Restart recovery
Pada
saat sistem melakukan pemulihan data, ia membentuk dua buah daftar. Yang
pertama adalah daftar undo (undo-list) yang terdiri atas transaksi-transaksi
yang harus dikenai operasi undo dan daftar redo (redo-list) yang berisi
transaksi-transaksi yang harus dikenai operasi redo.
III. PENUTUP
A.
Kesimpulan
–
Transaksi merupakan sebuah aksi untuk mengakses atau merubah basis data.
–
Dalam transaksi terapat dua hasil atau output yaitu
commit atau rollback
–
Jika transaksi berjalan sukses maka dikatakan commit,
sebaliknya jika transaksi tidak berjalan sukses maka transaksi dibatalkan dan
kembali ke keadaan semula dikatakan rollback
–
Data harus tetap konsisten
–
Kontrol konkurensi merupakan suatu
masalah yang timbul ketika beberapa proses terjadi bersamaan
–
Dua keuntungan apabila
menggunakan konkurensi yaitu Idle time (waktu menganggur)
kecil dan time (waktu tanggap) lebih baik.
–
Tiga masalah utama yang sring terjadi di konkurensi, yait
:
o
Masalah kehilangan modifikasi
o
Masalah kehilangan modifikasi sementara
o
Masalah analisa yang tidak konsisten
–
Dua mekanisme untuk mengatasi
masalah-masalah umum dalam konkurensi yaitu : locking dan time stamping
–
Recovery merupakan upaya untuk
mengemblikan kembali data yang sudah rusak
DAFTAR PUSTAKA
A Short Description about youself
Any feedback, questions or ideas are always welcome. In case you are posting Code ,then first escape it using Postify and then paste it in the comments
0 comments: