Senin, 22 Desember 2014

Fault Tolerant, Data Transaction dan Replication



  • Fault Tolerant
Fault Tolerant adalah feature yang memungkinkan suatu sistem tetap berjalan normal meskipun ada komponen yang rusak pada salah satu komponennya. Fault tolerant juga dipakai dalam transmisi data sehingga meskipun ada bebarapa data yang gagal diterima, pesan dapat diterima secara utuh.

Dalam storage kita mengenail RAID di mana hardisk dikonfigurasi sedemikian rupa sehingga jika ada hardisk yang rusak, maka data dapat diambil dari hardisk yang masih berfungsi normal. Fault-tolerant berhubungan dengan sistem yang mempunyai high-availability yang tinggi. System yang fault-tolerant mempunyai karakteristik
  1. Semua memiliki cadangan, jadi tidak ada komponen yang bergantung kepada satu alat saja
  2. Memiliki kemampuan memisahkan sistem yang gagal/rusak
  3. Bisa mencegah efek kerusakan supaya tidak menjalar ke komponen lain
  4. Kemampuan untuk berpindah ke komponen backup, dan kemudian kembali lagi ke komponen utama setelah sistem utama diperbaiki

  • Transaksi Data

Transaksi pada basis data adalah satu atomic operasi berupa lojik pekerjaan maupun lojik recovery yang bisa terdiri dari beberapa intruksi. Tujuan dari transaksi adalah menjaga database dari kehilangan data dan kerusakan,seperti system crash dan pengaksesan data yang sama secara bersamaan oleh dua aplikasi yang berbeda yang menimbulkan gangguan. Ada empat elemen dalam transaksi yang biasa disingkat ACID, yaitu :

  1. Atomicity,  semua berhasil atau semua gagal
  2. Consistency,  transaksi mempertahankan konsistensi database
  3. Isolation,  transaksi terisolasi satu dengan yang lain
  4. Durability,  setelah commit update harus survive di database

Dan ada dua jenis transaksi yang paling penting dalam sistem basis data adalah :
  1. Commit, memberi tanda bahwa transaksi telah selesai. Update dibuat permanen (bahkan jika setelah commit terjadi kegagalan system)
  2. Rollback, memberi tanda bahwa transaksi gagal. Semua update harus di-undo

Untuk lojik recovery atau system recovery database dilakukan ketika terjadi kegagalan media, kegagalan system atau kesalahan pada transaksi. Sistem recovery menggunakan fungsi rollback dan checkpoint. Checkpoint adalah interval tertentu pada perjalanan transaksi basis data yang menyimpan keadaan basis data saat itu. Checkpoint dapat dilakukan untuk merecovery database secara backward (undo) maupun forward (redo).

Sedangkan concurrency adalah sebuah mekanisme pada system basis data yang mengijinkan banyak transaksi pada saat bersamaan untuk mengakses data yang sama tanpa adanya gangguan. Pada umumnya terdapat 3 masalah utama pada concurrency :

  1. Lost update problem, ketika dua user mengupdate dua buah data yang sama
  2. Uncommited dependency problem, ketika user yang satu meretrieve data dan user yang lain merollback data tersebut
  3. Inconsistent analysis problem, ketika user yang satu meretrieve data dan user yang lain mengupdate data tersebut

Untuk menangani masalah tersebut, dilakukan proses locking, jika sebuah transaksi ingin record/resource tidak berubah dalam waktu tertentu maka dia meminta lock. Ada dua jenis lock yaitu 

  1. Exclusive Lock (Xlock) à write lock
  2. Shared Lock (Slock) à read lock



Jadi cara kerjanya :
  1. Jika transaksi A memegang Xlock pada sebuah record, maka permintaan lock (X,S) pada record yang sama harus diabaikan.
  2. Jika transaksi A memegang Slock pada record R maka :

