مستويات تناسق Apache Cassandra وAzure Cosmos DB ل Apache Cassandra

ينطبق على: كاساندرا

على عكس Azure Cosmos DB، لا يوفر Apache Cassandra في الأصل ضمانات تناسق محددة بدقة. بدلاً من ذلك، يوفر Apache Cassandra مستوى تناسق للكتابة ومستوى تناسق قراءة، لتمكين قابلية وصول عالية واتساق ومفاضلات زمن الانتقال. عند استخدام Azure Cosmos DB ل Cassandra:

  • يتم تعيين مستوى تناسق الكتابة ل Apache Cassandra إلى مستوى التناسق الافتراضي الذي تم تكوينه على حساب Azure Cosmos DB الخاص بك. لا يمكن تغيير تناسق عملية الكتابة (CL) على أساس كل طلب.
  • سيقوم Azure Cosmos DB بتعيين مستوى تناسق القراءة المحدد بواسطة برنامج تشغيل عميل Cassandra ديناميكيا. سيتم تعيين مستوى التناسق إلى أحد مستويات تناسق Azure Cosmos DB التي تم تكوينها ديناميكيا بناء على طلب قراءة.

عمليات كتابة متعددة المناطق مقابل عمليات كتابة في منطقة واحدة

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

مع الكتابة في منطقة واحدة، يمكنك الحفاظ على اتساق قوي، مع الحفاظ على مستوى من قابلية الوصول العالية عبر المناطق مع تجاوز الفشل المُدار بواسطة الخدمة. في هذا التكوين، لا يزال بإمكانك استغلال موقع البيانات لتقليل زمن الانتقال للقراءة عن طريق الرجوع إلى مستوى التناسق النهائي على أساس كل طلب. بالإضافة إلى هذه الإمكانات، يوفر النظام الأساسي Azure Cosmos DB أيضا خيار تكرار المنطقة عند تحديد منطقة. وهكذا، على عكس Apache Cassandra الأصلي، تسمح قاعدة بيانات Azure Cosmos لك التنقل في طيف المقايضة لنظرية "نقطة الارتكاز" بمزيد من التفصيل.

تعيين مستويات التناسق

يوفر النظام الأساسي Azure Cosmos DB مجموعة من خمسة إعدادات تناسق محددة جيدا وموجهة لحالة استخدام الأعمال فيما يتعلق بالنسخ المتماثل. يتم تحديد المقايضات لإعدادات التناسق هذه بواسطة نظريات CAP وPACLC. نظرا لأن هذا النهج يختلف بشكل كبير عن Apache Cassandra، نوصي بأن تستغرق وقتا لمراجعة وفهم تناسق Azure Cosmos DB. بدلا من ذلك، يمكنك مراجعة دليل الفيديو القصير هذا لفهم إعدادات التناسق في النظام الأساسي ل Azure Cosmos DB. يوضح الجدول التالي التعيينات المحتملة بين مستويات تناسق Apache Cassandra وAzure Cosmos DB عند استخدام واجهة برمجة التطبيقات ل Cassandra. يعرض هذا الجدول تكوينات لمنطقة واحدة، وقراءة متعددة المناطق مع عمليات الكتابة في منطقة واحدة، والكتابة متعددة المناطق.

تعيينات

إشعار

هذه ليست تعيينات دقيقة. بدلاً من ذلك، قدمنا أقرب نظائرها إلى Apache Cassandra، وأزلنا أي اختلافات نوعية في العمود الموجود في أقصى اليمين. كما ذكر أعلاه، نوصي بمراجعة إعدادات تناسق قاعدة بيانات Azure Cosmos.

ALLأو EACH_QUOROMأو QUOROMLOCAL_QUORUMأو أو THREE كتابة التناسق في Apache Cassandra

تناسق قراءة Apache القراءة من أقرب مستوى تناسق Azure Cosmos DB إلى إعدادات القراءة/الكتابة في Apache Cassandra
ALL المنطقة المحلية Strong
EACH_QUOROM المنطقة المحلية Strong
QUOROM المنطقة المحلية Strong
LOCAL_QUORUM المنطقة المحلية Strong
LOCAL_ONE المنطقة المحلية Eventual
ONE المنطقة المحلية Eventual
TWO المنطقة المحلية Strong
THREE المنطقة المحلية Strong

على عكس Apache وDSE Cassandra، يلتزم Azure Cosmos DB بشكل دائم بكتابة الحصة بشكل افتراضي. تقوم ثلاث عقد على الأقل من أصل أربع (3/4) بتثبيت الكتابة على القرص، وNOT مجرد سجل تثبيت في الذاكرة.

ONE، LOCAL_ONEأو ، أو ANY كتابة التناسق في Apache Cassandra

