الأسئلة المتداولة حول Azure Cosmos DB ل Apache Cassandra

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

ما هي الاختلافات الرئيسية بين Azure Cosmos DB ل Cassandra وApache Cassandra؟

فيما يلي بعض الاختلافات الرئيسية بين واجهة برمجة التطبيقات لخدمة Cassandra وApache Cassandra:

  • توصي اباتشي كاساندرا بحد 100 ميغابايت لحجم مفتاح القسم. تسمح واجهة برمجة التطبيقات ل Cassandra ل Azure Cosmos DB بسعة تصل إلى 20 جيجابايت لكل قسم.
  • تتيح لك أباتشي كاساندرا تعطيل ارتكاب دائم. يمكنك تخطي الكتابة إلى سجل التثبيت والانتقال مباشرة إلى بنية البيانات في الذاكرة. يمكن أن يؤدي هذا إلى فقدان البيانات إذا تعطل العقدة قبل مسح بنيات البيانات في الذاكرة إلى SSTables على القرص. يقوم Azure Cosmos DB دائما بالالتزام الدائم للمساعدة في منع فقدان البيانات.
  • يمكن أن ترى أباتشي كاساندرا تقلص الأداء إذا كان عبء العمل ينطوي على العديد من عمليات الاستبدال أو الحذف. والسبب هو علامات مميزة التي يحتاج عبء العمل قراءتها لتخطيها وجلب أحدث البيانات. لن ترى واجهة برمجة التطبيقات ل Cassandra انخفاض أداء القراءة عندما يحتوي حمل العمل على العديد من الاستبدالات أو عمليات الحذف.
  • أثناء سيناريوهات أعباء العمل العالية ذات الاستبدال، يحتاج الضغط إلى التشغيل لدمج SSTables على القرص. (الدمج مطلوب لأن كتابات Apache Cassandra تكون ملحقة فقط. تُخزَّن التحديثات المتعددة على هيئة إدخالات SSTable فردية يجب دمجها بشكل دوري). يمكن أن يؤدي هذا الموقف أيضًا إلى انخفاض أداء القراءة أثناء الضغط. لا يحدث تأثير الأداء هذا في واجهة برمجة التطبيقات ل Cassandra لأن واجهة برمجة التطبيقات لا تنفذ الضغط.
  • تعيين عامل النسخ المتماثل من 1 ممكن مع اباتشي كاساندرا. ومع ذلك، فإنه يؤدي إلى توفر منخفض إذا انخفضت العقدة الوحيدة مع البيانات. هذه ليست مشكلة في واجهة برمجة التطبيقات ل Cassandra ل Azure Cosmos DB لأن هناك دائما عامل النسخ المتماثل 4 (حصة 3).
  • تتطلب إضافة أو إزالة العقد في أباتشي كاساندرا التدخل اليدوي، إلى جانب استخدام وحدة المعالجة المركزية العالية على العقدة الجديدة أثناء تحريك العقد الحالية لبعض نطاقات الرمز الخاصة بهم إلى العقدة الجديدة. هذا الموقف هو نفسه عندما تقوم بإيقاف تشغيل عقدة موجودة. ومع ذلك، تتوسع واجهة برمجة التطبيقات ل Cassandra دون أي مشكلات تمت ملاحظتها في الخدمة أو التطبيق.
  • ليست هناك حاجة لتعيين num_tokens على كل عقدة في نظام المجموعة كما هو الحال في Apache Cassandra. يدير Azure Cosmos DB العقد والنطاقات الرمزية بشكل كامل.
  • تتم إدارة واجهة برمجة التطبيقات ل Cassandra بالكامل. لا تحتاج إلى أوامر، مثل الإصلاح وإيقاف التشغيل المستخدمة في Apache Cassandra.

ما إصدار البروتوكول الذي تدعمه واجهة برمجة التطبيقات ل Cassandra؟

