rqlite 6.0 کی ریلیز، SQLite پر مبنی ایک تقسیم شدہ، غلطی برداشت کرنے والا DBMS

تقسیم شدہ DBMS rqlite 6.0 کی ریلیز پیش کی گئی ہے، جو SQLite کو اسٹوریج انجن کے طور پر استعمال کرتا ہے اور آپ کو مطابقت پذیر اسٹوریج کے کلسٹر کے کام کو منظم کرنے کی اجازت دیتا ہے۔ rqlite کی خصوصیات میں سے ایک تقسیم شدہ فالٹ ٹولرنٹ سٹوریج کی تنصیب، تعیناتی اور دیکھ بھال میں آسانی ہے، جو کسی حد تک etcd اور Consul سے ملتی جلتی ہے، لیکن کلیدی/قدر کی شکل کے بجائے متعلقہ ڈیٹا ماڈل کا استعمال کرنا ہے۔ پروجیکٹ کوڈ گو میں لکھا گیا ہے اور MIT لائسنس کے تحت تقسیم کیا گیا ہے۔

تمام نوڈس کو مطابقت پذیر حالت میں رکھنے کے لیے، Raft اتفاق رائے الگورتھم استعمال کیا جاتا ہے۔ Rqlite اصل SQLite لائبریری اور معیاری go-sqlite3 ڈرائیور کا استعمال کرتا ہے، جس کے اوپر ایک پرت لانچ کی جاتی ہے جو کلائنٹ کی درخواستوں پر کارروائی کرتی ہے، دوسرے نوڈس کی نقل تیار کرتی ہے اور معروف نوڈ کے انتخاب پر اتفاق رائے کے حصول کی نگرانی کرتی ہے۔

ڈیٹا بیس میں تبدیلی صرف اس نوڈ کے ذریعے کی جا سکتی ہے جسے لیڈر کے طور پر منتخب کیا جاتا ہے، لیکن تحریری کارروائیوں کے ساتھ کنکشن کلسٹر میں موجود دیگر نوڈس کو بھی بھیجے جا سکتے ہیں، جو درخواست کو دہرانے کے لیے لیڈر کا پتہ واپس کر دے گا (اگلے ورژن میں وہ لیڈر کو درخواستوں کی خودکار فارورڈنگ شامل کرنے کا وعدہ کریں)۔ بنیادی زور فالٹ ٹولرنس پر ہے، اس لیے DBMS صرف پڑھنے والے آپریشنز کے ساتھ اسکیل کرتا ہے، اور تحریری آپریشنز رکاوٹ ہیں۔ ایک ہی نوڈ سے rqlite کلسٹر چلانا ممکن ہے اور اس حل کو فالٹ ٹولرنس فراہم کیے بغیر HTTP پر SQLite تک رسائی فراہم کرنے کے لیے استعمال کیا جا سکتا ہے۔

ہر نوڈ پر SQLite ڈیٹا فائل میں محفوظ نہیں ہوتا بلکہ میموری میں ہوتا ہے۔ Raft پروٹوکول کے نفاذ کے ساتھ پرت کی سطح پر، تمام SQLite کمانڈز کا ایک لاگ رکھا جاتا ہے جو ڈیٹا بیس میں تبدیلیوں کا باعث بنتے ہیں۔ یہ لاگ نقل کے دوران استعمال کیا جاتا ہے (دوسرے نوڈس پر درخواستوں کو دوبارہ تیار کرنے کی سطح پر نقل)، ایک نیا نوڈ شروع کرنے، یا کنیکٹیویٹی کے نقصان سے بازیافت ہوتا ہے۔ لاگ کے سائز کو کم کرنے کے لیے، خودکار پیکیجنگ کا استعمال کیا جاتا ہے، جو ایک مخصوص تعداد میں تبدیلیوں کے بعد شروع ہوتا ہے اور ڈسک پر اسنیپ شاٹ کو فکس کرنے کی طرف لے جاتا ہے، جس کے سلسلے میں ایک نیا لاگ رکھنا شروع ہوتا ہے (میموری میں ڈیٹا بیس کی حالت اسنیپ شاٹ + جمع شدہ تبدیلی لاگ سے مماثل ہے)۔