تناسق قراءة Apache القراءة من أقرب مستوى تناسق Azure Cosmos DB إلى إعدادات القراءة/الكتابة في Apache Cassandra
ALL المنطقة المحلية Strong
EACH_QUOROM المنطقة المحلية Eventual
QUOROM المنطقة المحلية Eventual
LOCAL_QUORUM المنطقة المحلية Eventual
LOCAL_ONE المنطقة المحلية Eventual
ONE المنطقة المحلية Eventual
TWO المنطقة المحلية Eventual
THREE المنطقة المحلية Eventual

تلتزم واجهة برمجة تطبيقات Azure Cosmos DB ل Cassandra دائما بشكل دائم بكتابة الحصة بشكل افتراضي، ومن ثم يمكن الاستفادة من جميع تناسقات القراءة.

TWO تناسق الكتابة في Apache Cassandra

تناسق قراءة Apache القراءة من أقرب مستوى تناسق Azure Cosmos DB إلى إعدادات القراءة/الكتابة في Apache Cassandra
ALL المنطقة المحلية Strong
EACH_QUOROM المنطقة المحلية Strong
QUOROM المنطقة المحلية Strong
LOCAL_QUORUM المنطقة المحلية Strong
LOCAL_ONE المنطقة المحلية Eventual
ONE المنطقة المحلية Eventual
TWO المنطقة المحلية Eventual
THREE المنطقة المحلية Strong

لا يحتوي Azure Cosmos DB على فكرة تناسق الكتابة إلى عقدتين فقط، ومن ثم نتعامل مع هذا التناسق على غرار الحصة لمعظم الحالات. لتناسق TWOالقراءة، هذا التناسق يعادل الكتابة مع QUOROM والقراءة من ONE.

Serial، أو Local_Serial كتابة التناسق في Apache Cassandra

تناسق قراءة Apache القراءة من أقرب مستوى تناسق Azure Cosmos DB إلى إعدادات القراءة/الكتابة في Apache Cassandra
ALL المنطقة المحلية Strong
EACH_QUOROM المنطقة المحلية Strong
QUOROM المنطقة المحلية Strong
LOCAL_QUORUM المنطقة المحلية Strong
LOCAL_ONE المنطقة المحلية Eventual
ONE المنطقة المحلية Eventual
TWO المنطقة المحلية Strong
THREE المنطقة المحلية Strong

ينطبق التسلسل فقط على المعاملات الخفيفة. يتبع Azure Cosmos DB خوارزمية ملتزمة بشكل دائم بشكل افتراضي، ومن ثم Serial فإن التناسق مشابه للحصة.

مناطق أخرى للكتابة في منطقة واحدة

يسهل Azure Cosmos DB خمسة إعدادات تناسق، بما في ذلك قوية، عبر مناطق متعددة حيث يتم تكوين عمليات الكتابة في منطقة واحدة. ويحدث هذا التسهيل طالما أن المناطق تقع على بعد 000 2 ميل من بعضها البعض.

لا يحتوي Azure Cosmos DB على تعيين قابل للتطبيق إلى Apache Cassandra حيث إن جميع العقد/المناطق تكتب ولا يمكن ضمان تناسق قوي عبر جميع المناطق.

مناطق أخرى للكتابة متعددة المناطق

يسهل Azure Cosmos DB أربعة إعدادات تناسق فقط؛ eventualو consistent prefixsessionو و bounded staleness عبر مناطق متعددة حيث يتم تكوين الكتابة متعددة المناطق.

سيوفر Apache Cassandra التناسق النهائي للقراءات عبر المناطق الأخرى بغض النظر عن الإعدادات.

التجاوزات الديناميكية المدعومة

إعداد حساب Azure Cosmos DB تجاوز القيمة في طلب العميل تأثير التجاوز
Strong All لا يوجد تأثير (يبقى ك strong)
Strong Quorum لا يوجد تأثير (يبقى ك strong)
Strong LocalQuorum لا يوجد تأثير (يبقى ك strong)
Strong Two لا يوجد تأثير (يبقى ك strong)
Strong Three لا يوجد تأثير (يبقى ك strong)
Strong Serial لا يوجد تأثير (يبقى ك strong)
Strong LocalSerial لا يوجد تأثير (يبقى ك strong)
Strong One تغييرات التناسق إلى Eventual
Strong LocalOne تغييرات التناسق إلى Eventual
Strong Any غير مسموح به (خطأ)
Strong EachQuorum غير مسموح به (خطأ)
Bounded stalenessو session, أو consistent prefix All غير مسموح به (خطأ)
Bounded stalenessو session, أو consistent prefix Quorum غير مسموح به (خطأ)
Bounded stalenessو session, أو consistent prefix LocalQuorum غير مسموح به (خطأ)
Bounded stalenessو session, أو consistent prefix Two غير مسموح به (خطأ)
Bounded stalenessو session, أو consistent prefix Three غير مسموح به (خطأ)
Bounded stalenessو session, أو consistent prefix Serial غير مسموح به (خطأ)
Bounded stalenessو session, أو consistent prefix LocalSerial غير مسموح به (خطأ)
Bounded stalenessو session, أو consistent prefix One تغييرات التناسق إلى Eventual
Bounded stalenessو session, أو consistent prefix LocalOne تغييرات التناسق إلى Eventual
Bounded stalenessو session, أو consistent prefix Any غير مسموح به (خطأ)
Bounded stalenessو session, أو consistent prefix EachQuorum غير مسموح به (خطأ)

المقاييس

إذا تم تكوين حساب Azure Cosmos DB الخاص بك بمستوى تناسق آخر غير التناسق القوي، فراجع مقياس Probabilistically Bounded Staleness (PBS ). يلتقط المقياس احتمالية حصول عملائك على قراءات قوية ومتسقة لأحمال العمل الخاصة بك. يتم عرض هذا المقياس في مدخل Microsoft Azure. للعثور على مزيد من المعلومات حول مقياس PBS، راجع مراقبة مقياس Staleness المقيدة Probabilistically (PBS).

يوضح مقياس «Probabilistically Bounded Staleness» كيف يكون الاتساق النهائي لديك. يوفر هذا المقياس نظرة ثاقبة حول عدد المرات التي يمكنك فيها الحصول على تناسق أقوى من مستوى التناسق الذي قمت بتكوينه حاليا على حساب Azure Cosmos DB الخاص بك. بمعنى آخر، يمكنك أن ترى احتمال (يقاس بالمللي ثانية) للحصول على قراءات متسقة لمجموعة من مناطق الكتابة والقراءة.

الاتساق العالمي القوي لطلبات الكتابة في Apache Cassandra

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

يوضح الرسم التالي إعداد تناسق قوي عمومي في Apache Cassandra بين منطقتين 1 و2. بعد كتابة البيانات إلى المنطقة 1، يجب أن تستمر الكتابة في عدد الحصة من العقد في كل من المنطقة 1 والمنطقة 2 قبل تلقي الإقرار من قبل التطبيق.

رسم تخطيطي لتناسق الكتابة العمومي في Apache Cassandra.

الاتساق العالمي القوي لطلبات الكتابة في Azure Cosmos DB ل Apache Cassandra

في Azure Cosmos DB يتم تعيين التناسق على مستوى الحساب. مع Strong التناسق في Azure Cosmos DB ل Cassandra، يتم نسخ البيانات بشكل متزامن إلى مناطق القراءة للحساب. كلما كانت مناطق حساب Azure Cosmos DB بعيدة عن بعضها البعض، زاد زمن انتقال عمليات الكتابة المتسقة.

رسم تخطيطي لتناسق الكتابة العالمي في Azure Cosmos DB ل Apache Cassandra.

كيف يؤثر عدد المناطق على طلب القراءة أو الكتابة:

  • منطقتين: مع الاتساق القوي، الحصة (N/2 + 1) = 2. لذلك، إذا تعطل منطقة القراءة، فلن يتمكن الحساب من قبول عمليات الكتابة بتناسق قوي لأن عدد الحصة من المناطق غير متوفر للكتابة ليتم نسخها نسخا متماثلا إليها.
  • ثلاث مناطق أو أكثر: ل N = 3، quorum = 2. إذا كانت إحدى مناطق القراءة معطلة، فلا يزال بإمكان منطقة الكتابة نسخ عمليات الكتابة إلى إجمالي منطقتين تفيان بمتطلبات الحصة. وبالمثل، مع أربع مناطق، quorum = 4/2 + 1 = 3. حتى مع تعطل منطقة قراءة واحدة، يمكن استيفاء الحصة.

إشعار

إذا كان هناك حاجة إلى تناسق قوي عالميا لجميع عمليات الكتابة، يجب تعيين تناسق Azure Cosmos DB لحساب Cassandra إلى Strong. لا يمكن تجاوز مستوى التناسق لعمليات الكتابة إلى مستوى تناسق أقل على أساس كل طلب في Azure Cosmos DB.

تناسق أضعف لطلبات الكتابة في Apache Cassandra

مستوى تناسق أو ANYONETWOأو ؟ THREELOCAL_QUORUMSerialLocal_Serial ضع في اعتبارك طلب كتابة مع LOCAL_QUORUM في 4RF مركز بيانات مكون من ست عقد. Quorum = 4/2 + 1 = 3.

