اختيار قاعدة بيانات: Cloud Firestore أو Realtime Database

تقدّم Firebase قاعدتَي بيانات مستندات مستندتَين إلى السحابة الإلكترونية ويمكن للعميل الوصول إليهما. ننصح العملاء الجدد بالبدء باستخدام Cloud Firestore

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

  • Realtime Database هي قاعدة بيانات JSON الكلاسيكية من Firebase. وهي مناسبة للتطبيقات التي تتضمّن نماذج بيانات بسيطة تتطلّب عمليات بحث بسيطة ومزامنة منخفضة وقت الاستجابة مع قابلية توسّع محدودة.

ما هي بعض الجوانب المهمة الأخرى التي يجب أخذها في الاعتبار؟

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

نموذج بيانات

كلّ من Realtime Database وCloud Firestore هما قاعدتا بيانات NoSQL.

Cloud Firestore [ مُفضَّلة ] Realtime Database
تخزِّن البيانات كمجموعات من المستندات.
  • من السهل تخزين البيانات البسيطة في المستندات التي تشبه إلى حد كبير JSON.
  • من الأسهل تنظيم البيانات المعقّدة والهرمية على نطاق واسع باستخدام المجموعات الفرعية داخل المستندات.
  • تتطلّب هذه القاعدة قدرًا أقل من إزالة التطبيع وتسوية البيانات.

مزيد من المعلومات عن Cloud Firestore نموذج البيانات.

تخزِّن البيانات كشجرة JSON كبيرة واحدة.
  • من السهل جدًا تخزين البيانات البسيطة.
  • من الصعب تنظيم البيانات المعقّدة والهرمية على نطاق واسع.

مزيد من المعلومات عن Realtime Database نموذج بيانات.

التوافق مع البيانات في الوقت الفعلي وبلا إنترنت

تتضمّن كلتا قاعدتَي البيانات حِزم SDK في الوقت الفعلي مصمّمة للأجهزة الجوّالة، وتتيحان تخزين البيانات محليًا للتطبيقات التي يمكن استخدامها بلا إنترنت.

Cloud Firestore [ مُفضَّلة ] Realtime Database
التوافق مع البيانات بلا إنترنت لأجهزة Apple وAndroid وعملاء الويب التوافق مع البيانات بلا إنترنت لأجهزة Apple وAndroid

الظهور

قد يكون من المفيد معرفة ما إذا كان العميل متصلاً بالإنترنت أو غير متصل. يمكن لـ Firebase Realtime Database تسجيل حالة اتصال العميل وتقديم تعديلات في كل مرة تتغيّر فيها حالة اتصال العميل.

Cloud Firestore [ مُفضَّلة ] Realtime Database
غير متوافق بشكلٍ أساسي يمكنك الاستفادة من ميزة الظهور في Realtime Database's من خلال مزامنة Cloud Firestore وRealtime Database باستخدام Cloud Functions راجِع مقالة إنشاء ميزة الظهور في Cloud Firestore. ميزة الظهور متوافقة

الاستعلام

يمكنك استرداد البيانات وترتيبها وفلترتها من أيّ من قاعدتَي البيانات من خلال طلبات البحث.

Cloud Firestore [ مُفضَّلة ] Realtime Database
طلبات بحث مفهرسة تتضمّن ترتيبًا وفلترة مركّبَين
  • يمكنك ربط الفلاتر ودمج الفلترة والترتيب في سمة في طلب بحث واحد.
  • تكون طلبات البحث سطحية: لا تعرض إلا المستندات في مجموعة معيّنة أو مجموعة مجموعات ولا تعرض بيانات المجموعات الفرعية.
  • يجب أن تعرض طلبات البحث دائمًا مستندات كاملة.
  • تكون طلبات البحث مفهرسة تلقائيًا: يتناسب أداء طلب البحث مع حجم مجموعة النتائج، وليس مع مجموعة البيانات.
