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

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

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

جارٍ نقل البيانات إلى Cloud Firestore

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

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

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

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

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

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

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

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

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

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

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

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

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

ننصحك باستخدام تطبيق لدليل المدينة يساعد المستخدمين في العثور على المعالم البارزة في المدن. حول العالم بما أنّ "Realtime Database" يفتقر إلى القراءات السطحية، ربما كان عليك اتّخاذ الإجراءات التالية: هيكلة البيانات في عقدتين من المستوى الأعلى، على النحو التالي:

// /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" في تقليل الحاجة إلى تكرار البيانات لأنماط الوصول الشائعة. على سبيل المثال، ضع في اعتبارك شاشة في تطبيق دليل المدينة الذي يعرض جميع المدن العاصمة مرتبة حسب عدد السكان. والطريقة الأكثر فعالية في Realtime Database لإجراء ذلك هي الاحتفاظ بوحدة تخزين قائمة بالمدن التي تكرّر البيانات من القائمة cities على النحو التالي:

{
   cities: {
    // ...
   },

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

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

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

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

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

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

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

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

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

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

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

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

  1. تصدير بياناتك من "Realtime Database" أو استخدام نسخة احتياطية حديثة.
    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 Functions لتنفيذ عملية الكتابة على Cloud Firestore عندما يكتب عميل إلى Realtime Database. تأكَّد من أنّ Cloud Firestore يعطي الأولوية للبيانات الجديدة الواردة من Cloud Functions على أي عمليات كتابة التي تجريها من ترحيل البيانات السابقة.

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

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

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

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

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