القطع الناقص

Elliptics هو نظام تخزين بيانات موزع يعتمد على نظام المفتاح والقيمة، وهو مفتوح المصدر . بشكل افتراضي، هو جدول تجزئة موزع تقليدي (DHT) مع نسخ متعددة موزعة في مجموعات مختلفة (تجزئة موزعة). صُمم Elliptics لتلبية متطلبات مراكز البيانات المتعددة ومواقع التخزين الموزعة فعليًا عند تخزين كميات هائلة من الملفات المتوسطة والكبيرة (من 1  كيلوبايت إلى غيغابايت، ومن آلاف إلى مليارات العناصر).

تاريخ

تم إنشاء نظام الملفات Elliptics في عام 2007، في البداية كجزء من نظام POHMELFS، [ 1 ] [ 2 ] وهو نظام ملفات موزع متماسك التخزين المؤقت، طوّره مبرمج لينكس يفغيني بولياكوف. أُعلن عن POHMELFS في 31 يناير 2008، [ 3 ] ودُمج في منطقة التجهيز لشجرة مصدر نواة لينكس في الإصدار 2.6.30، الذي صدر في 9 يونيو 2009. لم يُستخدم نظام الملفات عمليًا، وأُزيل مرة أخرى في فبراير 2012. [ 4 ]

في عام ٢٠٠٨، انفصل مشروع Elliptics ليصبح مشروعًا مستقلًا. جرّب بولياكوف مناهج مختلفة لأنظمة تخزين البيانات الموزعة، بعضها لم يكن مناسبًا لتعقيده، وبعضها الآخر كان بعيدًا جدًا عن الواقع ( مثل BerkeleyDB و LevelDB و Kyoto Cabinet كخوادم خلفية للملفات المتوسطة والكبيرة، ومراكز بيانات مختلفة ضمن حلقة DHT واحدة، وعدم إمكانية الاسترداد النهائي). يتميز Elliptics بنظام متسق نهائيًا مع نسخ متعددة يتم تحديثها بالتوازي ، والتي قد تتواجد في مواقع موزعة فعليًا. يحتوي Elliptics على طبقات متعددة، بدءًا من وحدة تخزين منخفضة المستوى على القرص (تُسمى Eblob) وصولًا إلى ذاكرات التخزين المؤقت SLRU وبروتوكول التوجيه الديناميكي. [ ٥ ]

في عام 2012، أعلن بولياكوف عن نسخة جديدة من برنامج POHMELFS تعتمد على الإهليلجيات. [ 4 ]

اعتبارًا من عام 2014، يتم استخدام Elliptics في خرائط Yandex ، وDisk، وMusic، وPhotos، وMarket، والبنية التحتية، [ 6 ] ومحرك بحث Sputnik و Coub .

بنيان

بشكل افتراضي، تُنشئ Elliptics جدول تجزئة موزعًا في مجموعة واحدة (نسخة طبق الأصل). قد تحتوي المجموعة على خادم واحد أو عدة خوادم، كما يمكن للخادم الفعلي أن يحتوي على مجموعات Elliptics متعددة (نسخ طبق الأصل) مخزنة على قواعد بيانات خلفية مختلفة. يمكن أن تتواجد المجموعات في مواقع فعلية مختلفة، مما يسمح بتلبية طلبات العملاء عندما تكون المواقع الأخرى غير متاحة. يمكن استخدام بروتوكول نظير إلى نظير (P2P) للوصول إلى البيانات مباشرةً من خوادم التخزين دون الحاجة إلى وسيط. تدعم Elliptics البرمجة النصية من جانب الخادم بلغات C++ و JavaScript و Python ، بالاعتماد على تقنية Cocaine ، وذاكرة التخزين المؤقت SLRU، وقواعد بيانات خلفية متعددة قابلة للتوصيل (تُعد eblob الأسرع للبيانات المتوسطة والكبيرة والأكثر شيوعًا).

تتصل عملاء Elliptics مباشرة بجميع خوادم التخزين مما يساعد على:

  • تنفيذ عملية البحث في O (1) طلب شبكة (طلب شبكة واحد لكل نسخة)
  • قم بتشغيل أوامر الكتابة/التحديث في نسخ متعددة بالتوازي

توجد العديد من واجهات برمجة التطبيقات (APIs) للوصول إلى البيانات:

  • مكتبة C++ غير متزامنة تعتمد على وعود الميزات
  • مكتبة بايثون
  • ربط Go
  • وكيل HTTP يسمى Rift مع حاويات و ACLs مبنية على مكتبة TheVoid (باستخدام boost::asio)
  • روابط إرلانج التي يقودها المجتمع

سمات

  • جداول تجزئة موزعة، بدون خوادم بيانات وصفية، قابلية توسع أفقي حقيقية
  • تكرار البيانات – يمكن تخزين النسخ المتماثلة في مواقع مادية مختلفة
  • نطاق الطلبات والطلبات بالجملة
  • أنظمة تخزين خلفية مختلفة للإدخال/الإخراج، وواجهة برمجة تطبيقات لإنشاء أنظمة تخزين خلفية منخفضة المستوى خاصة بك.
  • إعادة توزيع البيانات تلقائيًا في حالة إزالة أو إضافة عُقد
  • التعافي المستمر في نهاية المطاف
  • نموذج عنونة التجزئة المتسق
  • إحصائيات المجموعة
  • الواجهة الأمامية: HTTP؛ لغات البرمجة: C / C++ ، Go ، Python
  • دعم تنفيذ البرامج النصية من جانب الخادم (مكافئ لمشغل الكتابة)
  • ذاكرة تخزين مؤقتة موزعة بتقنية SLRU مع TTL
  • دعم البث المباشر من نظير إلى نظير (خوادم eblob والملفات فقط - يمكن للتطبيقات الخارجية مثل خادم الويب Nginx بث البيانات من ملفات كائنات eblob مباشرة إلى العملاء دون الحاجة إلى وسيط)

المشاكل والقيود

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

الوثائق

يتم توثيق مشروع Elliptics والمشاريع الداعمة له في ويكي المجتمع ( مؤرشف بتاريخ ٢١ يناير ٢٠٢٠ في Wayback Machine) . يحتوي الموقع على وثائق تصميم عالية المستوى، ودليل تعليمي، وتفاصيل دقيقة، وقاعدة معرفية. تُناقش مشاريع Elliptics والمشاريع ذات الصلة في مجموعة Google مفتوحة .

انظر أيضاً

مراجع

  1. "POHMELFS: نظام ملفات لينكس موزع جديد ولكنه قديم - Phoronix" . www.phoronix.com . تم الاطلاع عليه بتاريخ 8 مايو 2017 .
  2. "عودة POHMELFS [ LWN.net ] " . lwn.net . تم الاطلاع عليه بتاريخ 8 مايو 2017 .
  3. "المدخل 2008.01.31" . مؤرشف من الأصل في 6 أكتوبر 2008. تم الاطلاع عليه في 8 مايو 2017 .
  4. 1 2 إيفجيني بولياكوف (8 فبراير 2012). "pohmelfs: دعوة للإدماج" .
  5. "كيفية تحديد الأجهزة في فندكس: الإهليلجية" . تم الاسترجاع في 8 مايو 2017 .
  6. "القطع الناقص - تقنيات ياندكس" . api.yandex.com . تم الاطلاع عليه بتاريخ 8 مايو 2017 .
  • موقع Elliptics الرسمي، مؤرشف من الأصل بتاريخ 24-10-2019 ، تم الاطلاع عليه بتاريخ 12-04-2022.