تدعم واجهة برمجة التطبيقات ل Cassandra ل Azure Cosmos DB الإصدار 3.x من Cassandra Query Language (CQL). ويستند التوافق مع CQL على مستودع GitHub أباتشي العامة كاساندرا. إذا كان لديك ملاحظات حول دعم البروتوكولات الأخرى، فأرسل بريدًا إلكترونيًا إلى askcosmosdbcassandra@microsoft.com.

لماذا يعتبر اختيار الإنتاجية لجدول مطلبًا؟

يقوم Azure Cosmos DB بتعيين معدل النقل الافتراضي لحاويتك استنادًا إلى المكان الذي تنشئ فيه الجدول: بوابة Azure أو CQL.

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

يتم شرح مفهوم الإنتاجية في مقال Request Units in Azure Cosmos DB. يتم توزيع إنتاجية الجدول بالتساوي عبر الأقسام المادية الأساسية.

ما هو معدل نقل الجدول الذي تم إنشاؤه من خلال CQL؟

يستخدم Azure Cosmos DB وحدات الطلب في الثانية (RU/s) كعملة لتوفير الإنتاجية. تحتوي الجداول التي تم إنشاؤها من خلال CQL على 400 RU بشكل افتراضي. يمكنك تغيير RU من بوابة Azure.

CQL

CREATE TABLE keyspaceName.tablename (user_id int PRIMARY KEY, lastname text) WITH cosmosdb_provisioned_throughput=1200

.NET

int provisionedThroughput = 400;
var simpleStatement = new SimpleStatement($"CREATE TABLE {keyspaceName}.{tableName} (user_id int PRIMARY KEY, lastname text)");
var outgoingPayload = new Dictionary<string, byte[]>();
outgoingPayload["cosmosdb_provisioned_throughput"] = Encoding.UTF8.GetBytes(provisionedThroughput.ToString());
simpleStatement.SetOutgoingPayload(outgoingPayload);

ماذا يحدث عند استخدام معدل النقل؟

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

عند تجاوز هذه السعة، تظهر رسالة الخطأ التالية التي تشير إلى أن سعتك قد تم استخدامها:

0x1001 محملة فوق طاقتها: لا يمكن معالجة الطلب لأن "معدل الطلب كبير"

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

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

يتم شرح سجلات التشخيص في مقال التسجيل التشخيصي لـ Azure CosmosDB.

هل يتم تعيين المفتاح الأساسي لمفهوم مفتاح القسم الخاص بـ Azure Cosmos DB؟

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

ماذا يحدث عندما أحصل على إشعار بأن القسم ممتلئ؟

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

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

هل يمكنني استخدام واجهة برمجة التطبيقات ل Cassandra كمخزن قيم رئيسي بملايين أو مليارات مفاتيح الأقسام؟

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

هل يمكنني إنشاء أكثر من جدول واحد باستخدام واجهة برمجة التطبيقات ل Cassandra؟

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

هل يمكنني إنشاء أكثر من طاولة واحدة متتالية؟

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

ما هو الحد الأقصى لعدد الجداول التي يمكنني إنشاؤها؟

لا يوجد حد فعلي لعدد الجداول. إذا كان لديك عدد كبير من الجداول (حيث يتجاوز إجمالي الحجم الثابت 10 تيرابايت من البيانات) التي تحتاج إلى إنشاء، وليس عشرات أو مئات المعتادة، أرسل رسالة عبر البريد الإلكتروني إلى askcosmosdbcassandra@microsoft.com.

ما هو الحد الأقصى لعدد مساحات المفاتيح التي يمكنني إنشاؤها؟

لا يوجد حد فعلي لعدد مساحات المفاتيح لأنها عبارة عن حاويات بيانات وصفية. إذا كان لديك عدد كبير من مساحات المفاتيح، أرسل رسالة عبر البريد الإلكتروني إلى askcosmosdbcassandra@microsoft.com.

هل يمكنني إحضار العديد من البيانات بعد البدء من جدول عادي؟

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

