Metode Lock-Record Pada DBMS Berbasis Web

Documentasi ini ditulis sebagai penyelesain Tugas III Mata Kuliah Pemrograman Jaringan dari Bapak Jack yaitu: Membangun sebuah aplikasi jaringan dengan issue utama adalah Lock-Record data. Dimana mengimplementasikan metode Lock-Record dan memberikan informasi ke user lain yang akan memakai (editing) jika suatu record sedang di Lock oleh user.

Dalam Tugas III ini difokuskan untuk mengeksplor sebuah database yang di gunakan oleh beberapa sistem informasi baik itu web maupun desktop. Hal-hal yang perlu diperhatikan di tugas 3 ini adalah

  1. Pemakaian data bersama, meliputi pengolahan data secara bersama-sama, bagaimana mengatur SOP (standart operasional prosedur) yang harus diterapkan baik dari sisi user maupun sisi aplikasi ataupun dbms.
  2. Pengelolaan Data Konflik, mengatasi jika terjadi sebuah transaksi secara bersamaan pada objek yang sama pula.
  3. Penggunaan Share, Exclusive, read only maupun kedua-nya. Untuk berbagai aplikasi dan bagaimana modifikasinya

Lock-Record pada DBMS berbasis Web

Sebelumnya kita mesti memahami Lock pd DBMS, Istilah Lock pada database berarti suatu kunci atau penguncian. Lock digunakan pada saat terjadi pengaksesan database oleh user secara bersamaan. Hal ini ditujukan untuk menjaga data agar tidak corrupt/hilang atau data yang tidak valid pada saat banyak user mengakses database secara bersamaan/konkuren. Sebelum database mengijinkan suatu sesi user untuk memodifikasi data, pertama-tama sesi me-lock data yang akan dimodifikasi Lock memberikan exclusive control terhadap suatu data pada sebuah sesi sehingga tidak akan ada transaksi lain yang dapat memodifikasi data yang ter-lock sampai lock terhadap data tersebut telah di lepas. Transaksi dapat melakukan lock : Pada sebuah row data dari suatu tabel, dan Pada multiple row data dari suatu tabel, atau Pada satu tabel itu sendiri yang di lock.

Menurut sifatnya locking pada DBMS dapat dibagi menjadi dua yaitu Jenis Locking Exclusive vs Shared Lock (lock type) :

  • Exclusive lock : jika suatu table sedang berada dalam kondisi ini maka hanya proses yang melakukan penguncian yang dapat mengakses table tersebut.
  • Shared lock : jika suatu table sedang berada dalam kondisi ini maka table tersebut dapat melaksanakan perintah SELECT dari proses lain tetapi datanya tidak dapat dirubah dengan menggunakan perintah UPDATE, INSERT, ataupun DELETE baik dari proses yang menguncinya apalagi dari proses lainnya.

Syarat Penerapan Locking :

  • Jika user ingin mengupdate (baca+tulis) tabel, ia harus melakukan write lock pada tabel tsb.
  • Jika user hanya ingin membaca tabel, ia harus melakukan read lock pada tabel tsb.
  • User harus melepas semua lock ketika semua transaksi telah selesai.

jenis operasi menentukan sifat locking pada table.

  • WRITE berarti bahwa locking akan bersifat exclusive
  • READ berarti locking bersifat shared.

Locking tabel pd aplikasi web

Lock pada aplikasi web yang mksud disini ilustrasi/skenarionya di dpt kayak ini :

  1. User A mengambil data X (value X saat ini adalah X=5)
  2. User B mengambil data X (value X saat ini adalah X=5)
  3. User A mengupdate X=X+1 (update X=6 where X=5) --> X berhasil di update shg sekarang X=6
  4. User B mengupdate X=X+1 (update X=6 where X=5) --> record yg diupdate tdk dapat terpenuhi dan di beritahu kepada user B bahwa "Record is edited by another user"), dihasilkan pada Halaman HTML form inputnya tersembunyi dan si User B bisa men SELECT meskipun si User A belum selesai tapi si User B tetap tidak bisa men INSERT, UPDATE, DELETE sebelum transaksi si User A Selesai (User B ReadOnly).

