Apa Itu Database Sharding?
Sharding adalah teknik horizontal partitioning di mana data dibagi ke beberapa instance database (shard) berdasarkan shard key. Setiap shard menyimpan subset data dan berjalan di server terpisah.
Strategi Sharding
- Range-based: berdasarkan rentang nilai (misal user ID 1-1000 di shard 1)
- Hash-based: menggunakan fungsi hash untuk distribusi merata
- Directory-based: lookup table menentukan shard untuk setiap data
- Geographic: berdasarkan lokasi geografis pengguna
Tantangan Sharding
Cross-shard queries menjadi kompleks, join antar shard mahal, dan resharding saat pertumbuhan tidak merata membutuhkan downtime atau migrasi besar.
Alternatif Sebelum Sharding
Sebelum sharding, coba query optimization, indexing yang tepat, read replicas, dan caching. Sharding adalah langkah terakhir karena kompleksitasnya tinggi.
Kesimpulan
Sharding adalah solusi powerful untuk scaling masif, namun harus diimplementasikan dengan perencanaan matang dan setelah opsi lain habis dicoba.