𝗦𝗵𝗮𝗿𝗱𝗶𝗻𝗴 𝗦𝗲𝗰𝗮𝗿𝗮 𝗦𝗶𝗻𝗴𝗸𝗮𝘁

Sharding membagi database besar menjadi potongan-potongan kecil yang disebut shard. Alih-alih satu database masif, Anda mendistribusikan data ke beberapa server.

Metode ini membantu Anda:

  • Menangani lebih banyak data
  • Memproses lebih banyak permintaan
  • Mengurangi beban pada mesin tunggal
  • Melakukan penskalaan horizontal

Anda harus memutuskan bagaimana cara mengarahkan data ke shard yang benar. Berikut adalah strategi utamanya:

  1. Sharding Berbasis Rentang (Range Based Sharding) Anda membagi data berdasarkan rentang nilai. Contoh:
  • Shard 1: Pengguna 1 sampai 3000
  • Shard 2: Pengguna 3001 sampai 6000
  • Shard 3: Pengguna 6001 sampai 10000
  1. Sharding Berbasis Hash (Hash Based Sharding) Anda menggunakan fungsi matematika untuk memilih shard. Contoh: Anda menggunakan operator modulo pada ID pengguna. Jika hasilnya 0, data masuk ke Shard 1. Jika hasilnya 1, data masuk ke Shard 2. Ini menyebarkan data secara merata.

  2. Sharding Berbasis Direktori (Directory Based Sharding) Anda menggunakan tabel pencarian (lookup table) untuk menemukan shard yang benar. Contoh: Sebuah sistem notifikasi mencari nama aplikasi seperti "YouTube" di dalam direktori. Direktori tersebut memberi tahu sistem untuk menggunakan "Shard 1". Ini bekerja seperti folder dalam sistem file.

  3. Sharding Geografis (Geographical Sharding) Anda menyimpan data berdasarkan lokasi. Contoh:

  • Pengguna India masuk ke shard India.
  • Pengguna USA masuk ke shard USA.
  • Pengguna Eropa masuk ke shard EU.
  1. Sharding Dinamis (Dynamic Sharding) Anda tidak melakukan hardcode pada rentang atau hash. Aplikasi Anda memeriksa tabel konfigurasi saat runtime. Anda dapat menambahkan shard baru tanpa mengubah kode Anda.

  2. Sharding Hibrida (Hybrid Sharding) Anda menggabungkan berbagai metode untuk mendapatkan hasil yang lebih baik. Pola yang umum adalah Berbasis Direktori + Berbasis Hash. Pertama, Anda menggunakan direktori untuk menemukan sebuah grup. Kemudian, Anda menggunakan hash untuk menemukan shard spesifik di dalam grup tersebut. Ini memberi Anda fleksibilitas sekaligus keseimbangan.

Sumber: https://dev.to/code_with_aravind/sharding-in-a-nutshell-5f6b