o   Permintaan Xlock transaksi lain pada R ditolak
o   Permintaan Slock transaksi lain pada R diterima
Tapi, ada satu masalah yang dapat terjadi ketika melakukan proses locking ini, yaitu deadlock. Yaitu, situasi dimana dua atau lebih transaksi dalam kondisi wait-state, satu sama lain menunggu lock dilepaskan sebelum dapat memulai. Cara penanganannya adalah :

  1. Deteksi dan pecahkan deadlock
  2. Deteksi deadlock à wait-for-graph
  3. Pecahkan deadlock à salah satu dirollback paksa
  4. Ostrich Algorithm  à diabaikan
  • Replikasi

Replikasi adalah suatu teknik untuk melakukan copy dan pendistribusian data dan objek-objek database dari satu database ke database lain dan melaksanakan sinkronisasi antara database sehingga konsistensi data dapat terjamin. Dengan menggunakan teknik replikasi ini, data dapat didistribusikan ke lokasi yang berbeda melalui koneksi jaringan lokal maupun internet. Replikasi juga memungkinkan untuk mendukung kinerja aplikasi, penyebaran data fisik sesuai dengan penggunaannya, seperti pemrosesan transaksi online dan DSS (Desiscion Support System) atau pemrosessan database terdistribusi melalui beberapa server.

Keuntungan replikasi tergantung dari jenis replikasi tetapi pada umumnya replikasi mendukung ketersediaan data setiap waktu dan dimanapun diperlukan. Adapun keuntungan lainnya adalah :

  1. Memungkinkan beberapa lokasi menyimpan data yang sama. Hal ini sangat berguna pada saat lokasi-lokasi tersebut membutuhkan data yang sama atau memerlukan server yang terpisah dalam pembuatan aplikasi laporan.
  2. Aplikasi transaksi online terpisah dari aplikasi pembacaan seperti proses analisis database secara online, data smarts atau data warehouse.
  3. Memungkinkan otonomi yang besar. Pengguna dapat bekerja dengan meng-copy data pada saat tidak terkoneksi kemudian melakukan perubahan untuk dibuat database baru pada saat terkoneksi
  4. Data dapat ditampilkan seperti layaknya melihat data tersebut dengan menggunakan aplikasi berbasis Web
  5. Meningkatkan kinerja pembacaan
  6. Membawa data mendekati lokasi individu atau kelompok pengguna. Hal ini akan membantu mengurangi masalah karena modifikasi data dan pemrosesan query yang dilakukan oleh banyak pengguna karena data dapat didistribusikan melalui jaringan dan data dapat dibagi berdasarkan kebutuhan masing-masing unit atau pengguna.
  7. Penggunaan replikasi sebagai bagian dari strategi standby server.

Replikasi dapat digunakan apabila sebuah organisasi atau perusahaan didukung oleh hardware dan aplikasi sofware dalam sebuah sistem yang terdistribusi. Aplikasi yang berbeda mempunyai kebutuhan yang berbeda untuk otonomi dan konsistensi data. Replikasi diperlukan dalam sistem terdistibusi apabila berikut ini:

  1. Mengcopy dan mendistribusikan data dari satu atau lebih lokasi
  2. Mendistribusikan hasil copy data berdasarkan jadwal
  3. Mendistribusikan perubahan data ke server lain
  4. Memungkinkan beberapa pengguna di beberapa lokasi untuk melakukan perubahan dan kemudian menggabungkan data yang telah dimodifikasi
  5. Membangun aplikasi data yang menggunakan perlengkapan online maupun offline
  6. Membangun aplikasi Web sehingga pengguna dapat melihat volume data yang besar.


Sinkronisasi dan Asinkronisasi

 Sinkronisasi

         Sinkronisasi adalah Adalah satu kunci kerja dari komunikasi data. Transmiter mengirimkan pesan 1 bit pada satu saat melalui medium ke receiver. Receiver harus menandai awal dan akhir blok dari bit, juga harus diketahui durasi untuk masing-masing bit sehingga dapat sample lajur dari timing untuk membaca masing-masing bit (merupakan tugas dari timming).

