Pages

Thursday, January 23, 2014

Manajemen Transaksi





Unknown | 6:28 AM | 0 Comments



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


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)
2. A       A – 50
3. write (A)
4. read (B)
5. B       B + 50
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
  1. Masalah kehilangan modifikasi
  2. Masalah kehilangan modifikasi sementara
  3. 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:
  1. waktu sistem saat transaksi dimulai, atau
  2. 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:
  1. Global (systemwide) monotonically increasing number
  2. 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 :
  1. Pemulihan terhadap kegagalan transaksi : Kesatuan prosedur alam program yang dapat mengubah / memperbarui data pada sejumlah tabel.
  2. Pemulihan terhadap kegagalan media : Pemulihan karena kegagalan media dengan cara mengambil atau memuat kembali salinan basis data (backup)
  3. Pemulihan terhadap kegagalan sistem : Karena gangguan sistem, hang, listrik terputus alirannya.
Mekanisme recovery memiliki dua bagian utama, yaitu:
  1. Aksi-aksi yang ditempuh selama transaksi berjalan normal untuk menjamin adanya informasi yang memadai yang kelak dibutuhkan oleh mekanisme recovery.
  2. 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:
  1. File Log dengan Penundaan Pengubahan (Incremental Log With Defered Update)
  2. File Log dengan Pengubahan langsung (Incremental Log With Immediate Updates)
  3. 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





By Unknown
A Short Description about youself







Stay Connected With Us
Feed Icon Twitter Icon Facebook Icon Google+ Icon Youtube Icon


Share and Spread Share On Facebook +1 This Post Digg This Post Stumble This Post Tweet This Post Tweet This Post Tweet This Post Save Tis Post To Delicious Share On Reddit Bookmark On Technorati


Related Articles

JOIN THE DISCUSSION

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: