Server MariaDB awalnya diturunkan dari MySQL dan oleh karena itu mewarisi arsitektur mesin penyimpanan yang dapat dicolokkan. Mesin penyimpanan yang berbeda memiliki karakteristik yang berbeda dalam hal kinerja tetapi juga fitur dan kemungkinan. Ini memungkinkan pengguna untuk memilih alat yang tepat untuk pekerjaan itu daripada menggunakan mesin penyimpanan yang sama, apa pun tujuan datanya, persyaratan apa saja yang terkait dengan penyimpanan data, dan bagaimana data harus diakses. Dalam postingan blog ini, kami ingin melihat opsi yang tersedia di MariaDB dan mendiskusikan kemungkinan kasus penggunaan untuk berbagai mesin penyimpanan yang tersedia.
Apa itu Mesin Penyimpanan?
Pertama, mari kita lihat apa itu mesin penyimpanan? MariaDB terdiri dari beberapa lapisan yang beroperasi bersama. SQL diuraikan oleh salah satunya, lalu MariaDB menjangkau data, menggunakan API umum. Di bawah tenda ada mesin penyimpanan yang berisi data dan bereaksi terhadap permintaan data, mengekstrak data dan membuatnya tersedia untuk MariaDB.
Singkatnya, MariaDB mengirimkan permintaan untuk satu baris dan semuanya tergantung pada mesin penyimpanan untuk mengambilnya dan mengirimkannya kembali. MariaDB tidak peduli bagaimana tepatnya baris disimpan atau bagaimana akan diambil, semuanya tergantung pada implementasi di dalam mesin penyimpanan. Mesin penyimpanan juga dapat menerapkan fitur yang berbeda. Transaksi sedang ditangani juga sepenuhnya di sisi mesin penyimpanan. Itu sebabnya beberapa transaksi mendukung dan beberapa tidak. Dengan arsitektur ini dimungkinkan untuk menulis mesin penyimpanan yang berbeda, yang didedikasikan untuk memecahkan masalah yang berbeda.
Mesin Penyimpanan di Server MariaDB
MariaDB hadir dengan seperangkat mesin penyimpanan. Anda dapat memeriksa mana yang tersedia melalui perintah sederhana:
MariaDB [(none)]> SHOW STORAGE ENGINES;
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
| MRG_MyISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | Stores tables as CSV files | NO | NO | NO |
| Aria | YES | Crash-safe tables with MyISAM heritage. Used for internal temporary tables and privilege tables | NO | NO | NO |
| SEQUENCE | YES | Generated tables filled with sequential values | YES | NO | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MyISAM | YES | Non-transactional engine with good performance and small data footprint | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, foreign keys and encryption for tables | YES | YES | YES |
+--------------------+---------+-------------------------------------------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.000 sec)
Seperti yang Anda lihat, ada banyak dari mereka, kami akan membahas yang paling penting.
InnoDB
InnoDB, jelas, adalah mesin penyimpanan. Transaksional, dibuat untuk menangani lalu lintas OLTP, dapat memberikan kinerja yang sangat hebat. Ini adalah mesin default yang digunakan di MariaDB dan, kecuali Anda tahu apa yang Anda lakukan, Anda mungkin ingin tetap menggunakannya untuk database Anda.
MyISAM
MyISAM adalah salah satu mesin penyimpanan "asli" yang tersedia di MySQL dan kemudian MariaDB. Ini bukan transaksional, sehingga tidak ideal untuk pengaturan replikasi dan, yah, sebagian besar lingkungan lain juga. Ini masih merupakan mesin yang sangat cepat, terutama terkait akses indeks, sehingga cocok untuk beban kerja hanya-baca yang tidak akan terpengaruh oleh penguncian INSERT dan kerentanan keseluruhan MyISAM.
Aria
Aria adalah mesin yang dibuat untuk MariaDB sebagai pengganti MyISAM. Ini bukan transaksional tetapi aman dari kecelakaan sehingga membuatnya lebih andal. Saat ini digunakan untuk sistem dan tabel sementara tetapi juga dapat digunakan sebagai pengganti MyISAM untuk beban kerja yang membutuhkan akses cepat dan hanya-baca ke data.
Memori
Ini adalah mesin all-in-memory yang biasanya digunakan untuk tabel dalam-memori sementara. Ini tidak persisten tetapi mungkin berfungsi untuk beberapa beban kerja hanya-baca.
CSV
Mesin penyimpanan ini dirancang untuk menyimpan data dalam file sebagai nilai yang dipisahkan koma. Ini bukan mesin penyimpanan yang paling banyak digunakan, ini sangat khusus tetapi masih dapat digunakan untuk mengekstrak data dari MariaDB dengan mudah ke perangkat lunak basis data lainnya serta Excel atau perangkat lunak serupa.
Mesin Penyimpanan di Server Perusahaan MariaDB
MariaDB Enterprise Server hadir dengan beberapa mesin penyimpanan tambahan di atas apa yang tersedia di edisi komunitas. Mari kita lihat juga.
ColumnStore
Ini adalah mesin penyimpanan khusus untuk beban kerja analitis. Berkat cara penyimpanan data yang spesifik, ini membuatnya lebih cepat untuk mengambil data dalam jumlah besar, yang sering kali diperlukan untuk pelaporan. Ini mungkin mesin penyimpanan yang Anda pilih untuk beban kerja OLAP (OnLine Analytical Processing).
S3
Mesin S3 memungkinkan Anda mengakses data yang terletak di S3. Ini adalah mesin non-transaksional yang dimaksudkan untuk memberi pengguna opsi untuk mengarsipkan data di S3. Akses baca saja tersedia setelah tabel dibuat.
Laba-laba
Mesin laba-laba memungkinkan Anda menghubungkan beberapa basis data MariaDB di seluruh jaringan, membuat penyimpanan sharding. Ini bersifat transaksional dan memudahkan pengguna untuk melakukan penskalaan dengan membagi data ke berbagai Server MariaDB Enterprise, mendistribusikan lalu lintas dan beban kerja di antara mereka.
MyRocks
MyRocks adalah mesin penyimpanan yang dikembangkan di Facebook, dimaksudkan untuk mengurangi amplifikasi penulisan dan meminimalkan keausan drive SSD. Ini adalah mesin transaksional yang harus menangani beban kerja OLTP dengan cukup baik, terutama beban kerja yang khas untuk situs web media sosial. MyRocks hadir dengan kompresi yang cukup baik, lebih baik daripada InnoDB, yang dapat membantu mengurangi pengeluaran penyimpanan secara signifikan jika kumpulan data menjadi terlalu besar untuk ditangani oleh InnoDB dengan benar.
Kesimpulan
Seperti yang Anda lihat, ada banyak opsi yang disediakan oleh MariaDB Enterprise dan Community Server mengenai cara penyimpanan data. Ada mesin penyimpanan yang unggul dalam beban kerja hanya-baca, OLAP, atau kumpulan data besar. Terserah pengguna untuk memilih yang cocok. Harap diingat bahwa, jika ragu, Anda selalu dapat menggunakan InnoDB, yang secara umum memberikan kinerja yang cukup baik dan seharusnya lebih dari cukup untuk sebagian besar kasus. Ini untuk kasus tepi di mana Anda mungkin perlu mencari sesuatu yang lebih cocok.