Contoh : jika ada perbedaan misalkan 1 % (clock receiver 1% lebih lambat atau lebih cepat daripada clock transmitter), maka pada pensamplingan pertama akan meleset dari tengah bit dan setelah jumlah waktu tertentu, akan mengalami error.
Sinkronisasi di bagi menjadi 2, yaitu :

 1. Asynchronous

          Untuk mencegah problem timming dengan tidak mengirim aliran bit panjang yang tidak putus putusnya. Bit-bit dikirim per-karakter pada setiap waktu yang mana masing-masing karakter mempunyai panjang 5-8 bit. Timing atau synchronisasi harus dipertahankan antara tiap karakter; receiver mempunyai kesempatan untuk men-synchron-kan awal dari tiap karakter baru.

                                                Keterangan gambar 4.1 :
  • Idle (biasanya =‟1‟) jika tidak ada karakter yang ditransmisikan dan start bit = “0”, sedangkan jumlah karakter yang ditransmisikan antara 5-8 bit.
  • Bit paritas digunakan untuk mendeteksi error, diatur oleh pengirim agar jumlah total „1‟ termasuk bit paritas adalah genap, dan stop bit = „1‟, yang panjangnya 1; 1,5; 2 kali durasi bit pada umumnya.                                                                                     
  •  Komunikasi asinkron adalah sederhana dan murah, tetapi memerlukan overhead dari 2 ke 3 bit per karakter, prosentasi overhead dapat dikurangi dengan mengirimkan blok-blok bit besar antara bit start dan bit stop.
 2. Synchronous / timing

 Lebih efisien, karena blok-blok karakter / bit-bit ditransmisikan tanpa kode start dan stop, tetapi tiap blok blok dimulai dengan suatu pola preamble bit dan diakhiri dengan pola postamble bit. Pola-pola ini adalah kontrol informasi.Waktu kedatangan dan keberangkatan untuk masing-masing bit dapat diramalkan. Frame adalah data plus kontrol informasi. Format framenya tergantung dari metode transmisi, yaitu:


1. Transmisi orientasi karakter
Blok-blok data dikerjakan sebagai barisan karakter (biasanya 8 bit karakter), frame dimulai dengan 1 atau lebih karakter sinkronisasi. Karakter sinkronisasi biasanya disebut dengan “SYN” yang merupakan bit pattern unik sinyal yang diterima penerima permulaan dari blok.
 Penerima kemudian merubah blok-blok data yang datang oleh karakter SYN dan menerima data sampai karakter postamble (informasi yang terletak pada bagian belakang blok data yang dikirimkan) terlihat dan begitu seterusnya.


2. Transmisi bit.

  •  Blok-blok data dikerjakan sebagai barisan bit-bit, tidak ada data maupun informasi kontrol diperlukan untuk menginter-prestasikan dalam satuan karakter 8 bit
Perbandingan asinkron dan sinkron

  •  Untuk blok-blok data yang cukup besar, transmisi sinkronisasi jauh lebih efisien daripada asinkron. Transmisi asinkron memerlukan overhead 20 % atau lebih.
  •  Bila menggunakan transmisi sinkron biasanya lebih kecil dari 1000 bit, yang mengandung 48 bit kontrol informasi (termasuk flag), maka untuk pesan 1000 bit, overheadnya adalah 48 / 1048 X 100% = 4.6%

Urutan pengerjaan sinkronisasi yaitu :

  •     Sinkronisasi bit: Ditandai awal & akhir untuk masing-masing bit
  •     Sinkronisasi karakter / kata: Ditandai awal dan akhir untuk masing-masing karakter / satuan kecil lainnya dari data
  •     Sinkronisasi blok / pesan :Ditandai awal dan akhir dari satuan besar data. Dan untuk pesan yang besar, dibagi-bagi menjadi beberapa blok kemudian baru dikirimkan pengurutan blok-blok yang telah dibagi tersebut adalah tugas dari timming. Sedangkan pengaturan level sinyal adalah tugas dari sintax dan untuk melihat arti dari pesan adalah tugas dari semantik.