Apa itu MySQL ?

Sejarah MySQL, tempat MySQL berjalan, dan perannya pada aplikasi web serta LAMP stack.

Daftar isi

Topik ini memperkenalkan MySQL sebagai salah satu sistem manajemen basis data yang paling banyak dipakai pada aplikasi web. Pembahasannya mencakup definisi dan cara kerja MySQL secara ringkas, sejarah singkatnya, tempat MySQL berjalan, serta peran MySQL di dalam tumpukan LAMP. Setelah membaca topik ini, gambaran besar tentang posisi MySQL pada sebuah aplikasi sudah terbentuk sebelum bagian-bagian berikut masuk ke latihan teknis.

MySQL sebagai sistem manajemen basis data#

MySQL adalah sistem manajemen basis data relasional (relational database management system, RDBMS) yang bersifat open source. Sebuah RDBMS mengelola data yang tersimpan dalam bentuk tabel, yaitu struktur baris dan kolom yang saling berhubungan. Akses ke data dilakukan melalui SQL (Structured Query Language), bahasa standar untuk mendefinisikan struktur data serta membaca dan mengubah isinya. Basis data pada MySQL adalah objek penampung utama yang memuat tabel, view, dan objek lainnya, sehingga satu server dapat memuat banyak basis data milik banyak proyek.

Bentuk paling sederhana sebuah query SQL dapat dilihat pada potongan berikut. Query itu meminta kolom judul, penulis, dan tahun dari tabel buku, menyaring baris yang terbit sejak tahun 2000, lalu mengurutkannya menurut judul.

sql Contoh query SQL sederhana
-- tidak-dijalankan
SELECT judul, penulis, tahun
FROM buku
WHERE tahun >= 2000
ORDER BY judul;

MySQL bekerja dengan model client-server. Proses server bernama mysqld mengelola seluruh data dan menerima koneksi, sedangkan klien seperti program mysql mengirimkan perintah dan menerima hasilnya. Keduanya dapat berada pada satu mesin yang sama atau terpisah lewat jaringan, karena keduanya berkomunikasi melalui protokol jaringan pada port 3306 secara default. Skema inilah yang membuat satu server dapat melayani banyak pengguna dan aplikasi sekaligus.

Perbedaan antara SQL dan MySQL perlu dijaga sejak awal. SQL adalah bahasa query, sedangkan MySQL adalah produk yang menafsirkan bahasa tersebut. Produk sejenis yang juga memakai SQL di antaranya PostgreSQL, SQL Server, dan SQLite, sehingga keterampilan menulis query dapat dipindahkan antarproduk, meskipun fitur dan perilaku detailnya berbeda-beda. Pembedaan ini juga menjadi alasan istilah “basis data” tidak dipakai bergantian dengan “MySQL”, karena yang satu adalah konsep umum dan yang lain adalah perangkat lunaknya.

Sejarah singkat MySQL#

MySQL ditulis pertama kali pada tahun 1995 oleh Michael Widenius, David Axmark, dan Allan Larsson di Swedia melalui MySQL AB, perusahaan yang didirikan ketiganya. Nama MySQL berasal dari gabungan kata My, nama putri Widenius, dengan SQL. Versi pertamanya dirilis sebagai perangkat lunak bebas dengan lisensi ganda, yaitu GPL untuk penggunaan bebas dan lisensi komersial untuk kebutuhan tertentu. Kombinasi kualitas teknis dan lisensi yang ramah inilah yang membuat MySQL cepat diterima, terutama oleh pengembang aplikasi web.

Perkembangan versinya berjalan bertahap. Versi 3.23, yang muncul pada akhir dekade 1990-an, mulai menyertakan engine penyimpanan MyISAM dan InnoDB. Versi 5.0 pada tahun 2005 menambahkan fitur penting seperti stored procedure, trigger, dan view. MySQL AB kemudian diakuisisi Sun Microsystems pada tahun 2008, dan Sun diakuisisi Oracle pada tahun 2010, sehingga pengembangan MySQL kini berada di bawah Oracle. Versi 8.0, yang dipakai di sepanjang jalur ini, dirilis pada tahun 2018 dan menghadirkan CTE (common table expression), fungsi window, serta kamus data transaksional.

Dari sejarah itu juga lahir cabang proyek bernama MariaDB. Widenius mendirikannya pada tahun 2009 sebagai tindak lanjut atas keprihatinan komunitas terhadap masa MySQL di bawah Oracle. Keduanya tetap berkerabat dari sisi sintaks SQL dan perilaku dasarnya, sehingga sebagian besar materi jalur ini relevan pula bagi pengguna MariaDB.

Tempat MySQL berjalan#

Sebagai perangkat lunak server, MySQL dapat dipasang pada berbagai sistem operasi. Pemasangan yang paling lazim berada di atas Linux, baik pada komputer pribadi, VPS (virtual private server), maupun mesin cloud, sedangkan dukungan resmi untuk Windows dan macOS juga tersedia. Kebutuhan sumber dayanya relatif kecil untuk skenario latihan, sehingga satu mesin biasa sudah cukup untuk menjalankan server beserta kliennya.

Satu proses mysqld mengelola banyak basis data sekaligus. Basis data milik proyek yang berbeda dapat hidup berdampingan di dalam satu server tanpa saling mengganggu, dan pembatasan aksesnya diatur melalui pengguna serta hak akses. Server juga melayani banyak klien dalam waktu yang sama, mulai dari klien command line, aplikasi web, hingga alat pemodelan basis data. Dengan cakupan seperti itu, MySQL bekerja baik pada mesin latihan berukuran kecil maupun server produksi yang melayani ratusan permintaan per detik.