رسم تخطيطي لتناسق الكتابة غير العمومي في Apache Cassandra.

تناسق أضعف لطلبات الكتابة في Azure Cosmos DB ل Apache Cassandra

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

رسم تخطيطي لتناسق الكتابة غير العمومي في Azure Cosmos DB ل Apache Cassandra.

الاتساق العالمي القوي لطلبات القراءة في Apache Cassandra

مع تناسق EACH_QUORUM، يمكن تحقيق قراءة متسقة في Apache Cassandra. في، إعداد متعدد المناطق ل EACH_QUORUM إذا لم يتم استيفاء عدد الحصة من العقد في كل منطقة، فلن تنجح القراءة.

رسم تخطيطي لتناسق القراءة العمومي في Apache Cassandra.

الاتساق العالمي القوي لطلبات القراءة في Azure Cosmos DB ل Apache Cassandra

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

رسم تخطيطي لتناسق القراءة العمومي في Azure Cosmos DB ل Apache Cassandra.

الاتساق المحلي القوي في Apache Cassandra

سيعطينا طلب القراءة بمستوى TWOتناسق أو THREEأو LOCAL_QUORUM قراءة تناسق قوية من المنطقة المحلية. مع مستوى LOCAL_QUORUMتناسق ، تحتاج إلى استجابة من عقدتين في مركز البيانات المحدد لقراءة ناجحة.

رسم تخطيطي لتناسق القراءة القوي المحلي في Apache Cassandra.

الاتساق المحلي القوي في Azure Cosmos DB ل Apache Cassandra

في Azure Cosmos DB ل Cassandra، وجود مستوى تناسق من TWO، THREE أو LOCAL_QUORUM سيعطي تناسقا قويا محليا لطلب القراءة. نظرا لأن مسار الكتابة يضمن النسخ المتماثل إلى ثلاث نسخ متماثلة على الأقل من أصل أربع نسخ متماثلة، فإن القراءة من نسختين متماثلتين في المنطقة المحددة ستضمن قراءة الحصة للبيانات في تلك المنطقة.

رسم تخطيطي لتناسق القراءة القوي المحلي في Azure Cosmos DB ل Apache Cassandra.

التناسق النهائي في Apache Cassandra

مستوى التناسق من LOCAL_ONE، OneANY with LOCAL_ONE و سيؤدي إلى التناسق النهائي. يتم استخدام هذا التناسق في الحالات التي يكون فيها التركيز على زمن الانتقال.

رسم تخطيطي لتناسق القراءة النهائي في Apache Cassandra.

التناسق النهائي في Azure Cosmos DB ل Apache Cassandra؟

سيمنحك مستوى التناسق LOCAL_ONE، ONE أو Any التناسق النهائي. مع التناسق النهائي، يتم تقديم القراءة من واحدة فقط من النسخ المتماثلة في المنطقة المحددة.

رسم تخطيطي لتناسق القراءة النهائي في Azure Cosmos DB ل Apache Cassandra.

تجاوز مستوى التناسق لعمليات القراءة في Azure Cosmos DB ل Cassandra

في السابق، كان يمكن تجاوز مستوى التناسق لطلبات القراءة فقط إلى تناسق أقل من المجموعة الافتراضية على الحساب. على سبيل المثال، مع التناسق الافتراضي ل Strong، يمكن إصدار طلبات القراءة مع Strong افتراضيا وتجاوزها على أساس كل طلب (إذا لزم الأمر) إلى مستوى تناسق أضعف من Strong. ومع ذلك، لا يمكن إصدار طلبات القراءة بمستوى تناسق تم تجاوزه أعلى من المستوى الافتراضي للحساب. تعذر على الحساب الذي يحتوي على تناسق Eventual تلقي طلبات قراءة بمستوى تناسق أعلى من Eventual (والذي في برامج تشغيل Apache Cassandra تترجم إلى TWOأو THREELOCAL_QUORUM أو ).QUORUM

يسهل Azure Cosmos DB ل Cassandra الآن تجاوز التناسق على طلبات القراءة إلى قيمة أعلى من التناسق الافتراضي للحساب. على سبيل المثال، مع تعيين التناسق الافتراضي على حساب Cosmos DB إلى Eventual (مكافئ Apache Cassandra أو OneANY)، يمكن تجاوز طلبات القراءة على أساس كل طلب إلى LOCAL_QUORUM. يضمن هذا التجاوز استشارة عدد الحصة من النسخ المتماثلة داخل المنطقة المحددة قبل إرجاع مجموعة النتائج، كما هو مطلوب من قبل LOCAL_QUORUM.

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

الخطوات التالية

تعرف على المزيد حول مستويات التوزيع والاتساق العالمية لـAzure Cosmos DB: