"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > فهم أنواع البيانات المكررة الخالية من التعارض

فهم أنواع البيانات المكررة الخالية من التعارض

تم النشر بتاريخ 2024-09-03
تصفح:569

أنواع البيانات المكررة الخالية من التعارض (CRDTs) هي فئة من بنيات البيانات التي تتيح التعاون السلس ومزامنة البيانات في الأنظمة الموزعة، مما يسمح بالتحديثات التعاونية دون تعارض. تم تصميم CRDTs لتحقيق الاتساق النهائي عبر نسخ متماثلة متعددة من البيانات، مما يضمن أنه حتى عندما تحدث التحديثات بشكل مستقل، فإن جميع النسخ المتماثلة تتقارب إلى نفس الحالة دون الحاجة إلى آليات معقدة لحل الصراع.

في منشور المدونة هذا، سنتعمق في ماهية CRDTs، ونستكشف استخداماتها وأنواعها، ونفهم كيفية عملها، ونتعلم كيفية تنفيذها، مع التركيز على JavaScript ومكتبة Yjs القوية.

حالات استخدام CRDTs

تُعد فرق CRDT مفيدة بشكل خاص في السيناريوهات التي يكون فيها التعاون في الوقت الفعلي والدعم دون اتصال بالإنترنت أمرًا بالغ الأهمية:

  1. برامج تحرير النصوص التعاونية: يستخدم Google Docs وNotion وEtherpad بنيات تشبه CRDT للتحرير في الوقت الفعلي.
  2. أدوات التصميم التعاوني: تستخدم Figma، وهي أداة تصميم شائعة على شبكة الإنترنت، CRDTs لتمكين التعاون في الوقت الفعلي في مشاريع التصميم. يمكن للعديد من المصممين العمل على نفس الملف في وقت واحد، مع مزامنة التغييرات بسلاسة عبر جميع المستخدمين.
  3. قواعد البيانات الموزعة: يستخدم RxDB و Riak CRDTs للنسخ المتماثل الخالي من التعارض.
  4. ألعاب متعددة اللاعبين: للحفاظ على حالة اللعبة المتسقة بين اللاعبين.

أنواع CRDTs

هناك نوعان رئيسيان من CRDTs:

  1. CRDTs المستندة إلى الدولة: تعمل هذه على تكرار الحالة الكاملة لبنية البيانات. يتم الدمج عن طريق مقارنة حالات النسخ المتماثلة المختلفة والتوفيق بينها.
  2. وحدات CRDT القائمة على العمليات: تعمل على تكرار العمليات التي يتم إجراؤها على بنية البيانات. يتم الدمج عن طريق تطبيق عمليات من نسخ متماثلة مختلفة بطريقة تبادلية.

كيف تعمل CRDTs

تعمل CRDTs (أنواع البيانات المنسوخة الخالية من التعارضات) على مبادئ تضمن الاتساق النهائي عبر جميع النسخ المتماثلة للبيانات، حتى عند إجراء التحديثات بشكل متزامن أو عند حدوث أقسام الشبكة. دعونا نتعمق أكثر في الآليات:

الخصائص الرئيسية

  1. الإبدالية: تضمن هذه الخاصية أن ترتيب العمليات لا يؤثر على النتيجة النهائية. على سبيل المثال، في العداد CRDT، تؤدي الزيادة بمقدار 2 ثم بمقدار 3 إلى نفس النتيجة مثل الزيادة بمقدار 3 ثم بمقدار 2.
  2. الترابط: هذا يعني أن تجميع العمليات لا يهم. باستخدام المثال المضاد مرة أخرى، (1 2) 3 هو نفس 1 (2 3).
  3. العجز: تطبيق نفس العملية عدة مرات له نفس تأثير تطبيقها مرة واحدة. وهذا أمر بالغ الأهمية للتعامل مع الرسائل المكررة في الأنظمة الموزعة.

حل الصراعات

تقوم CRDTs بحل التعارضات تلقائيًا حسب التصميم:

  • بالنسبة لـ CRDTs (CvRDTs) المستندة إلى الحالة، يتم تحقيق ذلك من خلال وظيفة دمج تجمع بين حالتي نسختين متماثلتين. يجب أن تكون وظيفة الدمج هذه تبادلية وترابطية وغير فعالة.
  • بالنسبة لـ CRDTs (CmRDTs) القائمة على التشغيل، تم تصميم العمليات لتكون تبادلية، مما يضمن أن تطبيقها بأي ترتيب يؤدي إلى نفس الحالة النهائية.

الساعات المنطقية

تستخدم العديد من تطبيقات CRDT الساعات المنطقية (مثل متجهات الإصدار أو متجهات الإصدار المنقطة) لتتبع التاريخ السببي للعمليات. يساعد هذا في تحديد ترتيب العمليات المتزامنة وفي تحديد التحديثات التي شاهدتها النسخة المتماثلة بالفعل.

استخدام CRDTs في JavaScript مع Yjs

قد يكون تنفيذ CRDTs من البداية أمرًا معقدًا. ومع ذلك، هناك مكتبات متاحة لتبسيط العملية. بالنسبة لجافا سكريبت، إحدى مكتبات CRDT الأكثر شيوعًا هي Yjs. إنه تطبيق CRDT عالي الأداء يدعم أنواع البيانات المختلفة. لنقم بإنشاء تطبيق قائمة مهام بسيط باستخدام Yjs، لمحاكاة عدة مستخدمين يعملون على نفس المستند في الذاكرة.

إليك مثال لكيفية تنفيذ قائمة المهام المشتركة باستخدام Yjs:
Understanding Conflict-Free Replicated Data Types

فلنستخدم ydocs الذي تم إنشاؤه:
Understanding Conflict-Free Replicated Data Types

في هذا المثال، قمنا بإنشاء مستندي Yjs (ydoc1 وydoc2) لمحاكاة مستخدمين يعملان على نفس قائمة المهام. يحتوي كل مستند على خريطة مشتركة خاصة به للمهام.

نحدد وظائف لإضافة المهام وتحديثها وحذفها، بالإضافة إلى وظيفة syncDocs لمزامنة الحالة يدويًا بين الوثيقتين. يحاكي هذا ما يمكن أن يحدث في بيئة شبكية حيث يتم تبادل التحديثات بين العملاء.

خاتمة

توفر CRDTs حلاً قويًا لبناء تطبيقات تعاونية وموزعة يمكنها العمل بسلاسة عبر الإنترنت وغير متصل. في حين أن المفاهيم الأساسية يمكن أن تكون معقدة، فإن المكتبات مثل Yjs تسهل على المطورين الاستفادة من قوة CRDTs في تطبيقاتهم. مع تزايد انتشار الأنظمة الموزعة، سيصبح فهم CRDTs واستخدامها مهارة ذات قيمة متزايدة للمطورين.

روابط مفيدة

  1. يس
  2. CRDT
  3. Tiptap - محرر نصوص تعاوني
بيان الافراج تم نشر هذه المقالة على: https://dev.to/adityasajoo/understanding-conflict-free-replicated-data-types-57jc?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3