قم ببناء BFT JSON CRDT

جدول المحتويات

تعد CRDTs مجموعة من هياكل البيانات المصممة ليتم نسخها عبر أجهزة كمبيوتر متعددة دون الحاجة إلى القلق بشأن التعارضات عندما يكتب الأشخاص البيانات في نفس المكان. إذا كان عليك في أي وقت التعامل مع نزاع مقرف دمج git ، فأنت تعلم مدى صعوبة حله.

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

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

ما قد يستغرق عادةً أسابيع أو شهورًا من الهندسة لإعداد البنية التحتية لتجربة ويب تعاونية يمكن إجراؤه في يوم واحد ، مما يجعلنا أقرب إلى المستقبل حيث يبدو الإنترنت أكثر تعددًا للاعبين بشكل افتراضي ، ويشعر بالراحة والحيوية.

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

أكتب منشور المدونة هذا في المقام الأول كملاحظة إلى ماضي ، وأختصر الكثير مما تعلمته منذ ذلك الحين في منشور مدونة كنت أتمنى لو كنت قد قرأته قبل الدخول. آمل أن تجد هذا مفيدًا أيضًا.

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

منشور المدونة هذا طويل جدًا ، لذا استخدم جدول المحتويات في الأعلى للانتقال إلى القسم الذي يثير اهتمامك أكثر من غيره!

# كيف تختلف CRDTs عن قواعد البيانات التقليدية

قبل أن نتعمق حقًا في العناصر الداخلية لـ CRDT ، يجب أن نفهم أولاً كيف تختلف عن قواعد البيانات. عندما أفكر عادة في الحالة المشتركة ، أفكر في قواعد البيانات. ومع ذلك ، فإن الضمانات التي توفرها قواعد البيانات تختلف حقًا عن تلك التي توفرها CRDTs.

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

يعد هذا أمرًا رائعًا لتسهل على المطورين التفكير في التطبيقات الموزعة (ما عليك سوى التعامل مع قاعدة البيانات الموزعة كقاعدة بيانات واحدة). لا يوجد تعارض بحكم التعريف ، لأنه لا يوجد سوى وجهة نظر واحدة موثوقة حول ماهية الحالة الجيدة.

ومع ذلك ، فهو لا يخلو من عيوبه أيضًا. L'obtention de cette propriété ajoute beaucoup de surcharge car les écritures et les lectures doivent se coordonner (les lignes en pointillés dans le diagramme ci-dessus) sur tous les nœuds de la base de données pour assurer la تناغم. يؤدي هذا إلى مشكلة توفر: إذا لم تتمكن من الوصول إلى غالبية العقد ، فلا يمكنك معالجة أي عمليات.

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

قم ببناء BFT JSON CRDT
جدول المحتويات

تعد CRDTs مجموعة من هياكل البيانات المصممة ليتم نسخها عبر أجهزة كمبيوتر متعددة دون الحاجة إلى القلق بشأن التعارضات عندما يكتب الأشخاص البيانات في نفس المكان. إذا كان عليك في أي وقت التعامل مع نزاع مقرف دمج git ، فأنت تعلم مدى صعوبة حله.

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

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

ما قد يستغرق عادةً أسابيع أو شهورًا من الهندسة لإعداد البنية التحتية لتجربة ويب تعاونية يمكن إجراؤه في يوم واحد ، مما يجعلنا أقرب إلى المستقبل حيث يبدو الإنترنت أكثر تعددًا للاعبين بشكل افتراضي ، ويشعر بالراحة والحيوية.

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

أكتب منشور المدونة هذا في المقام الأول كملاحظة إلى ماضي ، وأختصر الكثير مما تعلمته منذ ذلك الحين في منشور مدونة كنت أتمنى لو كنت قد قرأته قبل الدخول. آمل أن تجد هذا مفيدًا أيضًا.

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

منشور المدونة هذا طويل جدًا ، لذا استخدم جدول المحتويات في الأعلى للانتقال إلى القسم الذي يثير اهتمامك أكثر من غيره!

# كيف تختلف CRDTs عن قواعد البيانات التقليدية

قبل أن نتعمق حقًا في العناصر الداخلية لـ CRDT ، يجب أن نفهم أولاً كيف تختلف عن قواعد البيانات. عندما أفكر عادة في الحالة المشتركة ، أفكر في قواعد البيانات. ومع ذلك ، فإن الضمانات التي توفرها قواعد البيانات تختلف حقًا عن تلك التي توفرها CRDTs.

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

يعد هذا أمرًا رائعًا لتسهل على المطورين التفكير في التطبيقات الموزعة (ما عليك سوى التعامل مع قاعدة البيانات الموزعة كقاعدة بيانات واحدة). لا يوجد تعارض بحكم التعريف ، لأنه لا يوجد سوى وجهة نظر واحدة موثوقة حول ماهية الحالة الجيدة.

ومع ذلك ، فهو لا يخلو من عيوبه أيضًا. L'obtention de cette propriété ajoute beaucoup de surcharge car les écritures et les lectures doivent se coordonner (les lignes en pointillés dans le diagramme ci-dessus) sur tous les nœuds de la base de données pour assurer la تناغم. يؤدي هذا إلى مشكلة توفر: إذا لم تتمكن من الوصول إلى غالبية العقد ، فلا يمكنك معالجة أي عمليات.

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

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow