𝗦𝗵𝗮𝗿𝗱𝗶𝗻𝗴 𝗞𝗮 𝗫𝘂𝗹𝗮𝘀𝗮

Sharding ایک بڑے ڈیٹا بیس کو چھوٹے ٹکڑوں میں تقسیم کر دیتی ہے جنہیں shards کہا جاتا ہے۔ ایک بہت بڑے ڈیٹا بیس کے بجائے، آپ ڈیٹا کو متعدد سرورز پر تقسیم کر دیتے ہیں۔

یہ طریقہ آپ کی مدد کرتا ہے:

  • زیادہ ڈیٹا سنبھالنے میں
  • زیادہ درخواستوں (requests) پر کارروائی کرنے میں
  • ایک ہی مشین پر بوجھ کم کرنے میں
  • افقی طور پر اسکیل (scale horizontally) کرنے میں

آپ کو یہ فیصلہ کرنا ہوگا کہ ڈیٹا کو صحیح shard تک کیسے پہنچایا جائے۔ یہاں اہم حکمت عملیاں (strategies) دی گئی ہیں:

  1. رینج پر مبنی شارڈنگ (Range Based Sharding) آپ ویلیوز کی ایک رینج کی بنیاد پر ڈیٹا کو تقسیم کرتے ہیں۔ مثال:
  • Shard 1: صارفین 1 سے 3000 تک
  • Shard 2: صارفین 3001 سے 6000 تک
  • Shard 3: صارفین 6001 سے 10000 تک
  1. ہیش پر مبنی شارڈنگ (Hash Based Sharding) آپ شارڈ منتخب کرنے کے لیے ایک ریاضیاتی فنکشن (mathematical function) کا استعمال کرتے ہیں۔ مثال: آپ صارف کی ID پر modulo operator استعمال کرتے ہیں۔ اگر نتیجہ 0 ہو، تو ڈیٹا Shard 1 میں چلا جاتا ہے۔ اگر نتیجہ 1 ہو، تو یہ Shard 2 میں چلا جاتا ہے۔ اس سے ڈیٹا برابر تقسیم ہو جاتا ہے۔

  2. ڈائریکٹری پر مبنی شارڈنگ (Directory Based Sharding) آپ صحیح شارڈ تلاش کرنے کے لیے ایک lookup table کا استعمال کرتے ہیں۔ مثال: ایک نوٹیفکیشن سسٹم ڈائریکٹری میں "YouTube" جیسے ایپ کے نام کو تلاش کرتا ہے۔ ڈائریکٹری سسٹم کو "Shard 1" استعمال کرنے کا بتاتی ہے۔ یہ ایک فائل سسٹم فولڈر کی طرح کام کرتا ہے۔

  3. جغرافیائی شارڈنگ (Geographical Sharding) آپ مقام (location) کی بنیاد پر ڈیٹا اسٹور کرتے ہیں۔ مثال:

  • بھارت کے صارفین انڈیا کے shard میں جاتے ہیں۔
  • امریکہ کے صارفین USA کے shard میں جاتے ہیں۔
  • یورپی صارفین EU کے shard میں جاتے ہیں۔
  1. ڈائنامک شارڈنگ (Dynamic Sharding) آپ رینجز یا ہیشز کو ہارڈ کوڈ (hardcode) نہیں کرتے۔ آپ کی ایپلی کیشن رن ٹائم (runtime) پر ایک کنفیگریشن ٹیبل چیک کرتی ہے۔ آپ اپنے کوڈ کو تبدیل کیے بغیر نئے shards شامل کر سکتے ہیں۔

  2. ہائبرڈ شارڈنگ (Hybrid Sharding) آپ بہتر نتائج حاصل کرنے کے لیے مختلف طریقوں کو ملا دیتے ہیں۔ ایک عام طریقہ Directory Based + Hash Based ہے۔ پہلے، آپ ایک گروپ تلاش کرنے کے لیے ڈائریکٹری کا استعمال کرتے ہیں۔ پھر، آپ اس گروپ کے اندر مخصوص شارڈ تلاش کرنے کے لیے ہیش کا استعمال کرتے ہیں۔ یہ آپ کو لچک (flexibility) اور توازن (balance) دونوں فراہم کرتا ہے۔

ماخذ: https://dev.to/code_with_aravind/sharding-in-a-nutshell-5f6b