Back to IF3140 Sistem Basis Data

Fondasi Recovery: Klasifikasi Kegagalan & Struktur Penyimpanan

Questions/Cues

  • Apa tujuan utama Recovery System?

  • Apa saja 3 jenis kegagalan (failure)?

  • Apa perbedaan Transaction vs System vs Disk Failure?

  • Apa 3 level hirarki penyimpanan?

  • Apa itu Volatile vs Nonvolatile?

  • Apa itu Stable Storage?

  • Bagaimana cara mengaproksimasi Stable Storage?

  • Bagaimana alur akses data (Disk vs Buffer)?

  • Mengapa buffer jadi inti masalah recovery?

Reference Points

  • Slides “12 - Recovery System - 1.pdf” (Slide 5-11)

Apa itu Recovery System?

Recovery System adalah sebuah mekanisme dalam DBMS (Database Management System) yang bertugas untuk memastikan database kembali ke state (kondisi) terakhir yang konsisten setelah terjadinya kegagalan.

Tujuan utamanya adalah untuk menjamin dua properti ACID:

  1. Atomicity: Transaksi harus dieksekusi secara utuh (semua operasinya) atau tidak sama sekali. Jika transaksi gagal di tengah jalan, efeknya harus dibatalkan total (seperti tidak pernah terjadi).

  2. Durability: Jika sebuah transaksi telah berhasil di-commit (diselesaikan), perubahannya harus bersifat permanen dan tidak boleh hilang, bahkan jika terjadi kegagalan sistem setelahnya.

Algoritma recovery memiliki dua bagian:

  • Tindakan selama operasi normal: Mencatat informasi yang cukup (misalnya dalam sebuah log) untuk memungkinkan pemulihan nanti.

  • Tindakan setelah kegagalan: Menggunakan informasi yang dicatat tadi untuk mengembalikan database ke state yang konsisten.

Tiga Jenis Klasifikasi Kegagalan

Kegagalan yang dapat terjadi pada sistem database dikategorikan menjadi tiga:

  1. Transaction Failure (Kegagalan Transaksi)

    • Transaksi gagal menyelesaikan eksekusinya.
    • Logical Errors: Kesalahan internal dalam logika transaksi. Contoh: data yang dicari tidak ditemukan, pembagian dengan nol, input tidak valid.
    • System Errors: Sistem database menghentikan transaksi secara eksternal. Contoh: sistem mendeteksi deadlock dan memilih satu transaksi untuk “dikorbankan” (di-abort).
  2. System Crash (Kegagalan Sistem)

    • Perangkat keras (CPU, RAM) atau perangkat lunak (OS, bug di DBMS) mengalami kegagalan, menyebabkan sistem berhenti beroperasi.

    • Asumsi “Fail-Stop”: Kita mengasumsikan bahwa isi dari non-volatile storage (disk) aman dan tidak korup akibat crash ini.

    • Konsekuensi: Isi dari volatile storage (main memory/RAM) hilang seluruhnya.

  3. Disk Failure (Kegagalan Disk)

    • Kerusakan pada media penyimpanan disk (misal: head crash, kerusakan permukaan).

    • Menyebabkan sebagian atau seluruh isi disk hilang atau korup.

    • Asumsi “Detectable”: Kita mengasumsikan kegagalan ini dapat dideteksi. Sistem modern menggunakan checksums untuk memverifikasi integritas data saat dibaca.

Hirarki Struktur Penyimpanan

