Basisdata Terdistributsi (Distributed Databases) –Sinkronisasi –Pemrosesan Query Terdistribusi 1
Basisdata Terdistribusi Sinkronisasi •Dalam hubungannya dengan pengaksesan terhadap data (query) sebuah sistem basisdata terdistribusi harus nampak seperti layaknya sistem basisdata terpusat. – Pengguna dapat melakukan query terhadap data tanpa perlu memikirkan tentang bagaimana dan di mana suatu data (relasi) tersebut disimpan •Dalam hubungannya dengan penulisan (perubahan) terhadap data oleh suatu transaksi, maka sistem terdistribusi ini harus menjamin transaksi tetap berjalan sebagai serangkaian aksi-aksi atomik tanpa memperhatikan bahwa data telah difragmentasi dan direplikasi. •Dalam kaitannya dengan replikasi data terhadap strategi update yang dilakukan terdapat dua pendekatan: – Synchronous Replication – Asynchronous Replication
2
Basisdata Terdistribusi Sinkronisasi (lanjt) •Synchronous Replication – Semua copy relasi yang diubah (fragment) harus diupdate sebelum transaksi yang melakukan perubahan tersebut commit. – Distribusi data dibuat transparan terhadap user (user tidak tahu bagaimana data telah didistribusikan) • Asynchronous Replication – Beberapa copy dari relasi yang dimodifikasi hanya diupdate secara periodik; Beberapa copy mungkin tidak sinkron (sama) satu sama lain untuk beberapa waktu – User harus sadar mengenai distribusi data (data mana yang paling up-to-date, sehingga pendekatan ini tidak transparan) • Transaksi yang membaca copy yang berbeda untuk relasi yang sama akan melihat nilai yang berbedabeda. – Produk-produk DBMS yang sekarang ada mengikuti pendekatan ini 3
Basisdata Terdistribusi Synchronous Replication • Untuk menjamin transaksi-transaksi melihat nilai yang sama tanpa memperdulikan copy data mana yang diakses dilakukan dengan dua pendekatan. – Voting – Read-any Write-all • Voting – Sebuah transaksi harus menulis terhadap mayoritas copy (setengah plus satu) untuk mengubah suatu objek (data) dan membaca beberapa copy (secukupnya) untuk menjamin bahwa sedikitnya salah satu copy yang paling kini ikut terbaca. • Misal: terdapat 10 replika (copy); 7 copy ditulisi pada saat melakukan update, maka sedikitnya 4 copy harus dibaca pada saat melakukan pembacaan terhadap data • Masing-masing copy mempunyai nomor versi, copy dengan nomor versi paling tinggi merupakan copy yang paling kini – Pendekatan seperti ini kurang diminati karena untuk membaca sebuah objek harus membaca beberapa copy objek tersebut. Padahal operasi baca lebih sering dilakukan daripada operasi update (menulis), sehingga performansi yang efisien terhadap operasi baca sangat penting. • Read-any Write-all: – Untuk mebaca sebuah objek, maka suatu transaksi hanya membaca satu buah copy, tetapi pada saat operasi perubahan data (menulis) maka harus menulis di semua copy. – Sehingga operasi baca lebih cepat dan operasi penulisan lebih lambat 4 daripada dengan voting – Pendekatan yang paling umum dilakukan untuk synchronous replication.
Basisdata Terdistribusi Cost Synchronous Replication • Sebelum suatu operasi (transaksi) update dapat commit, maka dia harus memperoleh lock terhadap semua copy yang akan (harus) diubah. – Mengirim permintaan lock ke remote site, dan sementara menunggu jawaban, juga menunggu lock lainnya – Jika suatu site atau link fail, maka transaksi tidak bisa commit. – Bahkan jika tidak ada failure, commit harus dilakukan dengan commit protocol yang mahal (karena banyak sekali pertukaran pesan) • Dengan memperhatikan hal-hal di atas maka pendekatan yang banyak digunakan adalah asynchronous replication 5
Basisdata Terdistribusi Asynchronous Replication • Memungkinkan transaksi commit sebelum semua copy data berubah (meskipun user hanya melihat satu copy) – Para pengguna harus tahu copy mana yang sedang mereka baca, dan kemungkinan copy tersebut tidak sinkron (up-to-date) untuk beberapa waktu. • Dilakukan dengan dua pendekatan: – Primary Site – Peer-to-Peer replication. • Perbedaan masing-masing pendekatan ini terletak dalam berapa banyak copy yang “bisa diupdate” atau “master copies” 6
Basisdata Terdistribusi Peer-to-Peer Replication • Terdapat lebih dari satu copy yang merupakan master copy (bisa diupdate) untuk semua copy data yang tersedia • Perubahan terhadap master copy harus disebarkan terhadap copy yang lainnya • Jika dua master copy berubah dan menyebabkan conflict, hal ini harus dipecahkan. (Misal., Site 1: umur joe berubah menjadi 35, site 2: umur Joe berubah menjadi 36) Harus dipilih mana yang dianggap benar! •Untuk mencegah terjadinya conflict dilakukan dengan cara berikut ini: – Masing-masing master site memiliki hak untuk mengubah fragment yang disjoint satu sama lain – Hak untuk melakukan update dimiliki oleh satu buah master pada satu waktu 7
Basisdata Terdistribusi Primary Site Replication • Terdapat tepat satu copy relasi yang dirancang sebagai primary atau master copy. Replica di site yang lain tidak bisa langsung di-update. – Primary copy di-publish – Site yang lain hanya mengikuti fragmen-fragmen relasi yang ada di primary copy; mereka disebut sebagai secondary copy • Permasalahan utama: Bagaimana perubahanperubahan terhadap primary copy disampaikan kepada secondary copy? • Dilakukan dalam dua tahap. Pertama, menangkap (capture) perubahan-perubahan yang dilakukan oleh transaksi yang sudah commit, kumudian meneruskan perubahan ini (apply) terhadap semua secondary copy
8
Basisdata Terdistribusi Implementasi Tahap Capture •Dilakukan dengan dua pendekatan: – Log-based capture – Procedural capture
•Log-Based Capture – Terdapat sebuah log (disimpan untuk melakukan recovery) yang digunakan untuk membangkitkan sebuah Change Data Table (CDT). – Pada saat log tail dituliskan ke stable storage, semua log record yang terdapat di dalamnya juga dituliskan ke CDT. – Jika transaksi yang membangkitkan log record abort, maka semua log record yang dituliskan ke CDT untuk transaksi tersebut harus dihapus
• Procedural Capture – Terdapat sebuah prosedur yang secara otomatis dipanggil (e.g. trigger) yang melakukan capture; Secara khusus trigger ini hanya mengambil snapshot (copy relasi pada satu waktu tertentu)
•Log-Based Capture lebih baik (lebih murah, lebih cepat) tapi sangat tergantung terhadap pemahaman struktur log secara detail (vendor specific)
9
Basisdata Terdistribusi
Implementasi Tahap Apply • Proses apply di secondary site secara periodik memperoleh perubahan-perubahan (snapshot) terhadap tabel CDT dari primary site, dan mengupdate copy di tempatnya. – Interval (periode) perolehan perubahanperubahan terhadap tabel CDT dari primary site ini dapat merupakan timer-based atau didifenisikan oleh user/aplikasi. • Kombinasi Capture dan Apply yang disarankan: – Log-Based Capture plus continuous Apply, meminimalkan waktu tunda dalam meneruskan perubahan-perubahan – Procedural Capture plus application-driven Apply, merupakan cara yang paling fleksibel untuk memroses perubahan-perubahan
10