rqlite کی خصوصیات:

  • علیحدہ SQLite انسٹالیشن کی ضرورت کے بغیر، کلسٹر کو تعینات کرنا آسان ہے۔
  • نقل شدہ ایس کیو ایل اسٹوریج کو تیزی سے حاصل کرنے کی صلاحیت۔
  • کام کرنے والے منصوبوں میں استعمال کے لیے تیار (پروڈکشن گریڈ)۔
  • HTTP(S) API کی موجودگی جو آپ کو بیچ موڈ میں ڈیٹا کو اپ ڈیٹ کرنے اور کلسٹر کے معروف نوڈ کا تعین کرنے کی اجازت دیتی ہے۔ یہ کمانڈ لائن انٹرفیس اور SQLite کے لیے بنائی گئی مختلف کلائنٹ لائبریریوں کو استعمال کرنے کی صلاحیت بھی فراہم کرتا ہے۔
  • دوسرے نوڈس کی شناخت کے لیے سروس کی دستیابی، آپ کو متحرک طور پر کلسٹر بنانے کی اجازت دیتی ہے۔
  • نوڈس کے درمیان ڈیٹا ایکسچینج کو خفیہ کرنے کے لیے معاونت۔
  • پڑھتے وقت ڈیٹا کی مطابقت اور مستقل مزاجی کو جانچنے کی سطح کو ترتیب دینے کی صلاحیت۔
  • صرف پڑھنے کے موڈ میں نوڈس کو جوڑنے کی اختیاری صلاحیت، جو اتفاق رائے کے تعین میں حصہ نہیں لیتے ہیں اور پڑھنے کی کارروائیوں کے لیے کلسٹر کی توسیع پذیری کو بڑھانے کے لیے استعمال ہوتے ہیں۔
  • ایک درخواست میں حکموں کو یکجا کرنے کی بنیاد پر آپ کی اپنی شکل کے لین دین کے لیے سپورٹ (BEGIN، COMMIT، ROLLBACK، SAVEPOINT اور ریلیز پر مبنی لین دین تعاون یافتہ نہیں ہیں)۔
  • گرم بیک اپ بنانے کے لیے سپورٹ۔

نئی ریلیز میں اہم آرکیٹیکچرل تبدیلیاں متعارف کرائی گئی ہیں جن کا مقصد کلسٹر کی قابل اعتمادی کو بڑھانا ہے اور پڑھنے اور لکھنے کی درخواستوں کو درست کلسٹر نوڈس پر روٹنگ کرنے کے عمل کو بہتر بنانا ہے۔ rqlite نوڈس اب Raft پروٹوکول کے ذریعے نوڈس کے درمیان قائم کردہ TCP کنکشن کا استعمال کرتے ہوئے آپس میں ایک سے زیادہ منطقی کنکشن ملٹی پلیکس کر سکتے ہیں۔ اگر کسی درخواست کو لیڈر اتھارٹی کی ضرورت ہوتی ہے لیکن اسے ثانوی نوڈ کو بھیجا جاتا ہے، تو ثانوی نوڈ لیڈر کے پتے کا تعین کر سکتا ہے اور رافٹ اتفاق رائے کے حساب کتاب کیے بغیر اسے کلائنٹ تک پہنچا سکتا ہے۔

تبدیلی نے علیحدہ میٹا ڈیٹا سنکرونائزیشن جزو کی ضرورت کو بھی ختم کر دیا اور Raft سٹیٹ اور میٹا ڈیٹا کی علیحدہ ہینڈلنگ کو ختم کر دیا۔ ثانوی نوڈز اب لیڈر نوڈ کو صرف اس وقت درخواستیں بھیجتے ہیں جب ضروری ہو، جب انہیں لیڈر نوڈ کا پتہ معلوم کرنے کی ضرورت ہو۔ API کلسٹر میں دیگر نوڈس کی حالت کے بارے میں معلومات حاصل کرنے کی صلاحیت فراہم کرتا ہے۔ ".sysdump" کمانڈ کو کمانڈ لائن انٹرفیس میں شامل کر دیا گیا ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں