Tujuan artikel ini adalah untuk menjelaskan apa saja perbedaan antara MySQL dan MariaDB, bagaimana sejarah keduanya, siapa perusahaan atau organisasi di belakangnya, dan beberapa hal yang perlu dipertimbangkan jika kita ingin memilih antara keduanya.
Siapa Pengguna Keduanya?
MySQL mau pun MariaDB keduanya sama-sama mempublikasikan daftar top penggunanya.
MySQL
Sebagaimana yang mereka sebutkan sendiri dalam situs resmi mereka [1], bahwasanya di antara pengguna MySQL adalah: YouTube, Paypal, Google, Facebook, Twitter, Netflix, Github, Linkedin, dan lain-lain.
MariaDB
Di antara nama-nama besar pengguna MariaDB sebagaimana pada situs resmi mereka [2] adalah: Red Hat, Samsung, Nokia, dan lain-lain.
Dan juga beberapa nama besar yang menjadi sponsor MariaDB di antaranya [3]: Microsoft, Booking.com, Alibaba Cloud, Tencent Cloud, IBM, dan lain-lain.
Sejarah Kemunculan
Pengembangan pertama dimulai pada tahun 1994 dibelakangi oleh perusahaan asal Swedia, MySQL AB yang dipelopori oleh 3 orang founder: David Axmark, Allan Larsson, dan Michael “Monty” Widenius. Versi pertama kali dari MySQL dirilis pada tahun 1995 bulan Mei tanggal 23.
Pada tahun 2008, MySQL AB diakuisisi oleh Sun Microsystems. Pengembangan terus berlanjut hingga pada tahun 2010 Oracle mengakuisisi Sun Microsystem [4].
Cerita selanjutnya adalah hengkangnya salah satu founder dari MySQL Michael “Monty” Widenius dihari yang sama di mana Oracle membeli MySQL. Dia membuat fork dari MySQL dan memulai projek baru dengan nama MariaDB. Tidak hanya itu, dia juga menarik beberapa developer dari MySQL itu sendiri. Hal itu dia lakukan karena ada perbedaan sudut pandang antara dia dan Oracle dalam arah pengembangan MySQL [5].
“Banyak dari pengembang inti MySQL yang asli, termasuk saya, tidak percaya bahwasanya Oracle akan menjadi owner yang pantas untuk MySQL dan (kami juga tidak percaya bahwa mereka -pent) akan tetap berkomitmen untuk meng-open-source-kan sumber kode MySQL selamanya,” Kata Widenius. [5]
Perusahaan Dibelakangnya
MySQL sebagaimana telah berlalu penjelasannya di atas, sejak tahun 2010 telah berpindah kepada Oracle. Setelah Oracle berhasil mengakuisisi Sun Microsystem.
Sedangkan MariaDB pengembangannya sendiri memang berbasis komunitas, akan tetapi dia dibelakangi oleh 2 lembaga/organisasi/foundation. Untuk versi enterprise, ia dibelakangi oleh MariaDB Coorporation AB, sedangkan untuk versi komunitas, ia dibelakangi oleh MariaDB Foundation.
Sisi Pengembangan
MySQL dan MariaDB memiliki banyak kesamaan. Bahkan salah satu orang yang pertama kali mengembangkan MySQL, dia lah juga yang pertama kali mengembangkan MariaDB. Akan tetapi, setelah akuisisi yang dilakukan oleh Oracle terhadap MySQL dan juga setelah munculnya MariaDB, perbedaan antara keduanya terlihat semakin jauh karena 2 produk tersebut sejatinya sudah memiliki tujuan dan arah pengembangan yang tidak lagi sejalan.
MySQL
MySQL adalah Relational Database Management System (RDMS). Dikembangkan secara open-source sejak pertama kemunculannya pada tahun 1995 [4] sampai sekarang. Kode sumber MySQL bisa kita lihat dan bisa kita akses di repositori resmi MySQL di github.
Akan tetapi semua pengembangannya dikendalikan oleh Oracle secara tertutup. Semua keputusan arah pengembangan tidak dikeluarkan ke publik. Akan tetapi karena MySQL memiliki karyawan yang lebih banyak dan juga dana yang lebih besar, tentu saja pengembangannya pun terus berlanjut dengan cepat. Hal ini membuat persaingan antara MySQL dan MariaDB kian sehat karena hal tersebut menuntut keduanya untuk terus berinovasi [6].
MariaDB
Berbeda dengan MySQL. Dari segi pengembangan, MariaDB memang betul-betul murni dikendalikan oleh komunitas alias bersifat community-driven project. Segala macam bentuk keputusan yang berkaitan dengan arah pengembangan, atau bahkan review, debat, diskusi mengenai projek MariaDB, bisa kita akses melalui mailing-list yang bersifat publik [6].
Sumber kodenya sendiri bisa kita lihat dan akses pada repositori resmi mereka di github.
Segi Struktur Data
MySQL –seperti halnya relational database yang lain– ia menyimpan datanya dalam bentuk tabel. Setiap tabel memiliki kolom. Dan setiap baris pada satu tabel memiliki jumlah kolom yang sama. MySQL menggunakan primary key
untuk membedakan antar satu baris data dengan baris data yang lain, ia juga menggunakan foreign key
untuk membangun relasi antar satu baris data pada satu tabel tertentu, dengan baris data di tabel yang lain. MySQL juga memiliki fitur constraint, views, stored procedures, dan komponen inti lainnya yang bisa kita gunakan untuk menunjang kebutuhan bisnis kita.
MariaDB: karena ia adalah fork dari MySQL, otomatis ia juga mendukung semua fitur di atas. Kecuali fitur-fitur baru dari MySQL yang dikembangkan setelah fork dari MariaDB seperti support JSON dan sebagainya.
Dengan keidentikan yang dimiliki MariaDB dan MySQL ini, kita bisa dengan mudah me-replace MySQL dengan MariaDB. Bahkan perintah command line-nya pun sama: yaitu dengan nama program mysql
.
Segi Query
Dari segi query, tidak ada perbedaan antara MySQL dan MariaDB. Ini membuat kita bisa mengimpor/mengekspor data dengan mudah dari MySQL ke MariaDB dan begitu pula sebaliknya.
Ada kemungkinan data tidak bisa langsung di-impor karena ada fitur-fitur MySQL yang tidak ditiru oleh MariaDB seperti dukungan terhadap tipe data JSON. Yang mana MariaDB memilih untuk menggunakan tipe data
LONGTEXT
dengan tambahanconstraint
. Sehingga jika kita mengimpor data dari MySQL yang memiliki tipe dataJSON
, kemungkinan besar akan error.
Berikut ini adalah contoh query insert dan select pada MySQL dan MariaDB yang benar-benar identik tanpa perbedaan.
MySQL
SELECT *
FROM mahasiswa
INSERT INTO mahasiswa (id, nama, alamat)
VALUES
(1, 'Ibnu Zakariyya', 'Surabaya')
MariaDB
SELECT *
FROM mahasiswa
INSERT INTO mahasiswa (id, nama, alamat)
VALUES
(1, 'Ibnu Zakariyya', 'Surabaya')
Perbandingan Fitur
Selanjutnya kita akan membahas perbandingan fitur. Fitur yang akan kita sebutkan hanyalah fitur-fitur yang ada pada salah satu database, akan tetapi tidak didukung atau berbeda di database yang lainnya. Berikut adalah beberapa fitur tersebut [7]:
-
Tipe data JSON
Sejak versi MySQL 5.7, mereka mulai memberi dukungan terhadap tipe data JSON. Akan tetapi MariaDB justru memiliki pandangan lain bahwasanya tipe data JSON itu bukanlah standar bahasa SQL. Akan tetapi kita tetap bisa menyimpan tipe data JSON pada MariaDB akan tetapi menggunakan tipe data
LONGTEXT
. MariaDB mengklaim bahwa cara itu (yaitu dengan LONGTEXT) memiliki performa yang lebih cepat secara signifikan [8] dari pada pendekatan yang dilakukan oleh pesaingnya.Hal ini sebenarnya tidak menjadi masalah berarti, karena keduanya tetap memiliki beberapa fungsi yang memudahkan kita untuk melakukan manajemen dan pencarian data yang disimpan dalam bentuk JSON.
-
Autentikasi Default
Sejak MySQL versi 8.0, autentikasi default yang digunakan adalah plugin caching_sha2_password dan bukan lagi plugin mysql_native_password. Perubahan fitur ini membuat MySQL menjadi lebih aman dengan menggunakan algoritma enkripsi SHA-256.
-
MySQL Shell
MySQL Shell adalah advanced client dan juga code editor untuk MySQL Server [9]. Dia mirip dengan client
mysql
, akan tetapi memiliki kemampuan tambahan seperti dukungan terhadap bahasa scripting Python dan Javascript untuk bekerja dengan API MySQL X.Kita tidak akan bisa mengakses MariaDB Server menggunakan MySQL Shell karena MariaDB Server tidak mendukung protokol MySQL X.
-
Encryption
MariaDB support fitur temporary table encryption dan juga log encryption, sedangkan MySQL hanya meng-enkrip undo/redo log (itu pun jika di-setting agar seperti itu).
-
Validate Password
Validate Password adalah sebuah plugin yang bertugas untuk menguji tingkat keamanan password. MySQL mengaktifkan plugin ini secara default, sedangkan MariaDB tidak.
-
Invisible Columns
Fitur ini hanya didukung oleh MariaDB. Fitur ini memungkinkan kita untuk membuat kolom yang tidak terlihat dan tidak ter-list pada query
SELECT *
. Dia juga tidak akan diberikan nilai apa pun jika tidak disebutkan secara spesifik dalam perintah queryINSERT INTO
.
Lisensi
MySQL memiliki dua versi lisensi, yang satu berlisensi GPLv2 untuk versi komunitas, dan yang satu Enterprise. Sedangkan MariaDB Server berlisensikan GPLv2.
Perbedaan utama pada kedua lisensi tersebut adalah kita bisa mendapatkan full-featured aplikasi jika kita menggunakan MariaDB. Ada pun jika menggunakan MySQL, maka belum tentu. Seperti misalkan fitur Threadpool, kita bisa mendapatkannya pada MariaDB akan tetapi pada MySQL kita harus membeli lisensi versi Enterprise. Padahal fitur tersebut bisa mempengaruhi performa database secara signifikan.
Lalu, mana Yang Harus Dipilih?
MySQL sudah terbukti bahwa ia adalah database yang handal, terlebih lagi banyak perusahaan raksasa dunia yang menggunakan database MySQL seperti yang telah disebutkan di atas. Oracle juga terus melakukan pengembangan, maintenance, dan juga dukungan terhadap produknya tersebut.
Di sisi lain, MariaDB datang sebagai pengganti atau alternatif (yang identik) bagi perusahan mau pun organisasi yang menggunakan MySQL. Ia juga dibelakangi oleh organisasi MariaDB Foundation, yang memungkinkan para pengembang di luar sana terlibat dalam pengembangan projek open source ini secara langsung mau pun secara tidak langsung.
Lalu, apakah anda lebih memilih MySQL dengan dukungan penuh dari Oracle –salah satu perusahaan global yang sudah tidak diragukan lagi kontribusinya di dunia software, atau kah anda lebih nyaman menggunakan produk yang bersifat komunitas? Apa pun itu, anda yang lebih tahu atas kebutuhan bisnis anda.
Referensi
[1] https://www.mysql.com/ - diakses tanggal 17 Januari 2020
[2] https://mariadb.com/resources/customer-stories/ - diakses tanggal 17 Januari 2020
[3] https://mariadb.org/donate/#corporate-sponsorships - diakses tanggal 17 Januari 2020
[4] https://en.wikipedia.org/wiki/MySQL - diakses tanggal 17 januari 2020
[5] https://www.computerworld.com/article/3463901/dead-database-walking-mysql-s-creator-on-why-the-future-belongs-to-mariadb.html - diakses tanggal 17 januari 2019
[6] https://blog.panoply.io/a-comparative-vmariadb-vs-mysql - diakses tanggal 17 Januari 2020
[7] https://www.eversql.com/mariadb-vs-mysql/ - diakses tanggal 17 Januari 2020
[8] https://mariadb.com/kb/en/library/json-data-type/
[9] https://dev.mysql.com/doc/mysql-shell/8.0/en/