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

يوفر Firebase قاعدتي بيانات للمستندات تستند إلى السحابة ويمكن الوصول إليها من قبل العميل. نقترح أن يبدأ العملاء الجدد بـ Cloud Firestore:

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

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

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

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

نموذج البيانات

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

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

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

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

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

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

يتضمّن كلاهما حِزم تطوير برامج (SDK) مخصّصة للأجهزة الجوّالة تعمل في الوقت الفعلي، ويتوافقان مع ميزة تخزين البيانات على الجهاز لتطبيقات التشغيل بلا إنترنت.

Cloud Firestore [ PREFERRED ] Realtime Database
التوافق مع وضع عدم الاتّصال بالإنترنت لعملاء Apple وAndroid وبرامج الويب تتوفّر خدمة الدعم بلا اتصال بالإنترنت لعملاء Apple وAndroid.

التواجد في المنزل

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

Cloud Firestore [ PREFERRED ] Realtime Database
غير متاحة في الأصل. يمكنك الاستفادة من ميزة "التواجد" المتاحة في Realtime Database من خلال مزامنة Cloud Firestore وRealtime Database باستخدام Cloud Functions راجِع مقالة إنشاء ميزة "التواجد" في Cloud Firestore. الحضور متاح:

الاستعلام

استرداد البيانات وفرزها وتصفيتها من أي قاعدة بيانات من خلال الاستعلامات.

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

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

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

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

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

مدة التشغيل

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

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

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

الأمان

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

الأسعار

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

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

تتيح Cloud Firestore حدود الإنفاق اليومية لمشاريع App Engine للتأكّد من عدم تجاوز التكاليف التي تناسبك.

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

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

تعرَّف على المزيد من المعلومات عن خطط أسعار "Realtime Database".

Cloud Firestore وRealtime Database

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

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

هل أنت جاهز لاختيار قاعدة بيانات؟

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