Dasar-Dasar Database
(tontinton.com)Dasar-Dasar bashdb
bashdb, program database paling sederhana, terdiri dari dua fungsi bash.- Fungsi
db_setmenambahkan data ke file, dan fungsidb_getmencari data. - Masalah pada
bashdbmencakup durabilitas, atomisitas, isolasi, dan performa.
Meningkatkan bashdb menjadi ACID
- ACID adalah sifat transaksi database yang berarti atomisitas, konsistensi, isolasi, dan durabilitas.
- Untuk meningkatkan durabilitas
bashdb, perintahsyncditambahkan kedb_set. - Untuk isolasi, penguncian file ditambahkan menggunakan program
flock.
Durabilitas
fsyncdanfdatasyncadalah system call yang mem-flush buffer tulis ke disk.- Perintah
syncmem-flush semua halaman 'dirty' ke disk, dan flag-dmemanggilfdatasync.
Isolasi
flockdigunakan untuk menyediakan isolasi multi-proses padabashdb.flockadalah program Linux untuk penguncian file, dan flag-sdigunakan untuk mengizinkan pembacaan simultan.
Kabar buruk
- Tidak ditemukan cara sederhana untuk menjamin atomisitas dengan
bashdb. - Untuk meningkatkan performa, algoritma
O(n)perlu diperbaiki.
Storage engine
- Tujuan storage engine adalah menyediakan abstraksi untuk membaca dan menulis data ke penyimpanan persisten.
- Desain storage engine bertujuan meminimalkan disk I/O dan disk seek.
B-tree yang dapat diubah
- B-tree adalah varian BST dengan locality spasial yang meminimalkan disk I/O dan seek.
- B-tree adalah BST yang digeneralisasi agar node dapat memiliki lebih banyak child.
LSM tree immutable
- LSM tree adalah struktur data immutable yang ditulis secara sekuensial dan menguntungkan untuk workload yang berfokus pada penulisan.
- LSM tree mem-buffer data di memori, lalu saat mencapai kapasitas tertentu, data di-flush menjadi SSTable terurut.
Bloom filter
- Bloom filter adalah struktur data probabilistik yang dapat memeriksa secara efisien apakah suatu item tidak ada di dalam himpunan.
- Bloom filter bekerja menggunakan fungsi hash, dan memiliki kompleksitas ruang
O(log n).
Write Ahead Log
- WAL adalah file khusus yang mencatat semua operasi transaksi dan merekonstruksi status saat proses database dimulai.
Isolasi
- Untuk mencapai isolasi, dapat digunakan pessimistic locking, optimistic locking, atau MVCC.
- ANSI/ISO standard SQL 92 mendefinisikan berbagai tingkat isolasi pembacaan.
Sistem terdistribusi
- Sistem terdistribusi menambah kompleksitas, dan data dapat didistribusikan ke beberapa mesin demi ketersediaan dan scale-out horizontal.
- Menurut teori CAP, sistem hanya dapat menjamin dua dari tiga hal: konsistensi, ketersediaan, dan toleransi partisi.
Consistent hashing
- Consistent hashing adalah metode partisi data yang mengurangi jumlah item yang harus dimigrasikan saat node ditambahkan atau dihapus.
Pendapat GN⁺:
- Memahami masalah dasar database dan sifat ACID adalah inti dari rekayasa database.
- Contoh
bashdbmembantu memahami masalah yang muncul pada sistem database nyata. - Desain storage engine dan sistem terdistribusi adalah faktor penting yang menentukan performa dan keandalan database.
1 komentar
Komentar Hacker News
Ringkasan komentar pertama:
Ringkasan komentar kedua:
Ringkasan komentar ketiga:
Ringkasan komentar keempat:
Ringkasan komentar kelima:
Ringkasan komentar keenam:
Ringkasan komentar ketujuh:
sync; mv; sync.Ringkasan komentar kedelapan:
Ringkasan komentar kesembilan:
Ringkasan komentar kesepuluh: