Apa Itu Pemartisian Data? Panduan Lengkap untuk Pemula
Panduan ini menjelaskan pemartisian data dengan istilah sederhana, mencakup jenis, kasus penggunaan, alat, dan strategi implementasi untuk membantu mengoptimalkan kinerja basis data.
Apakah Anda membangun aplikasi berfokus pada pelanggan atau menjalankan pipeline analitik yang kompleks, satu hal menjadi jelas: cara Anda menyimpan dan mengakses data dapat menentukan kinerja—baik atau buruk.
Saya telah melihat langsung betapa lebih mulusnya sistem berjalan saat data disusun dengan matang, dan di situlah pemartisian data berperan. Ini adalah salah satu teknik yang dapat secara drastis meningkatkan kecepatan kueri, efisiensi penyimpanan, dan skalabilitas.
Dalam tulisan ini, saya akan menjelaskan pemartisian data, berbagai jenis yang tersedia, dan praktik terbaik yang saya pelajari sepanjang jalan.
Apa itu Pemartisian Data?
Pemartisian data adalah teknik untuk membagi kumpulan data besar menjadi bagian-bagian yang lebih kecil dan mudah dikelola yang disebut partisi. Setiap partisi berisi subset data dan didistribusikan ke beberapa node atau server. Partisi-partisi ini dapat disimpan, dikueri, dan dikelola sebagai tabel terpisah, meskipun secara logis tetap milik kumpulan data yang sama.
Pemartisian data meningkatkan kinerja dan skalabilitas basis data. Misalnya, mencari satu titik data di seluruh tabel memakan waktu lebih lama dan menggunakan lebih banyak sumber daya dibandingkan mencari di partisi tertentu. Itulah sebabnya data disimpan sebagai partisi.
Jenis-Jenis Pemartisian Data
Pemartisian data mencakup berbagai jenis, masing-masing dengan strategi dan manfaat unik. Di bagian ini, saya membahas jenis yang paling umum.
Pemartisian horizontal
Alih-alih menyimpan semua data dalam satu tabel, pemartisian horizontal membagi data berdasarkan baris, artinya kumpulan baris yang berbeda disimpan sebagai partisi.
Semua partisi pada pemartisian horizontal berisi set kolom yang sama tetapi kelompok baris yang berbeda.
Contoh: Misalkan Anda memiliki dataset cuaca untuk beberapa negara bagian di tiga negara berbeda. Anda dapat mempartisi ini menjadi tiga tabel dengan memisahkang baris berdasarkan setiap negara.
Suhu
Negara Bagian
Negara
Musim
-30° F
Alaska
AS
Musim dingin
48.2° F
Queensland
Australia
Musim panas
100° F
Andhra Pradesh
India
Musim panas
35° F
California
AS
Musim dingin
96° F
Texas
AS
Musim panas
62° F
Tasmania
Australia
Musim dingin
Pemartisian horizontal berdasarkan negara:
Suhu
Negara Bagian
Negara
Musim
-30° F
Alaska
AS
Musim dingin
35° F
California
AS
Musim dingin
35° F
California
AS
Musim dingin
Suhu
Negara Bagian
Negara
Musim
48.2° F
Queensland
Australia
Musim panas
62° F
Tasmania
Australia
Musim dingin
Suhu
Negara Bagian
Negara
Musim
100° F
Andhra Pradesh
India
Musim panas
Pemartisian vertikal
Pemartisian vertikal membagi data berdasarkan kolom, sehingga setiap partisi berisi jumlah baris yang sama namun lebih sedikit kolom.
Kunci partisi atau kolom utama akan ada di setiap partisi untuk menjaga hubungan logis.
Pemartisian vertikal populer ketika informasi sensitif perlu disimpan terpisah dari data reguler. Ini memungkinkan kolom sensitif disimpan dalam satu partisi dan data standar di partisi lain.
Kasus penggunaan umum lainnya adalah mengelompokkan kolom yang sering diperbarui ke dalam satu partisi dan sisanya di partisi terpisah.
Contoh: Jika kolom nomor telepon dan gaji karyawan pada tabel di bawah bersifat rahasia, mari kita mempartisi tabel sesuai kebutuhan.
Pemartisian rentang membagi data berdasarkan rentang nilai untuk kolom tertentu.
Biasanya, setiap partisi memiliki batas bawah dan atas untuk kolom kunci, dan sebuah rekaman yang berada dalam rentang ini akan ditetapkan ke partisi tersebut.
Contoh: Misalkan data penjualan tersedia dari 2021 hingga 2023. Kita dapat mempartisi berdasarkan tahun sehingga penjualan dari 2021 hingga 2022 berada dalam satu partisi dan dari 2022 hingga 2023 dalam partisi lain.
Product_id
Tanggal
Laba
z0yu9h
2021-03-17
$100K
f8o5pj
2022-04-04
$234K
z006yu
2022-09-13
$789K
a6u895
2021-07-23
$237K
g68w90
2022-02-26
$2345K
Partisi 1:
product_id
Tanggal
Laba
z0yu9h
2021-03-17
$100K
a6u895
2021-07-23
$237K
Partisi 2:
product_id
Tanggal
Laba
f8o5pj
2022-04-04
$234K
z006yu
2022-09-13
$789K
Pemartisian hash
Sebuah fungsi hash diterapkan pada kunci partisi, dan keluarannya menentukan rekaman mana yang harus disimpan di partisi mana. Pada teknik ini, jumlah partisi ditentukan sebelumnya.
Sisa hasil pembagian nilai hash dengan jumlah partisi menentukan partisi mana tempat rekaman tersebut harus disimpan. Mari kita lihat contohnya:
Contoh: Misal, untuk produk dengan ID z0yu9h, hash(‘z0yu9h’) = 101 dan jumlah partisi = 4, maka 101%4 = 1. Jadi, rekaman ini disimpan di partisi pertama.
Dengan cara ini, nilai hash dihitung untuk kolom kunci partisi, dibagi dengan jumlah partisi, dan hasilnya menentukan partisi akhir.
Pemartisian daftar
Prosedurnya mirip dengan pemartisian rentang, tetapi alih-alih membagi data berdasarkan rentang nilai, pemartisian daftar membagi data berdasarkan sekumpulan nilai yang telah ditentukan.
Ambil kembali tabel suhu sebagai contoh.
Suhu
Negara Bagian
Negara
Musim
30° F
Alaska
AS
Musim dingin
48.2° F
Queensland
Australia
Musim panas
100° F
Andhra Pradesh
India
Musim panas
35° F
California
AS
Musim dingin
96° F
Texas
AS
Musim panas
62° F
Tasmania
Australia
Musim dingin
Pada data di atas, kolom ‘Musim’ berisi daftar nilai [‘winter’, ‘summer’]. Jadi, pemartisian daftar berdasarkan musim terlihat seperti berikut:
Partisi 1:
Suhu
Negara Bagian
Negara
Musim
30° F
Alaska
AS
Musim dingin
35° F
California
AS
Musim dingin
62° F
Tasmania
Australia
Musim dingin
Partisi 2:
Suhu
Negara Bagian
Negara
Musim
48.2° F
Queensland
Australia
Musim panas
100° F
Andhra Pradesh
India
Musim panas
96° F
Texas
AS
Musim panas
Pemartisian komposit
Partisi komposit adalah kombinasi dua teknik pemartisian. Sebuah tabel pertama-tama dibagi menggunakan satu strategi, lalu setiap partisi dibagi lagi menggunakan teknik lain.
Sekarang setelah kita mengevaluasi berbagai jenis strategi pemartisian, mari kita lihat kapan pemartisian data berguna.
Basis data terdistribusi
Sistem terdistribusi adalah kumpulan node yang secara fisik berada di server terpisah tetapi terhubung melalui jaringan. Contohnya termasuk Apache Cassandra, Amazon DynamoDB, dan Google Bigtable.
Sistem-sistem ini secara internal menggunakan pemartisian data untuk mengatur dan mendistribusikan data ke seluruh node.
Operasi OLAP
OLAP merepresentasikan data multidimensi sebagai kubus, memungkinkan pengguna mengeksplorasi data dari berbagai sudut. Meskipun kubus ini merepresentasikan data yang sudah diagregasi sebelumnya, data dasarnya tetap sangat besar, sehingga kueri perlu dioptimalkan lebih lanjut menggunakan pemartisian data.
Sebagai contoh, menerapkan pemartisian kubus (sebuah teknik pemartisian data) membagi data menjadi kubus-kubus yang lebih kecil berdasarkan kriteria tertentu. Saat Anda mengkueri data, pencarian dilakukan pada kubus tertentu dengan melewati yang tidak relevan, sehingga mengurangi operasi I/O.
Demikian pula, pemartisian dimensi dapat diterapkan untuk membagi data berdasarkan level, hierarki, atau kolom.
Manajemen log
Log berisi informasi tentang peristiwa, transaksi, dan operasi yang terjadi dalam sebuah sistem. Log digunakan untuk melacak kegagalan, bug, kasus tepi, hingga pesan keberhasilan.
Pemartisian log mempercepat proses debug dan memberi Anda informasi yang diperlukan dengan lebih cepat. Misalnya, jika Anda mempartisi log berdasarkan periode waktu, Anda dapat dengan mudah mengambilnya berdasarkan tanggal, minggu, bulan, atau tahun.
Pipeline pembelajaran mesin
Dalam kasus penggunaan pembelajaran mesin, data dipartisi menjadi set pelatihan, validasi, dan pengujian. Pendekatan ini memastikan bahwa wawasan dari set pengujian tidak terungkap ke model selama pelatihan untuk menghindari overfitting.
Selain itu, jika data pelatihan sangat besar, satu mesin tidak dapat memproses dan memasukkan seluruh data ke dalam model. Jadi, data dibagi menjadi potongan-potongan dan dimasukkan ke model melalui pemartisian data.
Alat untuk Pemartisian Data
Pemartisian data dapat diterapkan di basis data SQL maupun NoSQL. Mari kita bahas di bagian ini.
Basis data SQL
PostgreSQL
PostgreSQL menawarkan dukungan bawaan untuk pemartisian rentang, daftar, dan hash. Misalnya, kueri berikut membuat partisi untuk setiap tahun guna mengakses laba penjualan dan total penjualan tiap tahun fiskal secara efisien.
CREATETABLE sales(
city_id intnotnull,
sales_year datenotnull,
total_sales int,
sales_profits int)PARTITIONBY RANGE (sales_year);Didukung oleh
MySQL
MySQL mendukung berbagai jenis pemartisian horizontal seperti rentang, daftar, hash, dan key partitioning. Untuk saat ini (versi 8.4), ini belum mendukung pemartisian vertikal.
Kueri MySQL di bawah ini mempartisi data karyawan menjadi tiga grup, p1, p2, dan p3, berdasarkan tanggal bergabung. Semua karyawan yang bergabung sebelum tahun 2000 masuk ke partisi p1. Karyawan yang bergabung antara 2000 dan 2010 masuk ke partisi p2, dan karyawan yang bergabung antara 2010 dan 2020 masuk ke partisi p3.
CREATETABLE employee(
firstname VARCHAR(25)NOTNULL,
username VARCHAR(16)NOTNULL,
email VARCHAR(35),
salary INT,
joined DATENOTNULL)PARTITIONBY RANGE(YEAR(joined))(PARTITION p1 VALUES LESS THAN (2000),PARTITION p2 VALUES LESS THAN (2010),PARTITION p3 VALUES LESS THAN (2020));Didukung oleh
Microsoft SQL Server
SQL Server menawarkan fitur pemartisian melalui fungsi partisi dan skema partisi. Fungsi partisi menentukan bagaimana data dibagi, sementara skema partisi menentukan filegroup tempat partisi akan disimpan.
Pada kueri berikut:
Nama fungsi: sales_by_year
Nama skema: sales_filegroup
Nama filegroup: fg01, fg02, fg03, fg04
Fungsi partisi:
createpartitionfunction sales_by_year (date)as range rightforvalues('2024-01-01','2024-02-01','2024-03-01', ‘2024-04-01’);Didukung oleh
Skema partisi:
CREATEPARTITION SCHEME sales_filegroup
ASPARTITION sales_by_year
TO(fg01, fg02, fg03, fg04);Didukung oleh
Di sini, file menyimpan data sebagai berikut:
fg01 - tanggal sebelum ‘2024-01-01’,
fg02 - ‘2024-01-01’ hingga ‘2024-01-31’
fg03 - ‘2024-02-01’ hingga ‘2024-02-29’
fg04 - ‘2024-03-01’ hingga ‘2024-03-31’
Karena kita menyebutkan range right pada kueri, setiap tanggal batas termasuk dalam partisi berikutnya.
Jika Anda menggunakan SQL Server, tutorial SQL Server ini membahas konsep kunci dan alat untuk mengelola data terpartisi. Untuk jalur belajar terstruktur, jalur SQL Server Fundamentals memperkenalkan fitur inti yang dibutuhkan untuk membangun basis data SQL yang berperforma tinggi.
Basis data NoSQL
Amazon DynamoDB
DynamoDB secara otomatis menangani pemartisian secara internal. Saat Anda menulis sebuah item ke tabel DynamoDB, item tersebut melewati request router. Router mengurai kunci partisi dan menerapkan fungsi hash. Keluaran fungsi hash menentukan partisi spesifik tempat rekaman akan disimpan.
Seluruh proses ini diotomatisasi di dalam DynamoDB, sehingga pengguna tidak perlu memikirkan fungsi hash atau bagaimana partisi dikelola.
Mongodb
MongoDB mendistribusikan data ke berbagai server melalui konsep sharding. Data dipartisi berdasarkan shard key, yang harus dipilih dengan cermat untuk menghindari distribusi yang tidak merata.
Biasanya, shard key harus memiliki kardinalitas tinggi dan merupakan kolom yang sering digunakan dalam kueri. Pertanyaan wawancara MongoDB ini mencakup hampir semua topik pentaing, termasuk sharding.
Apache Cassandra
Cassandra partitioner adalah algoritme hashing yang menentukan node mana dalam suatu klaster yang harus menyimpan partisi tertentu. Kunci partisi diurai melalui algoritme untuk menghasilkan token. Token ini kemudian dibandingkan dengan nilai token yang ditetapkan pada node. Akhirnya, data disimpan pada node yang cocok dengan token tersebut.
Algoritme partisi yang umum termasuk Murmur3Partitioner, RandomPartitioner, dan ByteOrderedPartitioner.
Bagaimana Cara Menerapkan Pemartisian Data?
Sekarang, mari kita bahas langkah-langkah yang diperlukan untuk menerapkan pemartisian data dengan benar.
Langkah 1: Pahami data dan pola akses
Nilailah secara menyeluruh bagaimana aplikasi Anda mengkueri basis data, data apa yang sering diakses, ukuran data, dan hambatan kinerja. Wawasan ini akan membantu Anda menetapkan tujuan yang jelas untuk pemartisian dan mengidentifikasi kolom kunci yang sering terlibat dalam operasi data.
Langkah 2: Pilih teknik pemartisian
Kita telah membahas teknik umum sebelumnya, dan berikut cara memilih di antaranya:
Pemartisian horizontal: Saat Anda memiliki jutaan hingga miliaran baris yang bila disimpan dalam satu tabel akan memicu masalah memori, pilihlah pemartisian horizontal. Ia menyimpan set baris yang berbeda di tabel berbeda.
Pemartisian vertikal: Jika sekelompok kolom sering diakses sementara yang lain jarang dikueri, Anda dapat menerapkan pemartisian vertikal untuk menyimpan kolom secara terpisah berdasarkan pola aksesnya.
Pendekatan hibrida: Saat Anda memiliki dataset yang lebih besar yang mengharuskan pengurangan jumlah baris sekaligus mengoptimalkan kueri untuk subset kolom, pilih pendekatan hibrida. Ini menggabungkan kelebihan pemartisian horizontal dan vertikal.
Langkah 3: Buat partisi
Berikut adalah contoh kueri SQL untuk membuat partisi menggunakan pemartisian hash.
CREATETABLE employees (
emp_id INTNOTNULL,
name VARCHAR(30),
hired DATENOTNULLDEFAULT'2024-01-01',
job_id INT,
location_id INT)PARTITIONBYHASH(location_id)
PARTITIONS 4;Didukung oleh
Pada kode di atas, kolom ‘location_id’ dilewatkan ke fungsi hash, dan keluarannya menentukan partisi tempat rekaman harus ditempatkan. Baris kode partitions 4 menentukan total jumlah partisi yang harus dibuat.
Tandai sebagai favorit lembar contekan SQL Dasar ini untuk merujuk sintaks inti SQL saat Anda mengimplementasikan partisi.
Langkah 4: Pantau dan optimalkan partisi
Pantau secara berkelanjutan operasi data Anda dan pastikan partisi terbaru dan valid.
Seiring skala aplikasi, Anda mungkin perlu menambahkan lebih banyak partisi atau memilih pendekatan berbeda, seperti partisi hibrida, untuk mengakomodasi kebutuhan yang berubah.
Pastikan ukuran dan strategi partisi menguntungkan operasi yang sering dilakukan pada basis data.
Pastikan data terdistribusi merata di antara partisi; jika tidak, Anda mungkin perlu menyeimbangkannya kembali.
Tantangan dan Pertimbangan dalam Pemartisian Data
Optimalisasi datang dengan pertukaran dan tantangan, seperti halnya di dunia perangkat lunak. Berikut beberapa hal yang perlu Anda pertimbangkan:
Kemiringan partisi (partition skew): Partition skew berarti beberapa partisi menerima lebih banyak data dan pekerjaan pemrosesan sementara yang lain sering menganggur. Untuk menghindarinya, pilih kunci partisi dan strategi yang tepat yang mendistribusikan data secara merata ke seluruh partisi.
Beban pemeliharaan:Seiring pertumbuhan data, Anda perlu mengevaluasi ulang strategi pemartisian yang ada dan memastikan strategi tersebut relevan dengan data saat ini. Jika tidak, Anda mungkin perlu melakukan repartisi atau menggabungkan partisi.
Migrasi data: Dalam hal memigrasikan data Anda ke arsitektur baru, diperlukan kehati-hatian ekstra untuk memastikan bahwa partisi kompatibel dengan lingkungan baru. Selain itu, memindahkan data antar partisi melibatkan kompleksitas seperti mengelola konsistensi data di seluruh shard.
Kurva belajar yang curam: Pemartisian data menambah kompleksitas pada sistem atau arsitektur cloud. Tidak mudah untuk mengkueri, memigrasikan, atau menganalisisnya, sehingga menghasilkan kurva belajar yang curam bagi pemula.
Praktik Terbaik untuk Pemartisian Data
Seperti yang Anda lihat, pemartisian data menjadi kompleks seiring pertumbuhan volume data. Namun, menerapkan praktik ini akan memastikan bahwa pemartisian meningkatkan efisiensi tanpa mengorbankan kinerja.
Selaraskan partisi dengan pola kueri:Memilih strategi pemartisian dan kunci partisi yang tepat dapat secara signifikan meningkatkan kinerja basis data. Pahami operasi data dan pola kueri yang paling umum di basis data Anda, dan pilih kunci partisi yang sering terlibat dalam kueri sekaligus memastikan distribusi data yang merata.
Pantau secara berkala: Saat ini, aplikasi bersifat dinamis dan terus berkembang mengikuti tren dan permintaan yang berubah. Karena itu, penting untuk secara berkala memantau partisi Anda agar selaras dengan pola akses saat ini dan melakukan repartisi bila diperlukan.
Minimalkan overhead: Mengelola partisi secara manual dalam skala besar itu kompleks. Namun, basis data NoSQL seperti Apache Cassandra dan Amazon DynamoDB mengotomatisasi prosesnya tanpa membutuhkan banyak kerja ekstra. Selain itu, beberapa alat otomatisasi menyesuaikan partisi seiring skala data, memungkinkan repartisi atau penggabungan partisi sesuai kebutuhan Anda.
Kesimpulan
Pemartisian data yang efektif sangat penting untuk menjaga kinerja dan skalabilitas seiring pertumbuhan data Anda. Dengan strategi yang tepat, Anda dapat mengurangi latensi kueri, mengoptimalkan penyimpanan, dan menyederhanakan pemeliharaan. Ini adalah langkah praktis dengan dampak yang terukur.
Untuk pendalaman tentang bagaimana pemartisian memungkinkan sistem terdistribusi melakukan skala, lihat panduan tentang partisi Kafka. Untuk memahami bagaimana struktur relasional memengaruhi keputusan pemartisian, mulai dari kursus basis data relasional ini.
Srujana adalah penulis lepas di bidang teknologi dengan gelar sarjana Ilmu Komputer. Menulis tentang berbagai topik, termasuk data science, komputasi awan, pengembangan, pemrograman, keamanan, dan banyak lainnya adalah hal yang alami baginya. Ia menyukai sastra klasik dan menjelajahi destinasi baru.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Apakah Anda membangun aplikasi berfokus pada pelanggan atau menjalankan pipeline analitik yang kompleks, satu hal menjadi jelas: cara Anda menyimpan dan mengakses data dapat menentukan kinerja—baik atau buruk.
Saya telah melihat langsung betapa lebih mulusnya sistem berjalan saat data disusun dengan matang, dan di situlah pemartisian data berperan. Ini adalah salah satu teknik yang dapat secara drastis meningkatkan kecepatan kueri, efisiensi penyimpanan, dan skalabilitas.
Dalam tulisan ini, saya akan menjelaskan pemartisian data, berbagai jenis yang tersedia, dan praktik terbaik yang saya pelajari sepanjang jalan.
Apa itu Pemartisian Data?
Pemartisian data adalah teknik untuk membagi kumpulan data besar menjadi bagian-bagian yang lebih kecil dan mudah dikelola yang disebut partisi. Setiap partisi berisi subset data dan didistribusikan ke beberapa node atau server. Partisi-partisi ini dapat disimpan, dikueri, dan dikelola sebagai tabel terpisah, meskipun secara logis tetap milik kumpulan data yang sama.
Pemartisian data meningkatkan kinerja dan skalabilitas basis data. Misalnya, mencari satu titik data di seluruh tabel memakan waktu lebih lama dan menggunakan lebih banyak sumber daya dibandingkan mencari di partisi tertentu. Itulah sebabnya data disimpan sebagai partisi.
Jenis-Jenis Pemartisian Data
Pemartisian data mencakup berbagai jenis, masing-masing dengan strategi dan manfaat unik. Di bagian ini, saya membahas jenis yang paling umum.
Pemartisian horizontal
Alih-alih menyimpan semua data dalam satu tabel, pemartisian horizontal membagi data berdasarkan baris, artinya kumpulan baris yang berbeda disimpan sebagai partisi.
Semua partisi pada pemartisian horizontal berisi set kolom yang sama tetapi kelompok baris yang berbeda.
Suhu
Negara Bagian
Negara
Musim
-30° F
Alaska
AS
Musim dingin
48.2° F
Queensland
Australia
Musim panas
100° F
Andhra Pradesh
India
Musim panas
35° F
California
AS
Musim dingin
96° F
Texas
AS
Musim panas
62° F
Tasmania
Australia
Musim dingin
Pemartisian horizontal berdasarkan negara:
Suhu
Negara Bagian
Negara
Musim
-30° F
Alaska
AS
Musim dingin
35° F
California
AS
Musim dingin
35° F
California
AS
Musim dingin
Suhu
Negara Bagian
Negara
Musim
48.2° F
Queensland
Australia
Musim panas
62° F
Tasmania
Australia
Musim dingin
Suhu
Negara Bagian
Negara
Musim
100° F
Andhra Pradesh
India
Musim panas
Pemartisian vertikal
Pemartisian vertikal membagi data berdasarkan kolom, sehingga setiap partisi berisi jumlah baris yang sama namun lebih sedikit kolom.
Kunci partisi atau kolom utama akan ada di setiap partisi untuk menjaga hubungan logis.
Pemartisian vertikal populer ketika informasi sensitif perlu disimpan terpisah dari data reguler. Ini memungkinkan kolom sensitif disimpan dalam satu partisi dan data standar di partisi lain.
Kasus penggunaan umum lainnya adalah mengelompokkan kolom yang sering diperbarui ke dalam satu partisi dan sisanya di partisi terpisah.
Emp_id
Emp_name
Jabatan
Emp_email
Emp_phone
Emp_salary
z0yu9h
Alex
Data scientist
[email protected]
+101 890 456
250K
f8o5pj
Adam
Data engineer
[email protected]
+630 789 365
230K
z006yu
Matt
Data analyst
[email protected]
+857 342 937
166K
a6u895
Elina
Ops engineer
[email protected]
+892 494 782
190K
g68w90
Joseph
Software engineer
[email protected]
+852 603 389
210K
Emp_idadalah pengenal unik pada tabel di atas, jadi semua partisi memilikinya.Partisi 1:
Emp_id
Emp_name
Jabatan
Emp_email
z0yu9h
Alex
Data scientist
[email protected]
f8o5pj
Adam
Data engineer
[email protected]
z006yu
Matt
Data analyst
[email protected]
a6u895
Elina
Ops engineer
[email protected]
g68w90
Joseph
Software engineer
[email protected]
Partisi 2:
Emp_id
Emp_phone
Emp_salary
z0yu9h
+101 890 456
250K
f8o5pj
+630 789 365
230K
z006yu
+857 342 937
166K
a6u895
+892 494 782
190K
g68w90
+852 603 389
210K
Pemartisian rentang
Pemartisian rentang membagi data berdasarkan rentang nilai untuk kolom tertentu.
Biasanya, setiap partisi memiliki batas bawah dan atas untuk kolom kunci, dan sebuah rekaman yang berada dalam rentang ini akan ditetapkan ke partisi tersebut.
Product_id
Tanggal
Laba
z0yu9h
2021-03-17
$100K
f8o5pj
2022-04-04
$234K
z006yu
2022-09-13
$789K
a6u895
2021-07-23
$237K
g68w90
2022-02-26
$2345K
Partisi 1:
product_id
Tanggal
Laba
z0yu9h
2021-03-17
$100K
a6u895
2021-07-23
$237K
Partisi 2:
product_id
Tanggal
Laba
f8o5pj
2022-04-04
$234K
z006yu
2022-09-13
$789K
Pemartisian hash
Sebuah fungsi hash diterapkan pada kunci partisi, dan keluarannya menentukan rekaman mana yang harus disimpan di partisi mana. Pada teknik ini, jumlah partisi ditentukan sebelumnya.
Sisa hasil pembagian nilai hash dengan jumlah partisi menentukan partisi mana tempat rekaman tersebut harus disimpan. Mari kita lihat contohnya:
z0yu9h,hash(‘z0yu9h’) = 101dan jumlah partisi = 4, maka 101%4 = 1. Jadi, rekaman ini disimpan di partisi pertama.Dengan cara ini, nilai hash dihitung untuk kolom kunci partisi, dibagi dengan jumlah partisi, dan hasilnya menentukan partisi akhir.
Pemartisian daftar
Prosedurnya mirip dengan pemartisian rentang, tetapi alih-alih membagi data berdasarkan rentang nilai, pemartisian daftar membagi data berdasarkan sekumpulan nilai yang telah ditentukan.
Ambil kembali tabel suhu sebagai contoh.
Suhu
Negara Bagian
Negara
Musim
30° F
Alaska
AS
Musim dingin
48.2° F
Queensland
Australia
Musim panas
100° F
Andhra Pradesh
India
Musim panas
35° F
California
AS
Musim dingin
96° F
Texas
AS
Musim panas
62° F
Tasmania
Australia
Musim dingin
Pada data di atas, kolom ‘Musim’ berisi daftar nilai
[‘winter’, ‘summer’]. Jadi, pemartisian daftar berdasarkan musim terlihat seperti berikut:Partisi 1:
Suhu
Negara Bagian
Negara
Musim
30° F
Alaska
AS
Musim dingin
35° F
California
AS
Musim dingin
62° F
Tasmania
Australia
Musim dingin
Partisi 2:
Suhu
Negara Bagian
Negara
Musim
48.2° F
Queensland
Australia
Musim panas
100° F
Andhra Pradesh
India
Musim panas
96° F
Texas
AS
Musim panas
Pemartisian komposit
Partisi komposit adalah kombinasi dua teknik pemartisian. Sebuah tabel pertama-tama dibagi menggunakan satu strategi, lalu setiap partisi dibagi lagi menggunakan teknik lain.
Strategi pemartisian sering dibahas dalam wawancara teknis—lihat pertanyaan wawancara DBA teratas untuk 2025.
Kasus Penggunaan Pemartisian Data
Sekarang setelah kita mengevaluasi berbagai jenis strategi pemartisian, mari kita lihat kapan pemartisian data berguna.
Basis data terdistribusi
Sistem terdistribusi adalah kumpulan node yang secara fisik berada di server terpisah tetapi terhubung melalui jaringan. Contohnya termasuk Apache Cassandra, Amazon DynamoDB, dan Google Bigtable.
Sistem-sistem ini secara internal menggunakan pemartisian data untuk mengatur dan mendistribusikan data ke seluruh node.
Operasi OLAP
OLAP merepresentasikan data multidimensi sebagai kubus, memungkinkan pengguna mengeksplorasi data dari berbagai sudut. Meskipun kubus ini merepresentasikan data yang sudah diagregasi sebelumnya, data dasarnya tetap sangat besar, sehingga kueri perlu dioptimalkan lebih lanjut menggunakan pemartisian data.
Sebagai contoh, menerapkan pemartisian kubus (sebuah teknik pemartisian data) membagi data menjadi kubus-kubus yang lebih kecil berdasarkan kriteria tertentu. Saat Anda mengkueri data, pencarian dilakukan pada kubus tertentu dengan melewati yang tidak relevan, sehingga mengurangi operasi I/O.
Demikian pula, pemartisian dimensi dapat diterapkan untuk membagi data berdasarkan level, hierarki, atau kolom.
Manajemen log
Log berisi informasi tentang peristiwa, transaksi, dan operasi yang terjadi dalam sebuah sistem. Log digunakan untuk melacak kegagalan, bug, kasus tepi, hingga pesan keberhasilan.
Pemartisian log mempercepat proses debug dan memberi Anda informasi yang diperlukan dengan lebih cepat. Misalnya, jika Anda mempartisi log berdasarkan periode waktu, Anda dapat dengan mudah mengambilnya berdasarkan tanggal, minggu, bulan, atau tahun.
Pipeline pembelajaran mesin
Dalam kasus penggunaan pembelajaran mesin, data dipartisi menjadi set pelatihan, validasi, dan pengujian. Pendekatan ini memastikan bahwa wawasan dari set pengujian tidak terungkap ke model selama pelatihan untuk menghindari overfitting.
Selain itu, jika data pelatihan sangat besar, satu mesin tidak dapat memproses dan memasukkan seluruh data ke dalam model. Jadi, data dibagi menjadi potongan-potongan dan dimasukkan ke model melalui pemartisian data.
Alat untuk Pemartisian Data
Pemartisian data dapat diterapkan di basis data SQL maupun NoSQL. Mari kita bahas di bagian ini.
Basis data SQL
PostgreSQL
PostgreSQL menawarkan dukungan bawaan untuk pemartisian rentang, daftar, dan hash. Misalnya, kueri berikut membuat partisi untuk setiap tahun guna mengakses laba penjualan dan total penjualan tiap tahun fiskal secara efisien.
MySQL
MySQL mendukung berbagai jenis pemartisian horizontal seperti rentang, daftar, hash, dan key partitioning. Untuk saat ini (versi 8.4), ini belum mendukung pemartisian vertikal.
Kueri MySQL di bawah ini mempartisi data karyawan menjadi tiga grup,
p1,p2, danp3, berdasarkan tanggal bergabung. Semua karyawan yang bergabung sebelum tahun 2000 masuk ke partisip1. Karyawan yang bergabung antara 2000 dan 2010 masuk ke partisip2, dan karyawan yang bergabung antara 2010 dan 2020 masuk ke partisip3.Microsoft SQL Server
SQL Server menawarkan fitur pemartisian melalui fungsi partisi dan skema partisi. Fungsi partisi menentukan bagaimana data dibagi, sementara skema partisi menentukan filegroup tempat partisi akan disimpan.
Pada kueri berikut:
sales_by_yearsales_filegroupfg01,fg02,fg03,fg04Fungsi partisi:
Skema partisi:
Di sini, file menyimpan data sebagai berikut:
fg01- tanggal sebelum ‘2024-01-01’,fg02- ‘2024-01-01’ hingga ‘2024-01-31’fg03- ‘2024-02-01’ hingga ‘2024-02-29’fg04- ‘2024-03-01’ hingga ‘2024-03-31’Karena kita menyebutkan
range rightpada kueri, setiap tanggal batas termasuk dalam partisi berikutnya.Jika Anda menggunakan SQL Server, tutorial SQL Server ini membahas konsep kunci dan alat untuk mengelola data terpartisi. Untuk jalur belajar terstruktur, jalur SQL Server Fundamentals memperkenalkan fitur inti yang dibutuhkan untuk membangun basis data SQL yang berperforma tinggi.
Basis data NoSQL
Amazon DynamoDB
DynamoDB secara otomatis menangani pemartisian secara internal. Saat Anda menulis sebuah item ke tabel DynamoDB, item tersebut melewati request router. Router mengurai kunci partisi dan menerapkan fungsi hash. Keluaran fungsi hash menentukan partisi spesifik tempat rekaman akan disimpan.
Seluruh proses ini diotomatisasi di dalam DynamoDB, sehingga pengguna tidak perlu memikirkan fungsi hash atau bagaimana partisi dikelola.
Mongodb
MongoDB mendistribusikan data ke berbagai server melalui konsep sharding. Data dipartisi berdasarkan shard key, yang harus dipilih dengan cermat untuk menghindari distribusi yang tidak merata.
Biasanya, shard key harus memiliki kardinalitas tinggi dan merupakan kolom yang sering digunakan dalam kueri. Pertanyaan wawancara MongoDB ini mencakup hampir semua topik pentaing, termasuk sharding.
Apache Cassandra
Cassandra partitioner adalah algoritme hashing yang menentukan node mana dalam suatu klaster yang harus menyimpan partisi tertentu. Kunci partisi diurai melalui algoritme untuk menghasilkan token. Token ini kemudian dibandingkan dengan nilai token yang ditetapkan pada node. Akhirnya, data disimpan pada node yang cocok dengan token tersebut.
Algoritme partisi yang umum termasuk
Murmur3Partitioner,RandomPartitioner, danByteOrderedPartitioner.Bagaimana Cara Menerapkan Pemartisian Data?
Sekarang, mari kita bahas langkah-langkah yang diperlukan untuk menerapkan pemartisian data dengan benar.
Langkah 1: Pahami data dan pola akses
Nilailah secara menyeluruh bagaimana aplikasi Anda mengkueri basis data, data apa yang sering diakses, ukuran data, dan hambatan kinerja. Wawasan ini akan membantu Anda menetapkan tujuan yang jelas untuk pemartisian dan mengidentifikasi kolom kunci yang sering terlibat dalam operasi data.
Langkah 2: Pilih teknik pemartisian
Kita telah membahas teknik umum sebelumnya, dan berikut cara memilih di antaranya:
Langkah 3: Buat partisi
Berikut adalah contoh kueri SQL untuk membuat partisi menggunakan pemartisian hash.
Pada kode di atas, kolom ‘location_id’ dilewatkan ke fungsi hash, dan keluarannya menentukan partisi tempat rekaman harus ditempatkan. Baris kode
partitions 4menentukan total jumlah partisi yang harus dibuat.Tandai sebagai favorit lembar contekan SQL Dasar ini untuk merujuk sintaks inti SQL saat Anda mengimplementasikan partisi.
Langkah 4: Pantau dan optimalkan partisi
Tantangan dan Pertimbangan dalam Pemartisian Data
Optimalisasi datang dengan pertukaran dan tantangan, seperti halnya di dunia perangkat lunak. Berikut beberapa hal yang perlu Anda pertimbangkan:
Praktik Terbaik untuk Pemartisian Data
Seperti yang Anda lihat, pemartisian data menjadi kompleks seiring pertumbuhan volume data. Namun, menerapkan praktik ini akan memastikan bahwa pemartisian meningkatkan efisiensi tanpa mengorbankan kinerja.
Kesimpulan
Pemartisian data yang efektif sangat penting untuk menjaga kinerja dan skalabilitas seiring pertumbuhan data Anda. Dengan strategi yang tepat, Anda dapat mengurangi latensi kueri, mengoptimalkan penyimpanan, dan menyederhanakan pemeliharaan. Ini adalah langkah praktis dengan dampak yang terukur.
Untuk pendalaman tentang bagaimana pemartisian memungkinkan sistem terdistribusi melakukan skala, lihat panduan tentang partisi Kafka. Untuk memahami bagaimana struktur relasional memengaruhi keputusan pemartisian, mulai dari kursus basis data relasional ini.