استخدام Cloud Firestore مع "قاعدة بيانات Firebase في الوقت الفعلي"

يمكنك استخدام كلٍّ من "قاعدة بيانات Firebase في الوقت الفعلي" وCloud Firestore في تطبيقك والاستفادة من فوائد كل حل قاعدة بيانات لتناسب احتياجاتك. على سبيل المثال، قد ترغب في الاستفادة من دعم قاعدة بيانات الوقت الفعلي، كما هو موضح في تعزيز التواجد في Cloud Firestore

مزيد من المعلومات حول الاختلافات بين قواعد البيانات.

نقل البيانات إلى Cloud Firestore

إذا قررت أنك تريد ترحيل بعض بياناتك من قاعدة البيانات في الوقت الفعلي إلى Cloud Firestore، يُرجى مراعاة الخطوات التالية. نظرًا لأن كل قاعدة بيانات تحتوي على احتياجات فريدة واعتبارات هيكلية، فليس هناك مسار النقل التلقائي. بدلاً من ذلك، يمكنك متابعة هذا التقدم العام:

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

  2. نقل البيانات السابقة: أثناء إعداد بنية البيانات الجديدة في Cloud Firestore، يمكنك تعيين البيانات الحالية ونقلها من قاعدة بيانات الوقت الفعلي إلى Cloud Firestore الجديد مثال. ومع ذلك، إذا كنت تستخدم كلتا قاعدتَي البيانات في تطبيقك، فلا تحتاج إلى نقل البيانات التاريخية من قاعدة بيانات الوقت الفعلي.

  3. اعرض البيانات الجديدة على Firestore في الوقت الفعلي. استخدام دوال Cloud لكتابة بيانات جديدة إلى الإصدار الجديد من Cloud Firestore عند إضافتها إلى قاعدة بيانات الوقت الفعلي.

  4. اجعل Cloud Firestore قاعدة البيانات الأساسية للبيانات التي يتم نقلها. بعد نقل بعض البيانات، استخدِم Cloud Firestore كقاعدة بيانات أساسية لديك وتقلل من استخدام قاعدة البيانات في الوقت الفعلي البيانات. التفكير في إصدارات تطبيقك التي لا تزال مرتبطة بـ قاعدة البيانات في الوقت الفعلي لهذه البيانات وكيف تخطط لمواصلة توفيرها.

تأكَّد من احتساب تكاليف الفوترة. لكل من قاعدة بيانات الوقت الفعلي وCloud Firestore

تعيين البيانات

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

الاختلافات الرئيسية التي يجب مراعاتها

إذا نقلت البيانات من شجرة قاعدة البيانات الحالية في الوقت الفعلي إلى Cloud Firestore الوثائق والمجموعات، ضع في اعتبارك الاختلافات الرئيسية التالية بين قواعد البيانات التي قد تؤثر على كيفية هيكلة البيانات في Cloud Firestore:

  • توفر الاستعلامات الضحلة مزيدًا من المرونة في هياكل البيانات الهرمية.
  • توفّر طلبات البحث المعقّدة دقة أكبر وتقلل من الحاجة إلى التكرار. البيانات.
  • تقدّم مؤشرات طلبات البحث تقسيمًا على صفحات أكثر فعالية.
  • لم تعُد المعاملات تتطلب جذرًا مشتركًا لجميع بياناتك، وأصبحت أكثر كفاءة.
  • تختلف تكاليف الفوترة بين قاعدة بيانات "الوقت الفعلي" وCloud Firestore. بعدة طرق فإن Cloud Firestore أكثر تكلفة من قاعدة بيانات Realtime، خاصة إذا كنت تعتمد على العديد من العمليات الصغيرة. ضع في اعتبارك تقليل عدد العمليات على قاعدة البيانات وتجنب وعمليات الكتابة غير الضرورية. مزيد من المعلومات عن الاختلافات في الفوترة بين قاعدة بيانات الوقت الفعلي وCloud Firestore.

أفضل الممارسات عمليًا

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

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

// /cities/$CITY_KEY
{
  name: "New York",
  population: 8000000,
  capital: False
}

// /city-landmark/$CITY_KEY/$LANDMARK_KEY
{
  name: "Empire State Building",
  category: "Architecture"
}

تحتوي Cloud Firestore على قراءات سطحية، لذلك يمكن الاستعلام عن المستندات الموجودة في مجموعة لا تسحب البيانات من المجموعات الفرعية. وبالتالي، يمكنك تخزين معلومات المعلومات في مجموعة فرعية:

// /cities/$CITY_ID
{
  name: "New York",
  population: 8000000,
  capital: False,
  landmarks: [... subcollection ...]
}

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

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

{
   cities: {
    // ...
   },

   capital-cities: {
     // ...
   }
}

في Cloud Firestore، يمكنك التعبير عن قائمة بالعواصم بترتيب المجموعة بالكامل كطلب بحث واحد:

db.collection('cities')
    .where('capital', '==', true)
    .orderBy('population')

