ما هو الاتساق السببي في Nosql

نشرت: 2022-12-13

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

في هذه المقالة ، سأوضح كيف يمكن كسر ضمانات التناسق السببي الخاصة بـ MongoDB في الوقت الفعلي. تستخدم الغالبية أيضًا لإصلاح ذلك ، حيث كانت المحاولة الأولى هي استخدام الأغلبية تقرأ وتكتب. بعد ذلك ، سنلقي نظرة على فترات الساعة المنطقية والجلسات الفوضوية في مونجو. سأستخدم برنامج تشغيل Mongo C # للترميز في هذه الحالة ، لكن الأمر متروك لي تمامًا. أقر غالبية أعضاء مجموعة النسخ المتماثلة بالبيانات التي تم إرجاعها من استعلام في قراءة الأغلبية. قد تبدو فكرة استخدام كتابة بالأغلبية متبوعة بأغلبية القراءة حلاً جذابًا لمشكلتنا اكتب كتابتك. عندما يتم فهم الكتابة الأكثرية ، يحتفظ كل خادم ثانوي بلقطة في الذاكرة لأحدث كتابة للأغلبية.

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

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

فيما يلي خطوات نحو الاتساق المتسلسل: أ) الترتيب المتسق للكتابات المتسلسلة ؛ ب) الترتيب المتسق للكتابات المتسلسلة ؛ ج) الترتيب المتسق للكتابات المتسلسلة. عند الكتابة باتساق سببي ، من الضروري الاحتفاظ بالقراءات ذات الصلة السببية بنفس الترتيب.

ما هو الاتساق في Nosql؟

ما هو الاتساق في Nosql؟
مصدر الصورة: https://slidesharecdn.com

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

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

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

قواعد بيانات Nosql ليست مناسبة تمامًا للمعاملات المصرفية وأجهزة الصراف الآلي

اعتمادية قاعدة البيانات ليست سلسة مع nosql كما هو الحال مع SQL لأن معظمهم يستخدمون نموذج الاتساق اللاحق. نتيجة لذلك ، فهي ليست مناسبة تمامًا للمعاملات مثل عمليات السحب المصرفية وسحب أجهزة الصراف الآلي ، حيث قد لا تكون البيانات متسقة دائمًا في بعض الأحيان.

ما هو الاتساق المتزامن والمتعلق السببي؟

ما هو الاتساق المتزامن والمتعلق السببي؟
مصدر الصورة: https://slideserve.com

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

يتكون النظام الموزع من العديد من عقد الحوسبة حيث يتم مشاركة البيانات وتكرارها. التناسق هو خاصية نظام موزعة تضمن أن العقد والنسخ المتماثلة لها نفس طريقة عرض البيانات في نفس الوقت. إنها طريقة تجريبية للحفاظ على النظام في العمليات المرتبطة سببيًا باستخدام شكل ضعيف من الاتساق. الفرق الرئيسي بين الاتساق السببي والاتساق المتسلسل هو أن الاتساق السببي لا يتطلب ترتيبًا إجماليًا للحجم. يعني الإحساس البديهي بالاتساق أن القراءات جديدة فقط عندما تكون الكتابات معتمدة سببيًا. يتم توفير مثال على نظام موزع أدناه ، والذي يتكون من أربع عمليات: P1 و P2 و P3 و P4.

إنها خاصية يمكن حسابها من خلال أخذ عدد العمليات التي توافق على ترتيب العمليات التي تنفذ مهمة تحديد السببية. يُقال إن أي عملية تفي بالمتطلبات التالية تكون متسقة: لأي عمليتين P و Q ، إذا تسببت P في Q و Q تسبب R ، فإن P تسبب R في أي عملية أخرى. إنه مقياس لعدد العمليات التي توافق على الترتيب الذي يتم به تنفيذ جميع العمليات ذات الصلة سببيًا. تكون إحدى العمليات متسقة إذا كانت تفي بالمتطلبات التالية: P تسبب Q و Q تسبب R ، ثم P تسبب R. شرط الاتساق هو أحد المتطلبات. من المرجح أن تنتج العمليات المتسقة الاستنتاجات الصحيحة عند استخدامها بطريقة متسقة. يمكن قياس اتساق العملية بعدة طرق. تتمثل إحدى طرق النظر إليه في النظر في عدد العمليات المتفق عليها بشأن الترتيب الذي تحدث به العمليات ذات الصلة السببية. نتيجة لذلك ، هناك مؤشر تناسق . مؤشر الاتساق هو قياس مدى اتساق الحفاظ على العملية. لكي تكون متسقة ، يجب أن تفي العملية بالمتطلبات التالية: لأي عمليتين ، P الأسباب Q و Q تسبب R ، لذلك P تسبب R بالإضافة إلى Q و Q. مؤشر تناسق العملية هو مقياس لمدى ثباتها. إذا كانت العملية تفي بهذه المتطلبات ، فيقال إنها تتفق مع ما يلي: إذا كانت P تسبب Q و Q تسبب R ، P تسبب R لأي عمليتين P و Q. إذا كانت العملية لا تفي بمتطلبات الاتساق ، فإنها تعتبر تتعارض. من المرجح أن تؤدي العملية غير المتسقة إلى نتيجة غير صحيحة. يمكن استخدام مؤشر الاتساق لتقييم مدى اتساق العملية. إنها طريقة لقياس اتساق العملية وتحديد العمليات التي تنتج استنتاجات سببية أكثر دقة.

