إصدار rqlite 7.0 ، نظام إدارة قواعد البيانات الموزع المتسامح مع الأخطاء والمبني على SQLite

تم إطلاق سراح DBMS rqlite 7.0 الموزع، والذي يستخدم SQLite كمحرك تخزين ويسمح لك بتنظيم عمل المجموعة من المخازن المتزامنة مع بعضها البعض. إحدى ميزات rqlite هي سهولة التثبيت والنشر والصيانة للتخزين الموزع المتسامح مع الأخطاء، وهو مشابه إلى حد ما لـ etcd وConsul، ولكن باستخدام نموذج بيانات علائقية بدلاً من تنسيق المفتاح/القيمة. كود المشروع مكتوب بلغة Go ويتم توزيعه بموجب ترخيص MIT.

للحفاظ على جميع العقد في حالة متزامنة، يتم استخدام خوارزمية توافق الطوافة. يستخدم Rqlite مكتبة SQLite الأصلية وبرنامج تشغيل go-sqlite3، حيث يتم تشغيل طبقة تقوم بمعالجة طلبات العميل وإجراء النسخ المتماثل إلى العقد الأخرى ومراقبة تحقيق الإجماع بشأن اختيار العقدة الرائدة.

لا يمكن إجراء تغييرات على قاعدة البيانات إلا عن طريق العقدة التي تم تحديدها كقائدة، ولكن يمكن أيضًا إرسال الاتصالات مع عمليات الكتابة إلى العقد الأخرى في المجموعة، والتي ستعيد عنوان القائد لتكرار الطلب (في الإصدار التالي وعد بإضافة إعادة التوجيه التلقائي للطلبات إلى القائد). ينصب التركيز الرئيسي على التسامح مع الخطأ، وبالتالي فإن نظام إدارة قواعد البيانات (DBMS) يتوسع فقط من خلال عمليات القراءة، وعمليات الكتابة هي عنق الزجاجة. من الممكن تشغيل مجموعة rqlite من عقدة واحدة ويمكن استخدام هذا الحل لتوفير الوصول إلى SQLite عبر HTTP دون توفير التسامح مع الخطأ.

لا يتم تخزين بيانات SQLite الموجودة على كل عقدة في ملف، ولكن في الذاكرة. على مستوى الطبقة مع تنفيذ بروتوكول Raft، يتم الاحتفاظ بسجل لجميع أوامر SQLite التي تؤدي إلى تغييرات في قاعدة البيانات. يتم استخدام هذا السجل أثناء النسخ المتماثل (النسخ المتماثل على مستوى إعادة إنتاج الطلبات على العقد الأخرى)، أو عند بدء عقدة جديدة، أو للتعافي من فقدان الاتصال. لتقليل حجم السجل، يتم استخدام التعبئة التلقائية، والتي تبدأ بعد عدد محدد من التغييرات وتؤدي إلى تثبيت لقطة، فيما يتعلق بالبدء في الاحتفاظ بسجل جديد (حالة قاعدة البيانات في الذاكرة هي مطابقة لللقطة + سجل التغيير المتراكم).

مميزات ركلايت:

  • من السهل نشر مجموعة، دون الحاجة إلى تثبيت SQLite منفصل.
  • القدرة على الحصول بسرعة على تخزين SQL المنسوخ.
  • جاهز للاستخدام في مشاريع الإنتاج (درجة الإنتاج).
  • وجود واجهة برمجة التطبيقات HTTP(S) التي تسمح لك بتحديث البيانات في الوضع الدفعي وتحديد العقدة الرائدة للمجموعة. يتم أيضًا توفير واجهة سطر الأوامر ومكتبات العملاء للغات البرمجة المختلفة.
  • توفر خدمة تحديد العقد الأخرى، مما يسمح لك بإنشاء مجموعات بشكل ديناميكي.
  • دعم لتشفير تبادل البيانات بين العقد.
  • القدرة على تكوين مستوى التحقق من أهمية واتساق البيانات عند القراءة.
  • القدرة الاختيارية على توصيل العقد في وضع القراءة فقط، والتي لا تشارك في تحديد الإجماع وتستخدم لزيادة قابلية التوسع للمجموعة لعمليات القراءة.
  • دعم نموذج المعاملات الخاص بك استنادًا إلى دمج الأوامر في طلب واحد (المعاملات المستندة إلى البدء والالتزام والتراجع والحفظ والإصدار غير مدعومة).
  • دعم لإنشاء نسخ احتياطية ساخنة.

في الإصدار الجديد:

  • تمت إضافة دعم لتجميع rqlite التلقائي باستخدام خدمة الكشف عن العقدة الجديدة التي يمكن أن تعمل على أساس Consul والتخزين الموزع وما إلى ذلك. تسمح الخدمة لعقد rqlite بالعثور على بعضها البعض تلقائيًا - يحتاج المسؤول فقط إلى تشغيل عدة عقد على خوادم مختلفة، وتحديد عنوان مجموعة Consul أو عنوان etcd المشترك (على سبيل المثال، "example.com:8500")، وسيتم تحديد العقد تلقائيًا مجتمعة في كتلة. تقوم العقدة الرائدة بتحديث المعلومات حول عنوانها بشكل دوري في مخزن القنصل أو إلخ، مما يسمح لك بتغيير القائد لاحقًا دون الحاجة إلى إعادة تكوين العقد الأخرى، بالإضافة إلى إضافة عقد جديدة حتى بعد تغيير القائد. تم إيقاف خدمة وضع الاكتشاف القديمة التي تعمل على AWS Lambda.
  • تسمح واجهة CLI بتحديد عدة مضيفين في وقت واحد - إذا كانت العقدة الأولى غير متاحة، فسيتم الاتصال بالمضيفين التاليين.
  • تمت إعادة صياغة التعليمات البرمجية الخاصة بتحليل وسيطات سطر الأوامر rqlited.
  • تم إيقاف حزمة protobuf المهملة.
  • تم استبدال مخزن BoltDB المستخدم في تنفيذ بروتوكول Raft بـ bbolt، وهو شوكة من مشروع etcd.

المصدر: opennet.ru

إضافة تعليق