يمكنك الاطّلاع على مزيد من المعلومات حول نموذج بيانات Cloud Firestore وإجراء وانظر إلى الحلول لمزيد من الأفكار حول كيفية هيكلة قاعدة بيانات Cloud Firestore.

تأمين بياناتك

سواء كنت تستخدم قواعد أمان Cloud Firestore برامج Android أو Apple أو الويب، أو إدارة الوصول إلى الهوية (IAM) بالنسبة إلى الخوادم، فتأكد من أنك تؤمّن بياناتك في Cloud Firestore أيضًا كقاعدة بيانات في الوقت الفعلي. يتم التعامل مع مصادقة المستخدم عن طريق المصادقة لكل من قاعدتي البيانات، لذا لن تكون بحاجة إلى تغيير تنفيذ المصادقة عند بدء باستخدام Cloud Firestore.

الاختلافات الرئيسية التي يجب مراعاتها

  • تستخدم حِزم SDK على الويب والأجهزة الجوّالة قواعد أمان Cloud Firestore، بينما يستخدم الخادم تستخدم حِزم SDK "إدارة الوصول إلى الهوية" (IAM) لتأمين البيانات.
  • لا تتتابع قواعد أمان Cloud Firestore إلا إذا استخدمت حرف بدل. المستندات لا ترث المجموعات القواعد بطريقة أخرى.
  • لم تعد بحاجة إلى التحقق من صحة البيانات بشكل منفصل (كما فعلت في قاعدة بيانات الوقت الفعلي).
  • تفحص Cloud Firestore القواعد قبل تنفيذ طلب بحث للتأكد بأن المستخدم لديه حق الوصول المناسب لجميع البيانات التي يعرضها الاستعلام.

نقل البيانات السابقة إلى Cloud Firestore

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

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

لنقل البيانات السابقة إلى Cloud Firestore، يُرجى اتّباع الخطوات التالية:

  1. قم بتصدير بياناتك من قاعدة بيانات الوقت الفعلي أو استخدام نسخة احتياطية حديثة.
    1. الانتقال إلى قسم قسم Realtime Database في وحدة تحكُّم Firebase.
    2. من علامة التبويب البيانات، اختَر عقدة مستوى الجذر لقاعدة البيانات واختَر صدِّر JSON من القائمة.
  2. أنشئ قاعدة البيانات الجديدة في Cloud Firestore إضافة بياناتك

    ضع في اعتبارك الاستراتيجيات التالية عند نقل بعض بياناتك إلى Cloud Firestore:

    • كتابة نص برمجي مخصّص ينقل بياناتك نيابةً عنك على الرغم من أننا لا نستطيع تقديم قالبًا لهذا النص البرمجي، لأن كل قاعدة بيانات لها احتياجات فريدة، خبراء Cloud Firestore على قناة Slack أو على Stack Overflow مراجعة النص أو تقديم المشورة لموقفك المحدد.
    • استخدام حِزم تطوير البرامج (SDK) الخاصة بالخادم (Node.js أو Java أو Python أو Go) لكتابة البيانات مباشرةً إلى Cloud Firestore. للحصول على تعليمات حول إعداد حزم SDK الخاصة بالخادم، يُرجى الاطّلاع على البدء
    • لتسريع عمليات نقل البيانات الكبيرة، استخدم الكتابات المجمّعة وإرسال ما يصل إلى 500 عملية في طلب شبكة واحد.
    • للبقاء ضمن حدود المعدل في Cloud Firestore، تقييد العمليات إلى 500 عملية كتابة/ثانية لكل مجموعة.

إضافة بيانات جديدة إلى Cloud Firestore

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

إنشاء دالة لكتابة بيانات جديدة أو متغيرة في Cloud Firestore في كل مرة يكتب فيها أحد العملاء البيانات إلى قاعدة بيانات الوقت الفعلي. مزيد من المعلومات حول مشغّلات قاعدة البيانات في الوقت الفعلي لـ Cloud Functions.

جعل Cloud Firestore قاعدة البيانات الأساسية للبيانات التي يتم نقلها

إذا قررت استخدام Cloud Firestore كقاعدة بيانات أساسية لبعض لبياناتك، تأكد من حساب أي دوال للنسخ المطابق للبيانات لإعداد قواعد أمان Cloud Firestore والتحقق من صحتها.

  1. إذا استخدمت دوال Cloud للحفاظ على التكافؤ بين قواعد البيانات، تأكد من عدم تكرار عمليات الكتابة في كلتا قاعدتي البيانات في تكرار. بدِّل الدالة للكتابة إلى قاعدة بيانات واحدة، أو أزِل بشكل كامل والبدء في الإلغاء التدريجي لوظيفة الكتابة البيانات التي تم نقلها في التطبيقات التي لا تزال مرتبطة بقاعدة بيانات الوقت الفعلي. كيف تتعامل مع هذا لتطبيقك بالاستناد إلى احتياجاتك المحددة والمستخدمين.

  2. تحقق من أن بياناتك مؤمنة بشكل صحيح. التحقُّق من قواعد أمان Cloud Firestore أو إعداد إدارة الهوية وإمكانية الوصول.