Pada aplikasi yang telah dibuat berbasis Web PHP & MYSQL. Dan pada aplikasi tersebut terdapat admin dan user atau bisa saja ada 10 user atau 100 user yang mengakses Web secara bersaman, aplikasi tersebut mengakses tabel yang sama secara bersaman, maka akan mungkin terjadi kesalahan data ( misalkan saja kesalahan tentang stok mobil, pada kasus ini aplikasi pertama sedang melakukan proses penambahan stok pada tabel_stok_mobil tiba-tiba aplikasi kedua melakukan penghitungan stok_mobil pada tabel_stok_mobil ketika proses penambahan stok belum selesai). Kejadian ini dapat dihindari dengan menerapkan LOCK TABLES. LOCK TABLES melakukan penguncian tabel [LOCK TABLES] ketika proses sedang berlangsung, kemudian akan membebaskan table [UNLOCK TABLES] ketika proses telah berakhir.

Berikut capture Homepagenya dari sisi admin dan user yang menggunakan 2(dua) browser yang berbeda (Firefox dan Google Chrome) yang melakukan koneksi secara bersamaan ke suatu database:

Tampilan diatas dari sesi User menampilkan pesan "Record is edited by another user", sedang terjadi transaksi yang lain yang mencoba untuk meng update data pada tabel yang sudah di Lock (tabel CarsModel) dan harus menunggu pada antrian sampai transaksi yang mempunyai Lock pada tabel tersebut telah selesai.

Tampilan di atas dari sesi Administrator dalam keadan Lock dengan menampilkan pesan ("Record is edited by another user" dengan durasi waktu maksimal, Unblock Record dan Edit Record). hal tersebut Memungkinkan administrator untuk men-terminasi sesi user pertama yang sedang memegang Lock dengan cara meng-klik Unblock Record atau Edit Record : Session(sesi) di terminate / di stop dan semua transaksi yang sedang terjadi pada sesi user pertama akan di rollback. User yang sesinya di terminate harus mereload ulang halaman dan login terlebih dahulu lagi untuk melakukan transaksi yang telah di terminate dengan data yang baru.

sedangkan durasi waktu maksimal keadaan seperti ini khusus karena apabila Misalnya: User (penguna pertama) membuka halaman dan pergi berlibur dengan keadaan browser tetap terbuka dan ketika User lain(penguna kedua,dst) membuka halaman yang sama dan halaman tersebut masih tetap terkunci untuk waktu yang lama dan masalah ini dapat diatur dengan menentukan durasi waktu maksimal Lock. durasi waktu maksimal di sertakan pada skrip edit record lock pada halaman edit.php

setInterval("ConfirmLock(...)",10000);
("window.timeid".$id."=setInterval("ConfirmBlock('edit.php','".."')",".($block->;ConfirmTime*1000).");");

respon AJAX akan mengirimkan permintaan untuk mengkonfirmasi dan menperbarui durasi waktu maksimal berdasarkan waktu sistem pengguna dan setelah periode waktu yang di tentukan berakhir halaman Session(sesi) user yang tadi pergi berlibur secara otomatis akan dinonaktifkan atau dilogout.

Tampilan diatas yaitu Session(sesi) user yang secara otomatis telah telah di logout dengan periode waktu yang di tentukan.

Tampilan di atas adalah tampilan untuk Log transaksi, dimana Log transaksi ditampung kedalam sebuah tabel tersendiri, yang terdiri dari Record log untuk data berupa operasi yang dilakukan atau data sebelum dan sesudah terjadi perubahan. Beberapa operasi yang dicatat di dalam log transaksi berupa Awal dan akhir transaksi (Sesion User) dan DateTime, alamat host/ipaddres dari setiap sesi User serta keterangan perubahan data (INSERT, UPDATE, dan DELETE).

References:

Facebook Comments

1 Comment

Post a Comment

Your email address will not be published. Required fields are marked *

© Franz East 2009 - 2018. | Powered by Coffee + Cigarete & Site Hosted By IDwebhost.