Kamis, 01 Mei 2014

TRANSAKSI

Halo, setelah kemarin meresume materi Instalasi Oracel dan NetBeans sekarang saya akan meresume materi Transaksi pada Sistem Basis Data.

Apa itu transakasi?
Transaksi adalah satu atau beberapa aksi yag dilakukan program aplikasi untuk mengakes atau mengubah isi basis data. Transaksi juga merupakan bagian dari pengeksekusian sebuah program yang melakukan pengksesan basis dara bahkan juga melakukan serangkaian perubaan data. Transaksi harus dilakukan secara utuh atau tidak sama sekali, tidak boeh aa transaksi yag dikerjakan sebagian.

Apa tujuan transaksi?
Transaksi berujuan untuk mencegah dari kehilangan ataupun kerusakan data. Sebuah transaks berpeluang untuk mengganggu integritas basis data yang dapat memmbuat kondisi/hubungan antar data tidak seperti seharusanya.

Sifat-sifat transaksi:

  1. Auotimicity, dimana semua operasi dalam transaksi dapat dikerjakan seluruhnya atau tidak sama sekali.
  2. Consistency, dimana eksekusi transaksi harus dapat menjamin data tetap konsisten setelah transaksi berakhir.
  3. Isolationjika  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. Durability, dimana perubahan data yang terjadi setelah sebuah transaksi berakhir dengan baik, harus dapat bertahan bahkan jika seandainya sistem mati.
Operasi Transaksi Pada Oracle

-Commit, penanda transki telah dilakukan. Contoh:

Kita buat talenya dulu

Kita buat isi berserta seqencenya
Setelah datanya dimasukan, kemudian kita login dengan 2 command promp tetapi dengan user yang sama dan warna background yang berbeda dan select table transaksinya, seperti contoh di bawah ini 

setelah itu kita masukan data baru ke command line berwarna hitam
setelah itu lihat kita select table transaksi di kedua command line, lihat apa yang terjadi. pada command hitam sudah ada data huruf F, sedangkan pada warna abu belum ada.

agar data pada command line biru muncul hurf F. kita ketikan commit pada cmd hitam.

Kemudian select data transaksi di cmd abu, maka sudah ada F


- SAVE POINT
Save  Point  secara  sederhana merupakan  sebuah titik aman, dimana kita telah menyelesaiakan satu atau beberapa  transaksi. Save point dianalogikan seperti sebuah check point saat kita bermain game. 
Fungsi dari save point adalah supaya pada saat kita ingin rollback atau ada transaksi yang gagal, 
transaksi tidak berjalan dari awal kembali, tetapi dari save poin yang telah kita buat. 
Untuk membuat sebuah save point, caranya adalah :
SAVEPOINT [NAMA_SAVE_POINT];

mari kta buat savepointnya
setelah itu kita masukan data huruf G ke dalam tabel transaksi

kemudian select transaksinya
disinilah penggunaan savepoint, sekarang kita masukan rollback to [nama_savepoin] kemudian tampilkan datanya, maka aan keluar data sebelum dimasukan huruf G


perhatikan datanya hanya sampai F


ISOLASI TRANSAKSI 

Dalam transaksi database, ada 3 hal yang harus dicegah yaitu. 

  •  Dirty Read, Transaksi membaca data dari hasil transaksi lainnya yang gagal. Kedua transaksi tersebut  berjalan bersamaan. 

  • Non-Repeatable Read Transaksi membaca ulang data yang telah di baca sebelumnya karena data tersebut telah di modifikasi oleh transaksi lainnya. 

  • Phantom Read Transaksi membaca sebuah data yang telah hilang akibat dari transaksi yang lainnya
.Untuk  mencegah  3  hal  tersebut,  maka  dalam  Oracle  terdapat  2  level  isolasi  yang dapat diimplementasikan, yaitu : 

  • Read Commited Transaksi hanya dapat melihat perubahan data setelah transaksi lain telah  commit  pada data tersebut. (Seperti dalam contoh commit) 
  • Serializable, Adalah  level  isolasi  yang  menyediakan  isolasi  transaksi  yang  paling  ketat.  Level  ini 
    mengemulasikan  eksekusi  transaksi  secara  serial,  menjadikan  transaksi  dieksekusi  satu 
    setelah  yang  lainnya,seperti  secara  serial,  bukan  secara  bersamaan  (pararel).  Tetapi 
    aplikasi  yang  menggunakan level isolasi ini harus bersedia untuk mengulangi transaksi 
    dikarenakan  kegagalan  pengserialan  transaksi.  Saat  transaksi  berada  pada  level 
    serializable,  sebuah  query  SELECT  hanya  melihat  data  yang  di  COMMIT  sebelum 
    transaksi di mulai; transaksi tersebut tidak akan pernah melihat baik data yang belum di 
    COMMIT atau perubahan data yang terjadi selama eksekusi transaksi oleh transaksi lain 
    yang berjalan pada waktu bersamaan (e.g. saat transaksi ini berjalan, ada transaksi lain 
    yang  melakukan  COMMIT  pada  data).  Jika  pada  transaksi  dengan  level  isolaso 
    Serializable  mengandung  DML  (Data  Manipulatin  Language)  yang  mencoba  untuk 
    meng-update suatu data yang mungkin sudah di update pada sebuah transaksi yang belum 
    di commit pada awal transaksi Serializable, maka perintah DML tersebut akan gagal. 
    Untuk mengaplikasikan level isolasi Serializable, adalah dengan menggunakan perintah : 

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Isolai level ini mencegah terjadinya Phantom Read. 

Locking Protocol

  • Shared Lock (S-LOCK) Jika  transaksi  memiliki  shared  lock  pada  suatu  data,  transaksi  tersebut  hanya  bisa melakukan pembacaan. 
  • Exclusive Lock (X-LOCK) Bagi  transaksi  yang  memiliki  exclusive  lock  pada  suatu  data,  transaksi  tersebut  dapat melakukan perubahan dan pembacaan terhadap data tersebut.

  • Penguncian Level Tabel

    Penguncian  yang  berfungsi  untuk  mengunci  suatu  tabel  untuk  mencegah  perubahan  atau  penghapusan tabel selama ada transaksi yang menggunakan tabel tersebut. Untuk melakukan perintah penguncian tabel, adalah sebagai berikut. 
    LOCK TABLE [nama tabel];

    Penguncian Level Baris
    Penguncian  yang  dilakukan  pada  baris  (ROW)  yang  sedang  digunakan  oleh  suatu transaksi
    sampai transaksi tersebut selesai dilakukan.  Penguncian level baris hanya berlaku untuk operasi 
    UPDATE dan DELETE. 

    Deadlock
    Keadaan dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepas sebelum di mulai.(Yudi wibisono)

    0 komentar :

    Posting Komentar