الاتساق السببي مقابل الاتساق النهائي

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

الاتساق السببي في النظام الموزع

يمكن استخدام معايير الاتساق لتحديد العلاقة السببية [1] في قواعد البيانات الموزعة. إذا كانت العملية مرتبطة سببيًا ، فإن كل عقدة في النظام الموزع تعرض نفس البيانات بنفس الترتيب الذي تتم قراءته وكتابته به.

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

من الممكن أن تبدو بعض العمليات وكأنها حدثت منذ سنوات. حقيقة أن العمليات (الكتابة / الكتابة) مرتبطة سببيًا تعني أن الترتيب الذي يتم توزيعها به يجب أن يكون موحدًا لجميع العمليات. لا يوجد ضمان للطلب لأن كلتا العمليتين تكتبان قيمًا مختلفة لـ x ، كما هو موضح في الصورة أدناه. عندما نتوقف عن كتابة كتابات جديدة ، سيتقارب النظام في النهاية إلى حالة أكثر اتساقًا. ينص ضمان الاتساق النهائي على أنه لن يتم إجراء أي تحديثات (عمليات كتابة) على النظام ، وسيتمكن جميع العملاء من رؤية كيفية عمله بالضبط. إذا قمت بكتابة أحرف رتيبة في حساب 100 دولار ، فسيتم تحصيل 165 دولارًا منك. عندما يقوم أحد العملاء بتحديث عنصر في قراءة كتاباتك (RYW) ، يتم إرجاع قيمة هذا العنصر بعد اكتمال التحديث. PRAM هو نوع من ذاكرة خطوط الأنابيب التي تسمح للعمليات بالنظر في جميع العمليات من عملية واحدة بنفس الطريقة.

تناسق Mongodb النهائي

هذا يعني أن البيانات التي تقرأها قد لا تكون متسقة في الوقت الحالي ، لكنها ستكون كذلك في النهاية. يتم الحصول على هذا باستخدام أي من readPreferences التي يمكن قراءتها من ثانوي.

في MongoDB ، يتم دائمًا نسخ البيانات الأولية بشكل غير متزامن ، بينما يتم نسخ البيانات الثانوية بشكل متزامن. إعدادات MongoDB الافتراضية هي w1: (الكتابة بنجاح إلى الأساسي) و j: false لتسجيل دفتر اليومية. بسبب النسخ المتماثل غير المتزامن ، عندما يتم تقسيم القسم على جانب الأقلية أو فقده الأساسي ، عادة ما يكون هناك فقدان في التناسق. أثناء التقسيم ، يمكننا ضبط قيم w و j لتحقيق مستويات مختلفة من زمن الانتقال وضمانات متسقة عبر اللوحة. في حالة عدم وجود قسم ، تنخفض سرعة الكتابة ، وعندما يكون هناك كتابة ، لا تنتظر الكتابة النسخ المتماثل. إذا كنت تستخدم مزيجًا من w & j ، فإن القراءة / عدم القراءة من الثانوية يمكن أن يكون لها تأثير كبير على مستويات التناسق. يحتوي MongoDB على أربعة مستويات مختلفة من الاتساق.

أفضل وقت للكتابة هو عندما لا يكون هناك قسم وتكون جميع العقد نشطة ؛ MongoDB متسق وله زمن انتقال منخفض. عندما يتم فقدان التمثيل الأساسي وتم ملء القسم ، يكون هذا هو النوع الأكثر شيوعًا للكتابة الذي يفشل (خطأ writeTimeout). لدينا أفضل جهد متاح في MongoDB لأنه بغض النظر عن كيفية تقسيم الكتلة ، فإننا سنفقد دائمًا جزءًا منه - على الأقل نسبة مئوية. في CAP و CP / EC من نظرية PACELC ، يمكن استخدام w: الأغلبية ، j: صحيح ، والقراءة من الأساسي فقط لتصنيف MongoDB على أنها CP.

كيف يحافظ Mongodb على الاتساق؟

يمكن للعديد من العملاء قراءة وكتابة نفس بيانات MongoDB في نفس الوقت. تستخدم MongoDB إدارة القفل والتزامن لمنع عملائها من تعديل نفس البيانات في نفس الوقت. عندما نكتب إلى مستند واحد ، إما نكتبه بالكامل أو لا نكتبه على الإطلاق ، ويرى العميل دائمًا نتائج متسقة.

ما هو الاتساق النهائي في Nosql؟

يتمثل مفهوم الاتساق النهائي في نمذجة البيانات في التأكد من أن التغييرات التي تم إجراؤها على قواعد بيانات NoSQL الموزعة عبر عقد متعددة تنعكس فيها جميعًا. نتيجة لذلك ، سيعيد استعلام قاعدة البيانات نفسه نفس النتائج بمرور الوقت.