هل يمكنني استخدام إعدادات ملف YAML لتكوين سلوك API؟

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

هل ستدعم واجهة برمجة التطبيقات لأوامر إضافة عقدة Cassandra وحالة نظام المجموعة وحالة العقدة؟

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

ماذا يحدث مع إعدادات التكوين المختلفة لإنشاء مساحة المفتاح مثل بسيط / شبكة؟

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

ماذا يحدث مع إعدادات مختلفة لبيانات تعريف الجدول؟

يوفر Azure Cosmos DB ضمانات الأداء القراءة والكتابة والإنتاجية. لذلك لا داعي للقلق بشأن لمس أي من إعدادات التكوين والتلاعب بها عن طريق الخطأ. وتشمل هذه الإعدادات مرشح بلوم، والتخزين المؤقت، وقراءة فرصة الإصلاح، gc_grace، وضغط memtable_flush_period.

هل وقت الصلاحية مدعوم لجداول كاساندرا؟

نعم، TTL معتمد.

كيف يمكنني مراقبة البنية التحتية مع الإنتاجية؟

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

ما هي مجموعات SDK للعميل التي يمكن أن تعمل مع واجهة برمجة التطبيقات ل Cassandra؟

تم استخدام برامج تشغيل العملاء في Apache Cassandra SDK التي تستخدم CQLv3 لبرامج العميل. إذا كان لديك برامج تشغيل أخرى تستخدمها أو إذا كنت تواجه مشكلات، فأرسل رسالة عبر البريد إلى askcosmosdbcassandra@microsoft.com.

هل مفاتيح الأقسام المركبة مدعومة؟

نعم، يمكنك استخدام بناء الجملة العادي لإنشاء مفاتيح أقسام مركبة.

هل يمكنني استخدام أداة تحميل sstableloader لتحميل البيانات؟

لا، لا يتم دعم أداة تحميل sstable.

هل يمكنني إقران مجموعة Apache Cassandra المحلية مع واجهة برمجة التطبيقات ل Cassandra؟

الآن، يتمتع Azure Cosmos DB بتجربة محسنة لبيئة سحابية دون حمل العمليات. إذا كنت تحتاج إلى الاقتران، فأرسل رسالة عبر البريد إلى askcosmosdbcassandra@microsoft.com مع وصف للسيناريو. نحن نعمل على عرض للمساعدة في إقران مجموعة Cassandra المحلية أو السحابية بواجهة برمجة التطبيقات ل Cassandra ل Azure Cosmos DB.

هل توفر واجهة برمجة التطبيقات ل Cassandra نسخا احتياطية كاملة؟

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

يمكنك إدارة الاحتفاظ بالنسخ الاحتياطي وتكراره بنفسك.

إذا كنت ترغب في الاستعادة من النسخ الاحتياطي، أرسل بريدا إلكترونيا إلى askcosmosdbcassandra@microsoft.com حالة دعم أو قم برفعها. يتم توفير معلومات حول إمكانية النسخ الاحتياطي في مقالة النسخ الاحتياطي التلقائي عبر الإنترنت والاستعادة معAzure Cosmos DB.

كيف تتعامل واجهة برمجة التطبيقات لحساب Cassandra مع تجاوز الفشل في حالة تعطل منطقة ما؟

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

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

هل تقوم واجهة برمجة التطبيقات ل Cassandra بفهرسة جميع سمات الكيان بشكل افتراضي؟

‏‏لا. تدعم واجهة برمجة التطبيقات ل Cassandra الفهارس الثانوية، والتي تتصرف بطريقة مشابهة ل Apache Cassandra. لا تقوم واجهة برمجة التطبيقات بفهرسة كل سمة بشكل افتراضي.

هل يمكنني استخدام واجهة برمجة التطبيقات الجديدة ل Cassandra SDK محليا مع المحاكي؟

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

كيف يمكنني ترحيل البيانات من مجموعات أباتشي كاساندرا إلى Azure Cosmos DB؟