Docstoc

Sistem Manajemen Basis Data Teknik Konkurensi_1_

Document Sample
Sistem Manajemen Basis Data Teknik Konkurensi_1_ Powered By Docstoc
					Sistem Manajemen Basis Data
     Teknik Konkurensi



   Dr. Lily Wulandari
Konsep Transaksi
 Sebuah transaksi adalah sebuah unit dari
  eksekusi program yang mampu mengakses dan
  mengupdate berbagai data.
 Sebuah transaksi akan berhadapan dengan
  konsistensi database.
 Selama eksekusi transaksi database mungkin
  dalam kondisi inkonsisten.
 Setelah transaksi selesai, database harus kembali
  konsisten.
Properti AKID
Untuk menjamin integritas data, sistem database
  harus bersifat :
 Atomik
  Dimana semua operasi-operasi dalam transaksi dapat
  bekerja secara utuh atau tidak sama sekali.
 Konsisten
  Eksekusi transaksi dapat menjamin konsistensi database.
 Isolasi. Pada sejumlah transaksi yang terjadi secara
  bersamaan, setiap transaksi tidak boleh terpengaruh
  dengan transaksi yang lain. Hasil transaksi sementara
  harus terlindung dari eksekusi transaksi yang lain.
Properti AKID
Maksudnya, untuk setiap pasangan transaksi Ti dan Tj,
 menunjukkan kepada Ti bahwa transaksi lain Tj,
 menyelesaikan eksekusi sebelum Ti mulai, atau Tj
 mulai eksekusi setelah Ti selesai.
 Durabel (bertahan/permanen). Setelah
  sebuah transaksi berakhir dengan sukses,
  perubahan yang terjadi pada sebuah database
  harus tetap bertahan.
Contoh pada transfer uang
 Transaksi pengiriman 50 dari rekening A ke rekening B:
   1. read(A)
   2. A := A – 50
   3. write(A)
   4. read(B)
   5. B := B + 50
   6. write(B)
 Konsistensi yang dibutuhkan – jumlah A dan B tidak
  terubah oleh eksekusi transaksi.
Contoh pada transfer uang
 Keatomikan yang diperlukan — jika transaksi
  terhenti setelah tahap ke 3 sebelum tahap ke 6,
  sistem harus menjamin bahwa perubahan pada
  database tidak terjadi samasekali, sebab jika
  tidak maka ketidak konsistenan akan terjadi.
 Kebutuhan akan daya tahan — seorang user
  dapat menyelesaikan sebuah transaksi secara
  lengkap (mis., transfer 50 telah diterima),
  perubahan nilai pada database harus tetap
  bertahan, bahkan jika kemudian terjadi crash.
Contoh pada transfer uang
 Kebutuhan akan keterisolasian — jika diantara
  langkah ke 3 dan 6, ada transaksi lain
  mengakses database yang akan diubah, maka
  akan terjadi ketidak konsistenan data (jumlah
  A + B akan lebih sedikit dari yang seharusnya).
  Dapat dijamin bila transaksi akan terjadi secara
  serial, dimana yang satu berjalan setelah yang
  lainnya. Bagaimanapun juga eksekusi transaksi
  secara bersamaan tetap lebih menguntungkan.
Status Transaksi
 Aktif, adalah status awal; sebuah transksi akan
  ada dalam status ini selama eksekusi
  berlangsung
 Selesai sebagian, keadaan yang dicapai
  transaksi tepat setelah instruksi terakhir dalam
  transksi selesai dikerjakan.
 Gagal, kedaan dimana eksekusi belum dapat
  dikerjakan secara utuh (terhenti).
Status Transaksi
 Batal, setelah transaksi batal terjadi dan database
  dikembalikan nilai-nilainya seperti sebelum transaksi.
  Dua pilihan setelah pembatalan:
    Memulai kembali transaksi – hanya jika tidak ada
     kesalahan lojik
    Hentikan transaksi
 Berhasil (Committed), keadaan setelah transaksi
  berjalan lengkap.
Status Transaksi
Eksekusi Konkuren
 Banyak transaksi dapat dijalankan secara bersamaan
  dalam sebuah sistem. Keuntungannya:
    Meningkatkan kinerja prosesor dan disk
     penyimpanan, untuk melakukan transaksi yang
     lebih baik: suatu transaksi dapat menggunakan CPU
     sementara yang lain membaca atau menulis dalam
     penyimpan
    Mengurangi rata-rata waktu tunggu transaksi:
     transaksi yang singkat tidak perlu menunggu
     transaksi lain yang lebih panjang.
Pengendalian Konkurensi
 Skema pengendalian konkurensi – mekanisme
  untuk mendapatkan isolasi, mis., untuk
  mengendalikan interaksi antara transaksi
  konkuren dalam hubungannya menjaga
  konsistensi database
Pengontrolan Konkurensi
 Pengontrolan   konkurensi merupakan salah satu
  fungsi dari DBMS
 Pada DBMS terpusat yang multi-user, dapat
  mengakses sejumlah transaksi pada waktu
  bersamaan.
 Dua hasil transaksi adalah commit atau rollback.
 Jika transaksi berjalan sukses maka dikatakan
  commit, sebaliknya jika transaksi tidak berjalan
  sukses maka transaksi ibatalkan dan kembali ke
  keadaan semula dikatakan rollback.
Pengontrolan Konkurensi
Untuk menjamin transaksi-transaksi yang
dilakukan bersamaan berjalan sukses
tanpa adanya tumpang tindih maka
dibutuhkan     mekanisme       pengontrolan
konkurensi,       jika     tidak     timbul
permasalahan:
    Lost update
    Uncommited dependency
    Inconsistent analysis
Permasalahan Konkurensi

   Lost update/kehilangan modifikasi.

Permasalahan timbul pada saat operasi
update berjalan sukses kemudian ditindih
oleh operasi update lain yang dilakukan
oleh pemakai lain.
Lost update/kehilangan
modifikasi
 Lost update
      Transaksi A retrieve nilai t saat w1. Transaksi B retrieve nilai t
       saat w2. Transaksi B mengubah nilai satu atau record tanpa
       melihat efek transaksi A. Transaksi B overwrite nilai-nilai hasil
       transaksi A sehingga adalah mungkin transaksi A tidak melihat
       efek perubahan yang dilakukan B
    Transaksi A             Waktu         Transaksi B
    Select * from t;        w1
                            w2            Select * from t;
    *update t set id=1      w3
    Where id = 2;
                            w4            Update t set id = 3
                                          where id = 2;

          Transaksi A kehilangan perubahan saat w4
Permasalahan Konkurensi

 Uncommited  dependency / ketergantungan
pada saat belum commit

Permasalahan timbul pada saat transaksi dibiarkan
melihat hasil dari transasksi lain yang belum
commit.

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).
Uncommitted dependency
 Uncommitted dependency
         Masalah muncul jika transaksi diijinkan retrieve record-record
          yang telah diubah nilainya oleh transaksi lain yang belum save.
          Karena belum save selalu ada kemungkinan perubahan
          tersebut akan di-undo (redo)

Transaksi A                 waktu    Transaksi B
                            w1       Update t set dept_id=1;
Select * from t;            w2
                            w3       rollback;

       Transaksi A dependent ke uncommitted change saat w2
Uncommitted dependency
 A mengubah uncommitted change saat w2,
  kehilangan saat w3,

  Transaksi A                waktu   Transaksi B
                             w1      Update t set dept_id=1;
  Update t set dept_id=11;   w2
                             w3      rollback;
Permasalahan Konkurensi


  Inconsistent analysis / analisis yang
tidak konsisten

Permasalahan timbul apabila suatu
transaksi membaca beberapa nilai tetapi
transasksi berikutnya memodifikasi salah
satu nilai.
Permasalahan Konkurensi
 Inconsistent analysis

            T1           Waktu           T2
begin_transaction          t1    begin_transaction
read(x)                    t2    sum=0
x=x-10                     t3    read(x)
write(x)                   t4    sum=sum+x
read(z)                    t5    read(y)
z=z+10                     t6    sum=sum+y
write(z)                   t7    read(z)
commit                     t8    sum=sum+z
                           t9    commit
                          t10
                          t11
 Permasalahan Konkurensi

Inconsistent analysis


                        Nilai 1 = 40
                        Nilai 2 = 50
                        Nilai 3 = 30



                        Transaksi A menjumlahkan
                        nilai 1, 2 dan 3
                        Transaksi B nilai 1 + 10 dan
                        nilai 3 - 10
Catatan
 Commit      adalah     operasi     yang
 menyatakan bahwa suatu transaksi
 sudah        terselesaikan/       sukses
 (successfull end-of-transaction).

 Rollback     adalah   operasi   yang
 menyatakan bahwa suatu transaksi
 dibatalkan     (unsuccessfull  end-of-
 transaction).
OBJEKTIF PENGONTROLAN
KONKURENSI
 Penjadualan transaksi untuk mencegah
  adanya saling interferensi.
 Hanya satu transaksi dieksekusi pada
  satu waktu : satu transaksi di-commit
  sebelum transaksi lain diperkenankan
  untuk mulai.
 Transaksi dapat dilakukan pada sistem
  paralel, dengan cara penjadualan
  bersama.
