البرنامج التعليمي: ترحيل بياناتك إلى واجهة برمجة تطبيقات لحساب Cassandra

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

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

يشمل البرنامج التعليمي المهام التالية:

  • خطة الترحيل
  • المتطلبات الأساسية للهجرة
  • رحِّل البيانات باستخدام الأمر cqlshCOPY
  • قم بترحيل البيانات باستخدام Spark

في حال لم يكن لديك اشتراك في Azure، يُمكنك إنشاء حساب مجاني قبل البدء.

المتطلبات الأساسية للهجرة

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

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

    • الإنتاجية المطلوبة: معدل النقل التقريبي لعمليات القراءة (الاستعلام/الحصول) وعمليات الكتابة (التحديث/الحذف/الإدراج). هذه القيمة مطلوبة لحساب وحدات الطلب المطلوبة، إلى جانب حجم بيانات الحالة الثابتة.

    • المخطط: الاتصال إلى مجموعة Cassandra الموجودةcqlsh، وتصدير المخطط من Cassandra:

      cqlsh [IP] "-e DESC SCHEMA" > orig_schema.cql
      

      بعد تحديد متطلبات حمل العمل الموجودة، قم بإنشاء حساب قاعدة بيانات، وحاويات Azure Cosmos DB، وفقًا لمتطلبات الإنتاجية المجمعة.

    • تحديد رسوم وحدة الطلب لعملية ما: يمكنك تحديد وحدات الطلب باستخدام أي من حزم SDK المدعومة من واجهة برمجة التطبيقات ل Cassandra. يوضح هذا المثال إصدار .NET من الحصول على رسوم RU.

      var tableInsertStatement = table.Insert(sampleEntity);
      var insertResult = await tableInsertStatement.ExecuteAsync();
      
      foreach (string key in insertResult.Info.IncomingPayload)
        {
           byte[] valueInBytes = customPayload[key];
           double value = Encoding.UTF8.GetString(valueInBytes);
           Console.WriteLine($"CustomPayload:  {key}: {value}");
        }
      
  • تخصيص معدل النقل المطلوب: يمكن لـ Azure Cosmos DB أن يقوم تلقائيا بتحجيم التخزين والإنتاجية مع نمو متطلباتكم. يمكنكم تقدير احتياجات معدل النقل باستخدام آلة حاسبة وحدة طلب Azure Cosmos DB.

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

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

  • تمكين TLS: يتمتع Azure Cosmos DB بمتطلبات ومعايير أمنية صارمة. تأكد من تمكين TLS عند التفاعل مع حسابكم. عند استخدام CQL مع SSH، يتوفر لديك خيار لتوفير معلومات TLS.

خيارات لترحيل البيانات

يمكنك نقل البيانات من أحمال عمل Cassandra الحالية إلى Azure Cosmos DB باستخدام الأمر cqlshCOPY، أو باستخدام Spark.

ترحيل البيانات باستخدام الأمر cqlsh COPY

استخدم الأمر CQL COPY لنسخ البيانات المحلية إلى واجهة برمجة التطبيقات لحساب Cassandra في Azure Cosmos DB.

تحذير

استخدم فقط نسخة CQL لترحيل مجموعات البيانات الصغيرة. لنقل مجموعات البيانات الكبيرة، رحِّل البيانات باستخدام Spark.

  1. للتأكد من أن ملف csv الخاص بك يحتوي على بنية الملف الصحيحة، استخدم الأمر COPY TO لتصدير البيانات مباشرة من جدول Cassandra المصدر إلى ملف csv (تأكد من أن cqlsh متصل بالجدول المصدر باستخدام بيانات الاعتماد المناسبة):

    COPY exampleks.tablename TO 'data.csv' WITH HEADER = TRUE;   
    
  2. الآن احصل على واجهة برمجة التطبيقات الخاصة بك للحصول على معلومات سلسلة الاتصال لحساب Cassandra:

    • قم بتسجيل الدخول إلى مدخل Microsoft Azure، وافتح حساب Azure Cosmos DB.

    • افتح جزء سلسلة الاتصال. هنا ترى جميع المعلومات التي تحتاجها للاتصال بواجهة برمجة التطبيقات الخاصة بك لحساب Cassandra من cqlsh.

  3. قم بتسجيل الدخول إلى cqlsh باستخدام معلومات الاتصال من المدخل.

  4. استخدم الأمر CQLCOPY FROM للنسخ data.csv (لا يزال موجوداً في الدليل الجذر للمستخدم حيث تم تثبيت cqlsh):

    COPY exampleks.tablename FROM 'data.csv' WITH HEADER = TRUE;
    

