𝗦𝗵𝗮𝗿𝗱𝗶𝗻𝗴 𝗦𝗲𝗰𝗮𝗿𝗮 𝗥𝗶𝗻𝗴𝗸𝗮𝘀

Sharding membahagikan pangkalan data yang besar kepada bahagian-bahagian kecil yang dipanggil shard. Daripada menggunakan satu pangkalan data yang sangat besar, anda mengagihkan data merentasi pelbagai pelayan.

Kaedah ini membantu anda:

  • Mengendalikan lebih banyak data
  • Memproses lebih banyak permintaan
  • Mengurangkan beban pada mesin tunggal
  • Melakukan penskalaan secara mendatar

Anda mesti memutuskan cara untuk menghalakan data ke shard yang betul. Berikut adalah strategi-strategi utama:

  1. Sharding Berasaskan Julat (Range Based Sharding) Anda membahagikan data berdasarkan julat nilai. Contoh:
  • Shard 1: Pengguna 1 hingga 3000
  • Shard 2: Pengguna 3001 hingga 6000
  • Shard 3: Pengguna 6001 hingga 10000
  1. Sharding Berasaskan Hash (Hash Based Sharding) Anda menggunakan fungsi matematik untuk memilih shard. Contoh: Anda menggunakan operator modulo pada ID pengguna. Jika hasilnya ialah 0, data akan pergi ke Shard 1. Jika hasilnya ialah 1, ia akan pergi ke Shard 2. Ini mengagihkan data secara sekata.

  2. Sharding Berasaskan Direktori (Directory Based Sharding) Anda menggunakan jadual carian untuk mencari shard yang betul. Contoh: Sebuah sistem pemberitahuan mencari nama aplikasi seperti "YouTube" dalam sebuah direktori. Direktori tersebut memberitahu sistem untuk menggunakan "Shard 1". Ini berfungsi seperti folder dalam sistem fail.

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

  • Pengguna India pergi ke shard India.
  • Pengguna USA pergi ke shard USA.
  • Pengguna Eropah pergi ke shard EU.
  1. Sharding Dinamik (Dynamic Sharding) Anda tidak menetapkan (hardcode) julat atau hash secara tetap. Aplikasi anda menyemak jadual konfigurasi semasa waktu larian (runtime). Anda boleh menambah shard baharu tanpa mengubah kod anda.

  2. Sharding Hibrid (Hybrid Sharding) Anda menggabungkan kaedah-kaedah untuk mendapatkan hasil yang lebih baik. Corak yang biasa digunakan ialah Berasaskan Direktori + Berasaskan Hash. Pertama, anda menggunakan direktori untuk mencari kumpulan. Kemudian, anda menggunakan hash untuk mencari shard khusus dalam kumpulan tersebut. Ini memberikan anda fleksibiliti dan keseimbangan.

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