كيفية التكيف مع Azure Cosmos DB ل Apache Cassandra إذا كنت قادما من Apache Cassandra

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

يوفر Azure Cosmos DB ل Apache Cassandra توافق بروتوكول سلكي مع Cassandra SDKs والأدوات الموجودة. يمكنك تشغيل التطبيقات المصممة للاتصال ب Apache Cassandra باستخدام واجهة برمجة التطبيقات ل Cassandra بأقل قدر من التغييرات.

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

دعم الميزة

تدعم واجهة برمجة التطبيقات ل Cassandra عددا كبيرا من ميزات Apache Cassandra. بعض الميزات غير مدعومة أو لها قيود. قبل الترحيل، تأكد من دعم ميزات Azure Cosmos DB ل Apache Cassandra التي تحتاج إليها.

النسخ المتماثل

عند التخطيط للنسخ المتماثل، من المهم النظر في كل من الترحيل والاتساق.

على الرغم من أنه يمكنك الاتصال بواجهة برمجة التطبيقات ل Cassandra من خلال بروتوكول سلكي v4 لبروتوكول Cassandra Query Language (CQL)، فإن Azure Cosmos DB ينفذ بروتوكول النسخ المتماثل الداخلي الخاص به. لا يمكنك استخدام بروتوكول Cassandra gossip للترحيل المباشر أو النسخ المتماثل. لمزيد من المعلومات، راجع الترحيل المباشر من Apache Cassandra إلى واجهة برمجة التطبيقات ل Cassandra باستخدام الكتابة المزدوجة.

للحصول على معلومات حول الترحيل دون اتصال بالإنترنت، راجع ترحيل البيانات من Cassandra إلى Azure Cosmos DB لحساب Apache Cassandra باستخدام Azure Databricks.

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

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

نماذج التعليمات البرمجية

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

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

يمكنك أيضًا استخدام عينات ل Java Spring Boot (برنامج تشغيل v3) و Java Spring Boot (برنامج تشغيل v4).

التخزين

يتم دعم واجهة برمجة التطبيقات ل Cassandra بواسطة Azure Cosmos DB، وهو محرك قاعدة بيانات NoSQL موجه نحو المستند. يحتفظ Azure Cosmos DB ببيانات التعريف، مما قد يؤدي إلى تغيير في مقدار التخزين الفعلي المطلوب لحمل عمل معين.

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

عمليات نشر متعددة المناطق

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

تتمثل إحدى مزايا وجود منطقة رئيسية واحدة للكتابة في تجنب سيناريوهات النزاع عبر المناطق. يمنحك الخيار للحفاظ على اتساق قوي عبر مناطق متعددة مع الحفاظ على مستوى عالٍ من التوافر.

إشعار

الاتساق القوي عبر المناطق وهدف نقطة الاسترداد (RPO) من الصفر غير ممكن لـApache Cassandra الأصلية لأن جميع العقد قادرة على تقديم الكتابات. يمكنك تكوين Azure Cosmos DB لتحقيق اتساق قوي عبر المناطق في تكوين منطقة كتابة واحدة . ومع ذلك، كما هو الحال مع Apache Cassandra الأصلي، لا يمكنك تكوين حساب Azure Cosmos DB الذي تم تكوينه مع مناطق كتابة متعددة لتحقيق اتساق قوي. لا يمكن للنظام الموزع توفير RPO من الصفر وهدف وقت الاسترداد (RTO) من الصفر.

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

وحدات الطلب

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

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

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

نماذج توفير السعة

في توفير قواعد البيانات التقليدية، يتم توفير قدرة ثابتة مقدمًا للتعامل مع معدل النقل المتوقع. يوفر Azure Cosmos DB نموذجًا قائمًا على السعة يسمى معدل النقل المقدم. كخدمة متعددة المستأجرين، يقدم Azure Cosmos DB أيضًا طرازات قائمة على الاستهلاك في وضع القياس التلقائي ووضع بلا خادم. ويتوقف مدى استفادة حِمل العمل من أي من نماذج التزويد القائمة على الاستهلاك هذه على إمكانية التنبؤ بمعدل النقل لحِمل العمل.

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

التقسيم

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

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

تغير الحجم

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

تحديد السعر

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

موصل Apache Spark

يستخدم العديد من مستخدمي Apache Cassandra موصل Apache Spark Cassandra للاستعلام عن بياناتهم لتلبية الاحتياجات التحليلية واحتياجات حركة البيانات. يمكنك الاتصال بواجهة برمجة التطبيقات ل Cassandra بنفس الطريقة وباستخدام نفس الموصل. قبل الاتصال بواجهة برمجة التطبيقات ل Cassandra، راجع الاتصال ب Azure Cosmos DB ل Apache Cassandra من Spark. على وجه الخصوص، راجع القسم تحسين تكوين معدل نقل موصل Spark.

استكشاف الأخطاء الشائعة وإصلاحها

للحصول على حلول للمشكلات الشائعة، راجع استكشاف المشكلات الشائعة وإصلاحها في Azure Cosmos DB ل Apache Cassandra.

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