MySQL - Versi

Hai, penggemar basis data yang sedang berkembang! Saya sangat senang untuk mengantar Anda melalui dunia yang menarik dari versi MySQL. Sebagai guru komputer yang ramah di lingkungan sekitar Anda dengan tahun-tahun pengalaman, saya akan memastikan kita menjelajahi topik ini dengan mudah dan menyenangkan. Jadi, ambil catatan virtual Anda, dan mari kita masuk ke dalam!

MySQL - Versions

MySQL Versi

MySQL, seperti anggur yang bagus, semakin baik dengan bertambahnya usia. Sejak pendiriannya pada tahun 1995, itu telah mengalami banyak pembaruan dan peningkatan. Mari kitaambil perjalanan singkat melalui beberapa versi utama:

MySQL 3.23 (2001)

Versi ini menjadi perubahan besar, memperkenalkan fitur seperti:

  • Indeks teks lengkap
  • Replikasi
  • Cache kueri

MySQL 4.0 (2003)

Rilis ini membawa beberapa penambahan menarik:

  • Kueri gabungan (union)
  • Subkueri
  • Fungsi GIS

MySQL 5.0 (2005)

Sebuah tonggak utama, memperkenalkan:

  • Prosedur tersimpan
  • View
  • Trigger

MySQL 5.5 (2010)

Versi ini fokus pada peningkatan kinerja:

  • InnoDB sebagai mesin penyimpanan default
  • Replikasi semi-sinkron

MySQL 5.6 (2013)

Menambahkan kinerja dan skala:

  • Operasi DDL daring
  • Peningkatan kinerja replikasi

MySQL 5.7 (2015)

Pembaruan signifikan dengan:

  • Dukungan JSON
  • Fitur keamanan yang ditingkatkan
  • Peningkatan skema kinerja

MySQL 8.0 (2018)

Versi utama terbaru, yang kita akan eksplor lebih detil segera!

Fitur Ditambahkan di MySQL 8.0

MySQL 8.0 seperti superhero versi basis data, penuh dengan kekuatan dan kemampuan baru. Mari kita eksplor beberapa fitur yang paling keren:

1. Penyimpanan Dokumen

MySQL sekarang mendukung penyimpanan dan penanyaan dokumen JSON, menjadikannya basis data relasional dan dokumen hybrid. Ini adalah contoh sederhana:

CREATE TABLE products (
id INT PRIMARY KEY,
details JSON
);

INSERT INTO products VALUES (1, '{"name": "Laptop", "price": 999.99, "specs": {"RAM": "16GB", "CPU": "i7"}}');

SELECT JSON_EXTRACT(details, '$.name') AS product_name
FROM products
WHERE JSON_EXTRACT(details, '$.price') < 1000;

Kode ini membuat tabel dengan kolom JSON, memasukkan produk dengan rincian bersarang, dan kemudian menanyakan berdasarkan properti JSON.

2. Fungsi Jendela

Fungsi jendela memungkinkan Anda melakukan perhitungan di atas set baris yang berhubungan dengan baris saat ini. Ini adalah contoh:

SELECT
product_name,
category,
price,
AVG(price) OVER (PARTITION BY category) AS avg_category_price
FROM products;

Kueri ini menghitung rata-rata harga untuk setiap kategori bersamaan dengan harga produk individual.

3. Ekspresi Tabel Umum (CTEs)

CTEs membuat kueri kompleks lebih mudah dibaca. Ini adalah contoh sederhana:

WITH high_value_customers AS (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING SUM(total_amount) > 10000
)
SELECT c.name, c.email
FROM customers c
JOIN high_value_customers hvc ON c.id = hvc.customer_id;

Kueri ini pertama-tama mendefinisikan CTE untuk pelanggan berharga tinggi, kemudian menggunakannya dalam kueri utama.

4. Indeks Tak Terlihat

Anda sekarang dapat membuat indeks tak terlihat untuk tujuan pengujian:

ALTER TABLE customers ALTER INDEX idx_email INVISIBLE;

Ini memungkinkan Anda menguji dampak indeks tanpa menghapusnya fisik.

5. Peningkatan SQL Roles

MySQL 8.0 memperkenalkan kontrol akses berdasarkan peran yang lebih kuat:

CREATE ROLE 'app_developer', 'app_read', 'app_write';

GRANT SELECT ON app_db.* TO 'app_read';
GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';

GRANT 'app_read', 'app_write' TO 'app_developer';

CREATE USER 'jane'@'localhost' IDENTIFIED BY 'password123';
GRANT 'app_developer' TO 'jane'@'localhost';

Contoh ini membuat peran dengan izin yang berbeda dan memberikannya kepada pengguna.

Fitur yang Tak Terpakai di MySQL 8.0

Sebagai MySQL berkembang, beberapa fitur menjadi usang. Itu seperti membersihkan lemari - kadang-kadang Anda perlu membuat ruang untuk hal baru! Berikut adalah beberapa fitur yang tak terpakai di MySQL 8.0:

Fitur Tak Terpakai Pengganti/Alternatif
Opsi --skip-symbolic-links --skip-symlink
Fungsi ENCRYPT() Gunakan AES_ENCRYPT()
Fungsi DES_ENCRYPT() dan DES_DECRYPT() Gunakan AES_ENCRYPT() dan AES_DECRYPT()
Fungsi FOUND_ROWS() Gunakan SELECT dengan klausa LIMIT
SQL_CALC_FOUND_ROWS Gunakan SELECT COUNT(*)

Ingat, "tak terpakai" tidak berarti fitur ini menghilang secara mendadak. Itu seperti peringatan ramah bahwa mereka mungkin tidak akan ada di versi mendatang, jadi lebih baik mulai menggunakan alternatifnya.

Dalam kesimpulan, MySQL 8.0 seperti pisau Swiss untuk manajemen basis data - penuh dengan alat baru yang kuat sambil mempercepat beberapa yang lama. Sebagai Anda terus menjelajahi perjalanan MySQL Anda, ingat bahwa setiap versi membawa kemungkinan dan peningkatan baru. Tetap curiga, terus mencoba, dan terutama, bersenang-senang dengan basis data Anda!

Credits: Image by storyset