Apa sebenarnya itu mesin basis data?

14

Saya telah melewati definisi pada http://en.wikipedia.org/wiki/Database_engine beberapa kali:

Mesin basis data (atau "mesin penyimpanan") adalah komponen perangkat lunak dasar yang digunakan sistem manajemen basis data (DBMS) untuk membuat, membaca, memperbarui, dan menghapus data (CRUD) dari basis data.

Apa yang saya tidak mengerti adalah apa yang tersisa untuk dilakukan, bukankah CRUD melakukan semua yang dilakukan oleh database?

Jika mesin database melakukan fungsi-fungsi ini, apa yang dilakukan oleh sisa dari database?

Lazer
sumber
Untuk jawaban langsung atas pertanyaan yang diajukan dalam huruf tebal ( apa yang dilakukan oleh seluruh database? ), Lihat jawaban Bryan. Untuk kejelasan lebih lanjut tentang apa yang dilakukan oleh mesin basis data, selain CRUD, lihat jawaban Leigh.
nealmcb

Jawaban:

15

CRUD dimaksudkan untuk mendefinisikan karakteristik yang diperlukan untuk database karena berkaitan dengan penyimpanan persisten. Ini tidak dimaksudkan untuk menggambarkan semua yang bisa dilakukan oleh mesin database.

Untuk membuat perbandingan, pada dasarnya sebuah kendaraan adalah alat yang digunakan untuk transportasi. Meskipun benar, definisi ini tentu saja tidak mencakup semua detail yang diperlukan dalam mobil modern.

Mesin basis data dapat menangani banyak pengguna, transaksi , MVCC (Multiversion Concurrency Control) , buffer dan cache, ACID (atomicity, konsistensi, isolasi, daya tahan) , serta tingkat isolasi yang berbeda . Pembacaan dapat menarik data dari memori, database jauh, dan beberapa tabel pada disk memprosesnya menggunakan SQL melalui beberapa jalur kode eksplisit dan / atau implisit untuk menyajikannya ke aplikasi yang meminta. Buat dapat mengalokasikan penyimpanan, struktur penyediaan, menetapkan nilai, dan melakukan pemrosesan sendiri sebelum menyimpan data. Dll

Leigh Riffel
sumber
Ini adalah jawaban yang sangat ringkas, namun lengkap. +1 !!!
RolandoMySQLDBA
BTW Analogi yang bagus tentang kendaraan versus jenis kendaraan tertentu.
RolandoMySQLDBA
Menurut pendapat saya, Transaksi, jaminan ACID, tingkat isolasi, kontrol Concurrency, buffer, cache semuanya ditangani oleh Mesin Database itu sendiri. Kenapa saya bilang begitu? ... Lihatlah linux.org/threads/an-introduction-to-mysql-storage-engines.4220
Shatu
@Leigh, Bukankah concurrency (kekurangan) fitur mesin penyimpanan dan bukan dari DBMS? Jika ini merupakan fitur dari DBMS, lalu mengapa MariaDB / MySQL tidak dapat melakukan transaksi untuk mesin penyimpanan tertentu seperti MyISAM?
Pacerier
@Pacerier - Ini mungkin benar untuk sistem yang membuat pemisahan antara DBMS dan mesin penyimpanan, bagi yang lain perbedaannya tidak ada artinya.
Leigh Riffel
12

Beberapa database dapat menjalankan banyak mesin, tergantung pada yang paling cocok untuk pekerjaan itu. Sebagai contoh, banyak aplikasi saya menggunakan InnoDB untuk sebagian besar data (batasan kunci dan penguncian tingkat baris), MyISAM untuk data sesi (cepat, kurang pemrosesan) dan ArchiveDB untuk jejak audit (dikompresi dan masukkan / pilih saja, tidak ada pembaruan / hapus).

"Istirahat" dari perangkat lunak database menyediakan antarmuka umum untuk digunakan melalui API atau terminal, memungkinkan tindakan kompleks (seperti bergabung, subquery, dll.) Dan mengelola kesehatan / status dan konfigurasi mesin yang disertakan. Ada banyak hal untuk memberi makan dan merawat mesin, dan perangkat lunak database menyembunyikan semua kerumitan itu.

Bryan Agee
sumber
Terima kasih telah menjawab pertanyaan yang diajukan dengan berani!
nealmcb