Rabu, 25 November 2015

Transaksi dan Concurrency

Transaksi

     Transaksi dalam basis data adalah program atau bagian yang didalam pelaksanaanya akan mengakses atau mengubah data yang berada pada database. Tujuan dari transaksi adalah melindungi data dari kehilangan atau kerusakan.

     Transaksi yang berlangsung hanya mengenal dua hasil, yaitu berhasil secara keseluruhan atau gagal secara keseluruhan.

     Terdapat dua operasi penting dalam transaksi yaitu commit dan rollback. Commit menandakan bahwa transaksi sudah berhasil dan akan dimasukkan kedalam database. Rollback menandakan bahwa transaksi gagal dan data tidak akan dimasukkan kedalam database.

Transaksi memiliki 4 elemen :
           1.      Atomicity
           Transaksi harus berhasil secara keseluruhan atau transaksi digagalkan
           2.      Consistency
           Transaksi yang dilakukan mempertahankan konsistensi dari database
           3.      Isolation
           Transaksi terisolasi antara satu transaksi dan transaksi lainnya
           4.      Durability
           Transaksi yang sudah berhasil tidak boleh dikembalikan ke data awal kecuali terdapat update              dari sistem

Dalam sebuah sistem database. Transaksi yang dilakukan bisa lebih dari dua transaksi secara bersamaan. Dengan banyaknya transaksi yang dilakukan secara bersamaan timbul beberapa masalah. Masalah-masalah tersebut dapat diatasi dengan concurreny.


Concurrency

     Concurreny adalah proses pengaturan transaksi-transaksi yang dilakukan secara bersamaan dan tidak saling mengganggu sehingga menghasilkan data yang konsisten. Terdapat beberapa masalah yang berkaitan dengan concurrency yaitu:

        1.      Lost Update
        Masalah lost update terjadi apabila terdapat dua atau lebih transaksi yang sedang melakukan update sebuah data secara bersamaan. Ketika transaksi pertama selesai melakukan update lalu transaksi kedua melakukan update, yang menyebabkan update transaksi pertama menjadi tidak terbaca hanya update transaksi kedua. Hal tersebut biasa disebut dengan lost update

         2.      Uncommited Dependency (Dirty Read)
         Apabila terdapat transaksi yang mengubah nilai sebuah data, lalu transaksi tersebut merollback kembali perubahan data yang dilakukan. Disisi lain terdapat transaksi yang sudah mengambil data yang telah berubah. Hal ini biasa disebut dengan dirty read.

         3.      Inconsistent Analysis
         Apabila terdapat dua atau lebih transaksi yang mengakses beberapa data, ketika sebuah transaksi menggunakan sebuah data lalu data yang digunakan dirubah oleh transaksi lain, sedangkan transaksi yang sudah digunakan masih membaca data sebelum data dirubah.

     Untuk mengatasi masalah diatas muncullah yang dikenal dengan locking. Locking ditujukan apabila ingin data tidak bisa dirubah dalam waktu tertentu .Locking terdiri dari dua buah lock.

     ·         Exclusive Lock(XLOCK)
      XLOCK digunakan untuk mengunci data agar hanya bisa diubah oleh yang sedang memiliki XLOCK tersebut.

      ·         Shared Lock(SLOCK)
        SLOCK digunakan untuk mengambil data namun yang bisa mengambil data hanya yang sedang memiliki SLOCK tersebut.


     Terdapat permasalahan lain yang ditimbulkan dari locking sendiri yaitu deadlock. Deadlock yaitu suatu keadaan dimana dua atau lebih transaksi menunggu lock yang sedang dipegang oleh masing-masing transaksi. Sehingga proses akan terus menunggu hingga terdapat transaksi yang dirollback.



Referensi

Tidak ada komentar:

Posting Komentar