SERIALIZABILITY

 Schedule atau jadual merupakan urutan dari operasi
  read & write secara bersamaan pada sekumpulan
  transaksi yg konkuren.
 Serial schedule merupakan jadual dimana operasi2
  setiap transaksi dieksekusi secara berurutan tanpa
  terselip operasi dari transaksi lain
 Nonserial schedule merupakan jadual dimana
  operasi2 dari sekumpulan transaksi konkuren dapat
  saling menyelip.
 Serializable berarti jika jadual (nonserial)
  menghasilkan hasil yg sama seperti halnya jadual
  serial lainnya
SERIALIZABILITY

 Urutan operasi sangat penting
      Jika 2 transaksi hanya melakukan operasi read
       data, maka tidak terjadi konflik & urutan operasi
       tidak penting
      Jika 2 transaksi melakukan operasi read & write
       pada data yg berbeda, maka tidak terjadi konflik &
       urutan operasi tidak penting
      Jika satu transaksi melakukan operasi write data
       & yg lain melakukan operasi read & write pada
       data yg sama, maka urutan eksekusi sangat
       penting
TEHNIK PENGONTROLAN KONKURENSI


 Locking
Apabila suatu transaksi mengakses suatu data maka suatu
lock (kunci) dapat mencegah pengaksesan oleh transasksi
lain.

 Timestamping
Timestamping merupakan suatu identitas waktu dimulainya
suatu transasksi.Timestamping mengatur prioritas transaksi
berdasarkan timestamp.         Timestamp terkecil merupakan
transaksi paling duluan, jika terjadi konflik transaksi direstart.

 Optimistic
Konflik jarang terjadi, semua transaksi dieksekusi dan pada
saat commit, dicek kembali, jika ada konflik transaksi direstart.
Matrik Locking

Konsep dasar :
Ketika suatu transaksi memerlukan jaminan
kalau record yang diingini tidak akan berubah
secara mendadak, maka diperlukan kunci untuk
record tersebut.

Fungsi kunci (lock) adalah menjaga record
tersebut agar tidak dimodifiksi transaksi lain.
 Matrik Locking
Cara kerja dari kunci :
 Kita asumsikan terdapat 2 (dua) macam kunci :
 Kunci X (kunci eksklusif) dan kunci S (kunci yang
    digunakan bersama-sama)
 Jika transaksi A menggunakan kunci X pada record R,
    maka permintaan dari transaksi B harus menunggu
    sampai nanti transaksi A melepaskan kunci
 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
       bisa menggunakan kunci S bersama A
Matrik Locking
 Bila suatu transaksi hanya melakukan pembacaan
saja, secara otomatis ia memerlukan kunci S.
Bila transaksi tersebut ingin memodifikasi record, maka
secara otomatis ia memerlukan kunci X.
Bila transaksi tersebut sudah menggunakan kunci S,
setelah itu ia akan memodifikasi record, maka kunci S
akan dinaikkan ke level kunci X.

 Kunci X dan kunci S akan dilepaskan pada saat
Synchpoint (synchronization point).
Bila synchpoint ditetapkan maka:
          semua modifikasi program menjalankan
           operasi COMMIT atau ROLLBACK
          semua kunci dari record dilepaskan
Matrik Locking
        Transaksi A



         X            S   -
   X     N            N   Y
                              Transaksi B
   S     N            Y   Y
    -    Y            Y   Y
PROTOKOL TWO-PHASE
LOCKING (2PL)
 Protokol untuk menjamin serializability


 Suatu transaksi mengikuti protokol Two-
  phase locking jika semua operasi penguncian
  mendahului operasi membuka kunci terlebih
  dahulu dalam suatu transaksi.
PROTOKOL TWO-PHASE
LOCKING (2PL)
 Phase 1: Growing Phase
  Transaksi dapat memperoleh kunci
  Transaksi tidak boleh melepaskan kunci

 Phase 2: Shrinking Phase
  Transaksi boleh melepaskan kunci
  Transaksi tidak dapat memperoleh kunci
2PL UNTUK MASALAH
KEHILANGAN MODIFIKASI
2PL UNTUK MASALAH
MODIFIKASI SEMENTARA
2PL UNTUK MASALAH ANALISIS
YANG TIDAK KONSISTEN
DEADLOCK

 Suatu situasi dimana dua atau lebih transaksi
  masing2 menunggu (wait) suatu kunci yg ditahan
  oleh transaksi lain, untuk dilepaskan.

 2 teknik menangani deadlock
   1. deadlock prevention, DBMS mengamati transaksi
      apakah menimbulkan deadlock & tidak akan
      membiarkan deadlock terjadi

   2. Deadlock prevention and recovery, DBMS
      membiarkan terjadi deadlock, mengenalinya lalu
      menanganinya.