طلبات بحث عميقة تتضمّن ميزات محدودة لل ترتيب والفلترة.
  • يمكن لطلبات البحث ترتيب أو فلترة سمة، ولكن ليس كليهما.
  • تكون طلبات البحث عميقة تلقائيًا: تعرض دائمًا الشجرة الفرعية بأكملها.
  • يمكن لطلبات البحث الوصول إلى البيانات بأي مستوى من التفاصيل، وصولاً إلى قيم العُقد الطرفية الفردية في شجرة JSON.
  • لا تتطلّب طلبات البحث فهرسًا، ولكن يتدهور أداء بعض طلبات البحث مع نمو مجموعة البيانات.

عمليات الكتابة والمعاملات

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

الموثوقية والأداء

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

مدة التشغيل

Cloud Firestore [ مُفضَّلة ] Realtime Database
أداء عالٍ للغاية في مدة التشغيل
  • أداء نموذجي في مدة التشغيل بنسبة %99.999
  • إذا كان التوفّر مهمًا للغاية، مثلاً في تطبيقات التجارة الإلكترونية، استخدِم Cloud Firestore.
أداء عالٍ في مدة التشغيل
  • أداء نموذجي في مدة التشغيل بنسبة %99.95

قابلية التوسّع

Cloud Firestore [ مُفضَّلة ] Realtime Database
التوسّع تلقائي
  • يتم توسيع النطاق تلقائيًا بالكامل. ما مِن حدود قصوى مسموح بها لعدد الاتصالات المتزامنة أو معدّل عمليات الكتابة الإجمالية في قاعدة البيانات في الثانية.
  • تُفرض حدود قصوى على معدّلات الكتابة في المستندات أو الفهارس الفردية.
يتطلّب التوسّع تقسيم البيانات
  • يمكنك توسيع النطاق إلى حوالي 200,000 اتصال متزامن و1,000 عملية كتابة في الثانية في قاعدة بيانات واحدة. يتطلّب التوسّع إلى ما بعد ذلك تقسيم بياناتك على قواعد بيانات متعددة.
  • ما مِن حدود قصوى محلية مسموح بها لمعدّلات الكتابة في أجزاء البيانات الفردية.

الأمان

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

الأسعار

يتوفّر كلا الحلّين في خطتَي الأسعار Spark وBlaze.

Cloud Firestore [ مُفضَّلة ] Realtime Database
يتم فرض رسوم بشكلٍ أساسي على العمليات التي يتم إجراؤها في قاعدة البيانات (القراءة والكتابة والحذف) ، وبمعدّل أقل، على النطاق الترددي ومساحة التخزين.

Cloud Firestore تتيح الميزانيات والتنبيهات الشهرية لتجنُّب إنفاق أكثر مما يناسبك.

مزيد من المعلومات عن Cloud Firestore خطط الأسعار.

يتم فرض رسوم فقط على النطاق الترددي ومساحة التخزين ، ولكن بمعدّل أعلى.

مزيد من المعلومات عن Realtime Database خطط الأسعار.

استخدام Cloud Firestore وRealtime Database

يمكنك استخدام كلتا قاعدتَي البيانات ضمن تطبيق أو مشروع Firebase نفسه. يمكن لقاعدتَي بيانات NoSQL تخزين أنواع البيانات نفسها، وتعمل مكتبات العميل بطريقة مماثلة. ضع في اعتبارك الاختلافات الموضّحة سابقًا إذا قرّرت استخدام كلتا قاعدتَي البيانات في تطبيقك.

مزيد من المعلومات عن الميزات المتاحة في كلّ من Realtime Database وCloud Firestore.

هل أنت مستعد لاختيار قاعدة بيانات؟

نأمل أن تكون هذه المقارنة قد ساعدتك في اختيار حل قاعدة بيانات Firebase. يمكنك الآن التعرّف على كيفية إضافة قاعدة بيانات إلى مشاريعك على Firebase.

  • بالنسبة إلى Cloud Firestore، يمكنك الاطّلاع على مقالة بدء استخدام Cloud Firestore.
  • بالنسبة إلى Realtime Database، يمكنك قراءة موضوع "البدء" للنظام الأساسي الذي تستخدمه: Apple أو Android أو C++ أو Unity أو Web أو REST.