Cara paling langsung untuk memastikan server hidup adalah mengirim satu query kecil melalui klien. Jalankan perintah berikut untuk menanyakan versi server. Opsi -t membuat keluaran klien berbentuk tabel, dan opsi -e mengeksekusi satu pernyataan lalu langsung keluar.

bash
# menanyakan versi server MySQL melalui klien
mysql -t -u root -e "SELECT VERSION();"
text Keluaran
+-----------+
| VERSION() |
+-----------+
| 8.0.46    |
+-----------+

Respons 8.0.46 pada keluaran berarti server MySQL 8.0.46 berjalan dan melayani koneksi, seperti halnya server pada sandbox jalur ini. Koneksi di atas memakai pengguna root tanpa password karena inilah kondisi default sandbox tersebut. Pada server yang dipasang sendiri, bentuk koneksi yang sama berlaku dengan penambahan opsi password.

Peran MySQL pada aplikasi web dan LAMP stack#

Pada aplikasi web, MySQL lazim menduduki lapisan data di dalam tumpukan LAMP. Akronim LAMP merangkum empat komponen yang biasanya dipasang bersama, yaitu Linux sebagai sistem operasi, Apache sebagai web server, MySQL sebagai basis data, dan PHP sebagai bahasa aplikasi. Huruf P juga sering dibaca sebagai Python atau Perl tanpa mengubah gagasan dasarnya. Tumpukan ini menjadi lingkungan klasik tempat MySQL paling sering dijumpai.

Alur kerja tumpukan LAMP dapat diringkas sebagai berikut. Browser mengirim permintaan halaman, aplikasi web yang berjalan di server membentuk query SQL, dan MySQL menjawabnya dengan baris data yang dibutuhkan. Halaman kemudian disusun dari data tersebut dan dikirim balik ke browser. Protokol HTTP sendiri tidak menyimpan keadaan antarpermintaan, sehingga data yang harus bertahan seperti akun pengguna, konten, dan catatan aktivitas tidak cukup disimpan di dalam memori aplikasi. MySQL menyediakan tempat penyimpanan yang tepat untuk kebutuhan tersebut.

Diagram berikut menggambarkan alur tersebut. Ikuti panah penuh dari atas ke bawah untuk melihat perjalanan permintaan, lalu panah putus-putus dari bawah ke atas untuk melihat jalan balik datanya.

Browsermeminta halaman kepada aplikasi webpermintaan HTTPrespons HTMLAplikasi web (PHP)membentuk query dan membaca hasilnyaquery SQLhasil queryServer MySQL (mysqld)menyimpan data dan menjawab query
Alur permintaan dan respons pada aplikasi web dengan MySQL

Pola ini menjelaskan mengapa MySQL menjadi bagian yang hampir baku pada pembelajaran pengembangan web. Hampir setiap aplikasi yang menangani data pengguna, konten halaman, atau catatan aktivitas membutuhkan basis data, dan MySQL menyediakannya dengan lisensi bebas serta dokumentasi yang lengkap. Kemampuan membaca dan menulis query SQL terhadap MySQL dengan demikian menjadi keterampilan inti yang dipakai lintas proyek web.

Kesalahan umum#

Beberapa kekeliruan berikut paling sering muncul ketika MySQL baru dipelajari.

  • Menyamakan SQL dengan MySQL. SQL adalah bahasa query, sedangkan MySQL adalah produk yang menafsirkan bahasa itu. Akibat penyamaan ini, frasa “belajar SQL” dan “belajar MySQL” sering tertukar padahal cakupannya berbeda. Pemakaian yang tepat adalah memakai SQL untuk menyebut bahasa dan MySQL untuk menyebut perangkat lunak servernya.
  • Menyamakan klien mysql dengan server mysqld. Program mysql hanya perantara yang mengirim perintah, sedangkan mysqld adalah proses yang menyimpan dan mengelola data. Apabila klien gagal tersambung, penyebabnya biasanya berada pada keberadaan proses server atau kredensial, bukan pada query yang dikirim. Periksa kedua hal tersebut sebelum menyimpulkan ada kesalahan SQL.
  • Mengira satu server MySQL hanya menampung satu basis data. Satu proses mysqld mengelola banyak basis data sekaligus, dan setiap proyek lebih baik memilikinya sendiri agar skema serta hak aksesnya rapi. Perintah CREATE DATABASE dengan demikian menjadi langkah awal yang wajar untuk setiap proyek baru.

Ringkasan#

  • MySQL adalah RDBMS open source berarsitektur client-server dengan proses server mysqld dan klien mysql yang berkomunikasi melalui SQL.
  • MySQL lahir pada tahun 1995 dari MySQL AB, menjadi bagian Sun Microsystems pada 2008 dan Oracle pada 2010, dan versi yang dipakai jalur ini adalah 8.0.
  • Server berjalan pada berbagai sistem operasi, mengelola banyak basis data sekaligus, dan melayani banyak klien secara bersamaan.
  • Pada aplikasi web, MySQL menempati lapisan data dalam tumpukan LAMP dan menyimpan data yang harus bertahan antarpermintaan HTTP.

Referensi#