TRANSAKSI DEADLOCK
PENGONTROLAN RECOVERY
 Recovery basis data merupakan suatu
 proses penyimpanan kembali basis data
 pada keadaan yang benar sebelum
 terjadi kegagalan(failure).
PENYEBAB KEGAGALAN
 System crash (kerusakan sistem), akibat kesalahan
  pada perangkat keras atau lunak, menyebabkan
  kehilangan memori utama

 Media failure (kegagalan pada media), seperti media
  tidak dapat dibaca, menyebabkan kehilangan
  sebagian dari penyimpanan sekunder

 Application software error (kesalahan pada perangkat
  lunak aplikasi, seperti kesalahan logika yg
  mengakses basis data menyebab kan satu atau lebih
  transaksi mengalami kegagalan
AKIBAT YG TIMBUL KRN KESALAHAN
(lanj.)
 Natural physical disasters (bencana fisik yg natural),
  seperti kebakaran, air bah, gempa

 Carelessness (kekurangtelitian atau kerusakan pada
  data atau fasilitas yg tidak disengaja disebabkan oleh
  operator atau pengguna)

 Sabotase, kerusakan pada data, fasilitas perangkat
  lunak & keras yg disengaja
FASILITAS RECOVERY PADA
DBMS
 Mekanisme backup
  melakukan backup secara periodik terhadap basis
  data yang ada
 Fasilitas Logging
  Mencatat transaksi-transaksi dan perubahan-
  perubahan yang terjadi terhadap basis data.
  DBMS memelihara file khusus yang disebut Log
  (Journal) yang menyediakan informasi mengenai
  seluruh perubahan yang terjadi pada basis data.
 Fasilitas Checkpoint
  Mengizinkan update terhadap basis data yang
  akan menjadi basis data yang permanen
 Manager recovery
  Mengizinkan sistem untuk menyimpan kembali
  basis data ke keadaan sebelum terjadi kegagalan
TEKNIK RECOVERY
 Prosedur recovery yang digunakan tergantung dari
  kegagalan yang terjadi pada basis data. Terdapat 2
  kasus kerusakkan :
 1. Jika basis data rusak secara fisik seperti : disk
  head crash dan menghancurkan         basis     data,
  maka yang terpenting adalah               melakukan
  penyimpanan kembali backup        basis data yang
  terakhir dan      mengaplikasikan kembali operasi-
  operasi    update transaksi yang telah commit
  dengan menggunakan log file. Dengan         asumsi
  bahwa log file-nya tidak rusak.
TEKNIK RECOVERY
 2.    Jika basis data tidak rusak secara fisik tetapi menjadi
  tidak konsisten, sebagai contoh :      sistem crash sementara
  transaksi      dieksekusi, maka yang perlu dilakukan
        adalah membatalkan perubahan-perubahan yang
  menyebabkan basis data tidak           konsisten. Mengulang
  beberapa transaksi sangat diperlukan juga untuk meyakinkan
        bahwa perubahan2 yang dilakukan           telah disimpan
  di dalam secondary storage.
        Di sini tidak perlu menggunakan salinan         backup
  basis data, tetapi dapat me-restore basis data ke dalam
  keadaan yang konsisten         dengan menggunakan before- dan
  after-image yang ditangani oleh log file.
TEKNIK RECOVERY
 Teknik recovery berikut ini dilakukan
  terhadap situasi dimana basis data tidak
  rusak tetapi basis data dalam keadaan yang
  tidak konsisten.
 1. Deferred Update
  Update tidak dituliskan ke basis data sampai sebuah
  transaksi dalam keadaan commit. Jika transaksi
  gagal sebelum mencapai keadaan ini, transaksi ini
  tidak akan memodifikasi basis data dan juga tidak
  ada perubahan2 yang perlu dilakukan.
TEKNIK RECOVERY
 Penulisan dilakukan secara initial hanya
  terhadap log dan log record yang
  digunakan untuk actual update terhadap
  basis data.
  Jika sistem gagal, sistem akan menguji log
  dan menentukan transaksi mana yang perlu
  dikerja kan ulang, tetapi tidak perlu
  membatalkan semua transaksi.
TEKNIK RECOVERY
 2. Immediate Update
 Update diaplikasikan terhadap basis data
 tanpa harus menunggu transaksi dalam
 keadaan commit. Update dapat dilakukan
 terhadap basis data setiap saat setelah log
 record ditulis. Log dapat digunakan untuk
 membatalkan dan mengulang kembali
 transaksi pada saat terjadi kegagalan.
Tugas
 Buatlah tulisan mengenai fasilitas locking dan
  recovery pada salah satu software DBMS
  (Oracle, SQL Server 2000 ...., DB2 dll)

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:157
posted:5/8/2012
language:
pages:48