Untuk memahami recovery, kita harus paham di mana data disimpan. Ada tiga level penyimpanan berdasarkan kecepatan dan ketahanannya:

  1. Volatile Storage (Penyimpanan Volatil)

    • Data akan hilang jika terjadi kegagalan sistem (misal: listrik mati).

    • Sangat cepat (biasanya diakses dalam nanodetik).

    • Contoh: Main Memory (RAM), Cache CPU.

  2. Nonvolatile Storage (Penyimpanan Non-Volatil)

    • Data akan bertahan (survive) meskipun terjadi kegagalan sistem.

    • Lebih lambat daripada volatile storage (diakses dalam milidetik atau mikrodetik).

    • Contoh: Hard Disk Drive (HDD), Solid-State Drive (SSD), Flash memory.

    • Penting: Meskipun datanya bertahan dari system crash, media ini sendiri bisa gagal (menjadi disk failure).

  3. Stable Storage (Penyimpanan Stabil)

    • Ini adalah bentuk penyimpanan teoritis atau “mitos” yang diasumsikan tidak akan pernah gagal atau kehilangan data dalam kondisi apa pun.

    • Di dunia nyata, tidak ada penyimpanan yang 100% stabil.

    • Kita hanya bisa mengaproksimasi (mendekati) stable storage, biasanya dengan redundansi.

Aproksimasi Stable Storage

Karena stable storage ideal tidak ada, kita membuatnya dengan cara menyimpan beberapa salinan (copies) data di media nonvolatile yang terpisah secara fisik.

  • Implementasi: Menyimpan data yang sama di beberapa disk yang berbeda (bahkan bisa di lokasi geografis yang berbeda untuk disaster recovery).

  • Tantangan: Proses penulisan ke disk itu sendiri bisa gagal (berhasil, gagal sebagian, atau gagal total).

  • Prosedur Tulis yang Aman:

    1. Tulis informasi ke blok fisik pertama.

    2. Setelah dipastikan berhasil, tulis informasi yang sama ke blok fisik kedua.

    3. Operasi penulisan (output) baru dianggap selesai (sukses) setelah penulisan kedua berhasil.

  • Recovery: Jika saat pengecekan ditemukan salah satu copy rusak (via checksum), data bisa dipulihkan dari copy yang masih bagus.

Alur Akses Data (Disk vs Buffer)

Ini adalah konsep kunci mengapa recovery sangat penting. Modifikasi data tidak langsung terjadi di disk.

  1. Disk (Physical Blocks): Tempat data disimpan secara permanen (nonvolatile).

  2. Memory (Buffer): Area di RAM (volatile) yang berfungsi sebagai “meja kerja” atau cache. Blok data dari disk disalin ke sini sebelum bisa dibaca atau dimodifikasi.

  3. Working Area (Per Transaksi): Area kecil di RAM untuk menyimpan data yang sedang diolah oleh satu transaksi.

Alur Proses:

  1. Transaksi ingin membaca data X (Read(X)).

  2. Sistem mengecek apakah blok X ada di Buffer (memory).

  3. Jika tidak ada, sistem melakukan Input(X): Menyalin blok X dari Disk ke Buffer.

  4. Data X disalin dari Buffer ke Working Area transaksi.

  5. Transaksi memodifikasi X di Working Area-nya, lalu menuliskannya kembali ke X di Buffer (Write(X)).

Masalah Inti Recovery:

  • Pada titik ini, data X yang baru sudah ada di Buffer (di RAM/volatile), tapi BELUM tentu ada di Disk (nonvolatile).

  • Jika terjadi System Crash sekarang, semua perubahan pada X yang ada di Buffer akan HILANG. Ini melanggar prinsip Durability.

  • Di sisi lain, output (penulisan dari buffer ke disk) bisa terjadi kapan saja. Jika Output(X) terjadi sebelum transaksi commit, dan transaksi itu kemudian gagal (abort), maka data X yang “kotor” sudah terlanjur ada di disk. Ini melanggar prinsip Atomicity.

Summary

Sistem recovery database dirancang untuk menjamin Atomicity dan Durability dalam menghadapi berbagai jenis kegagalan (transaksi, sistem, atau disk). Fondasinya terletak pada pengelolaan hirarki penyimpanan—mulai dari volatile storage (RAM) yang cepat tapi rentan, nonvolatile storage (Disk) yang bertahan dari crash, hingga konsep ideal stable storage (yang diaproksimasi dengan redundansi). Masalah utama recovery muncul karena modifikasi data terjadi di buffer (volatile) dan mungkin belum ditulis ke disk (nonvolatile) saat kegagalan terjadi, sehingga memerlukan mekanisme untuk memulihkan data ke state yang konsisten.