اختيار قاعدة بيانات: 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 [ PREFERRED ] 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.