إشعار

تدعم واجهة برمجة التطبيقات ل Cassandra إصدار البروتوكول 4، الذي تم شحنه مع Cassandra 3.11. قد تحدث مشكلات في استخدام إصدارات أحدث للبروتوكول مع واجهة برمجة التطبيقات. يمكن لـ COPY FROM مع إصدار أحدث للبروتوكول الانتقال إلى حلقة وإرجاع صفوف مكررة. أضف إصدار البروتوكول إلى الأمر cqlsh.

cqlsh <USERNAME>.cassandra.cosmos.azure.com 10350 -u <USERNAME> -p <PASSWORD> --ssl --protocol-version=4
إضافة خيارات تحديد معدل النقل إلى الأمر CQL Copy

يدعم الأمر COPY في cqlsh معلمات مختلفة للتحكم في معدل استيعاب المستندات في Azure Cosmos DB.

يحاول التكوين الافتراضي لأمر COPY استيعاب البيانات بوتيرة سريعة جداً، ولا يأخذ في الاعتبار سلوك تحديد المعدل لـ CosmosDB. يجب تقليل CHUNKSIZE أو INGESTRATE اعتماداً على معدل النقل المُكوّن على المجموعة.

نوصي بالتكوين أدناه (كحد أدنى) لمجموعة بـ 20000 وحدة طلب إذا كان حجم المستند أو السجل 1 كيلوبايت.

  • CHUNKSIZE = 100
  • INGESTRATE = 500
  • MAXATTEMPTS = 10
أمثلة على الأوامر
  • نسخ البيانات من واجهة برمجة التطبيقات ل Cassandra إلى ملف csv المحلي
COPY standard1 (key, "C0", "C1", "C2", "C3", "C4") TO 'backup.csv' WITH PAGESIZE=100 AND MAXREQUESTS=1 ;
  • نسخ البيانات من ملف csv المحلي إلى واجهة برمجة التطبيقات ل Cassandra
COPY standard2 (key, "C0", "C1", "C2", "C3", "C4") FROM 'backup.csv' WITH CHUNKSIZE=100 AND INGESTRATE=100 AND MAXATTEMPTS=10;

هام

يتم دعم إصدار Apache Cassandra مفتوح المصدر فقط من CQLSH COPY. قد تواجه إصدارات Datastax Enterprise (DSE) من CQLSH أخطاء.

قم بترحيل البيانات باستخدام Spark

استخدم الخطوات التالية لترحيل البيانات إلى واجهة برمجة التطبيقات لحساب Cassandra باستخدام Spark:

  1. توفير مجموعة Azure Databricks أو مجموعة HDInsight Azure.

  2. نقل البيانات إلى واجهة برمجة التطبيقات الوجهة لنقطة نهاية Cassandra. راجع دليل كيفية الترحيل هذا باستخدام Azure Databricks.

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

الترحيل المباشر

عندما يكون الترحيل بدون توقف من مجموعة Apache Cassandra الأصلية مطلوباً، نوصي بتكوين عمليات الكتابة المزدوجة وتحميل بيانات مجمعة منفصلة لترحيل البيانات التاريخية. لقد جعلنا تطبيق هذا النمط أكثر وضوحاً من خلال توفير dual-write proxy مفتوح المصدر للسماح بأدنى حد من تغييرات التعليمة البرمجية للتطبيق. ألقِ نظرة على مقالتنا الإرشادية حول الترحيل المباشر باستخدام اdual-write proxy وApache Spark لمزيد من التفاصيل حول تنفيذ هذا النمط.

تنظيف الموارد

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

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

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