MySQL - Pemartesan Horizontal

Hai, para ahli basis data masa depan! Hari ini, kita akan melihat dunia yang menarik dari MySQL Pemartesan Horizontal. Sebagai guru komputer yang ramah di lingkungan sekitar Anda dengan tahun-tahun pengalaman, saya di sini untuk memandu Anda dalam perjalanan ini, bahkan jika Anda belum pernah menulis baris kode sebelumnya. Jadi, pakai helm virtual Anda, dan mari kita mulai membangun struktur basis data!

MySQL - Horizontal Partitioning

MySQL Pemartesan Horizontal

Bayangkan Anda mengatur perpustakaan besar. Daripada memasukkan semua buku di rak besar, Anda memutuskan untuk mengesahkan mereka di beberapa rak berdasarkan kriteria tertentu. Itu sebenarnya apa yang dilakukan pemartesan horizontal bagi basis data Anda!

Pemartesan horizontal, juga dikenal sebagai sharding, adalah teknik tempat kita membagi tabel besar menjadi bagian yang lebih kecil dan mudah dikelola. Setiap bagian disebut partition, dan itu berisi subseksi baris dari tabel asli.

mari kita mulai dengan contoh sederhana:

CREATE TABLE books (
id INT,
title VARCHAR(100),
author VARCHAR(100),
publication_year INT
) PARTITION BY RANGE (publication_year) (
PARTITION p0 VALUES LESS THAN (2000),
PARTITION p1 VALUES LESS THAN (2010),
PARTITION p2 VALUES LESS THAN (2020),
PARTITION p3 VALUES LESS THAN MAXVALUE
);

Dalam contoh ini, kita menciptakan tabel books dan memartesannya berdasarkan publication_year. Kita telah menciptakan empat partition:

  • p0: Buku yang diterbitkan sebelum 2000
  • p1: Buku yang diterbitkan dari 2000 hingga 2009
  • p2: Buku yang diterbitkan dari 2010 hingga 2019
  • p3: Buku yang diterbitkan dari 2020 ke depan

Sekarang, ketika Anda melakukan query tabel ini, MySQL dapat cepat menentukan partition mana yang harus dicari, membuat query Anda lebih cepat dan lebih efisien.

MySQL Pemartesan Rentang

Pemartesan rentang seperti mengatur lemari pakaian berdasarkan musim. Anda memasukkan semua pakaian musim panas di salah satu seksi, pakaian musim gugur di seksi lain, dan seterusnya. Di MySQL, kita menggunakan metode ini untuk memartesan data berdasarkan rentang nilai.

Ini adalah contoh menggunakan gaji karyawan:

CREATE TABLE employees (
id INT,
name VARCHAR(100),
salary INT
) PARTITION BY RANGE (salary) (
PARTITION low_salary VALUES LESS THAN (30000),
PARTITION medium_salary VALUES LESS THAN (60000),
PARTITION high_salary VALUES LESS THAN (100000),
PARTITION very_high_salary VALUES LESS THAN MAXVALUE
);

Dalam kasus ini, kita memartesan tabel employees berdasarkan rentang gaji. Penataan ini memungkinkan pengambilan data karyawan dalam kelas gaji tertentu secara cepat.

MySQL Pemartesan Daftar

Pemartesan daftar sempurna saat Anda ingin memartesan berdasarkan nilai tertentu, bukan rentang. Itu seperti mengatur koleksi film Anda berdasarkan genre.

mari kita memartesan tabel produk berdasarkan kategori:

CREATE TABLE products (
id INT,
name VARCHAR(100),
category VARCHAR(50)
) PARTITION BY LIST COLUMNS(category) (
PARTITION p_electronics VALUES IN ('Laptops', 'Smartphones', 'Tablets'),
PARTITION p_clothing VALUES IN ('Shirts', 'Pants', 'Dresses'),
PARTITION p_books VALUES IN ('Fiction', 'Non-fiction', 'Textbooks')
);

Sekarang, ketika Anda melakukan query untuk produk dalam kategori tertentu, MySQL tahu secara tepat partition mana yang harus dicari!

MySQL Pemartesan Hash

Pemartesan hash seperti memiliki beg tamu keberuntungan bagi data Anda. MySQL menggunakan fungsi hash untuk menentukan partition mana yang harus diletakkan baris. Ini sangat baik untuk mendistribusikan data secara merata saat Anda tidak memiliki cara alami untuk pemartesan rentang atau daftar.

Ini adalah contoh:

CREATE TABLE orders (
id INT,
customer_id INT,
order_date DATE
) PARTITION BY HASH(id)
PARTITIONS 4;

Dalam kasus ini, kita menciptakan empat partition dan membiarkan MySQL menentukan bagaimana mendistribusikan baris berdasarkan kolom id.

Pemartesan Kunci

Pemartesan kunci mirip dengan pemartesan hash, tetapi itu menggunakan fungsi hash sendiri MySQL. Itu sangat berguna saat Anda ingin memartesan berdasarkan kunci utama atau kunci unik.

CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
) PARTITION BY KEY()
PARTITIONS 3;

Di sini, kita memartesan tabel customers berdasarkan kunci utama id ke tiga partition.

MySQL Sub-partitioning

Sub-partitioning, atau pemartesan komposit, seperti menciptakan partition dalam partition. Itu seperti boneka Rusia beranak-anak!

mari kita buat tabel data penjualan, dipartisi berdasarkan tahun dan sub-dipartisi berdasarkan kuartal:

CREATE TABLE sales (
id INT,
sale_date DATE,
amount DECIMAL(10,2)
) PARTITION BY RANGE(YEAR(sale_date))
SUBPARTITION BY HASH(MONTH(sale_date))
SUBPARTITIONS 4 (
PARTITION p0 VALUES LESS THAN (2020),
PARTITION p1 VALUES LESS THAN (2021),
PARTITION p2 VALUES LESS THAN (2022),
PARTITION p3 VALUES LESS THAN MAXVALUE
);

Struktur ini memungkinkan query sangat cepat saat Anda mencari data penjualan dari tahun dan kuartal tertentu.

Sekarang, mari kita ringkaskan metode pemartesan yang kita pelajari dalam tabel mudah:

Metode Pemartesan Use Case Contoh
Pemartesan Rentang Data dengan rentang alami Gaji karyawan, tanggal
Pemartesan Daftar Data dengan kategori diskret Kategori produk, wilayah
Pemartesan Hash Distribusi data merata ID pelanggan, ID pesanan
Pemartesan Kunci Pemartesan berdasarkan kunci utama atau unik Tabel pelanggan berdasarkan ID
Sub-partitioning Organisasi data kompleks Data penjualan berdasarkan tahun dan kuartal

Ingat, para padawan basis data muda, pemartesan adalah alat yang kuat, tetapi dengan kekuatan yang besar datang tanggung jawab besar. Selalu pertimbangkan kasus penggunaan khusus dan distribusi data Anda sebelum memutuskan strategi pemartesan.

Saat kita menutup pelajaran ini, saya teringat waktu saya bekerja di basis data e-commerce besar. Kita menghadapi waktu query yang lambat, dan solusi adalah untuk implementasi pemartesan rentang pada tabel produk berdasarkan harga. Itu seperti magis - waktu query kita turun drastis, dan administrator basis data kita menari senang di ruang server!

Jadi, jangan takut untuk mencoba teknik pemartesan ini. Mereka mungkin menjadi bahan rahasia untuk membuat basis data Anda menyanyi! Sampai jumpa lagi, terus mengkode dan maya query Anda selalu berjalan cepat!

Credits: Image by storyset