نظرة عامة على "وضع Firestore الأصلي"

يتألف "وضع Firestore الأصلي" من مجموعتَين من العمليات، وهما عمليات Firestore الأساسية وعمليات Firestore Pipeline.

توفّر عمليات Firestore Core وظائف إنشاء المستندات وقراءتها وتعديلها وحذفها (CRUD) العادية، بالإضافة إلى دعم مدمج لطلبات الاستماع في الوقت الفعلي واستمرار البيانات بلا اتصال بالإنترنت. يتمثّل الاختلاف التشغيلي الواضح في هذا الإصدار في أنّ الفهارس اختيارية ولا يتم إنشاؤها تلقائيًا للحقول الفردية. مع أنّ ذلك يسمح بتنفيذ طلبات البحث بدون إعداد الفهرس مسبقًا، سيتم تلقائيًا فحص المجموعة بأكملها عند تنفيذ طلبات بحث غير مفهرسة. ويمكن أن يؤدي ذلك إلى زيادة وقت الاستجابة والتكاليف مع زيادة حجم مجموعة البيانات.

عمليات Firestore Pipeline هي ميزة أساسية في إصدار Firestore Enterprise، وهي تستند إلى محرّك طلبات بحث متقدّم لتوسيع نطاق طلبات البحث الممكنة بشكل كبير. تستخدم عمليات Firestore Pipeline بنية طلب بحث مرنة وطريقة فهرسة مميزة تكون فيها الفهارس اختيارية ولا يتم إنشاؤها تلقائيًا، ما يتيح عمليات استرجاع البيانات المتقدّمة للتطبيقات.

ميزات العمليات الأساسية في Firestore

تسمح العمليات الأساسية بعمليات CRUD العادية وطلبات الاستماع في الوقت الفعلي. ومع ذلك، عند استخدام هذه العمليات في إصدار Enterprise، يختلف السلوك الأساسي المتعلق بالفهرسة والفوترة بشكل كبير مقارنةً بإصدار Standard.

الوظائف والاستمرارية

تحتفظ العمليات الأساسية ببنية ربط السلاسل المألوفة (على سبيل المثال، .where() و.orderBy()) المستخدَمة في الإصدار العادي. تتيح هذه العمليات تنفيذ طلبات البحث في الوقت الفعلي والاستمرار في الاستماع بلا اتصال بالإنترنت على تطبيقات الأجهزة الجوّالة والويب. يُنصح باستخدام هذه العمليات لأحمال العمل المعاملاتية العادية وعمليات البحث البسيطة ونقل رمز التطبيق الحالي.

الفهرسة المخصّصة

على عكس الإصدار Standard، لا تنشئ عملية Core في الإصدار Enterprise فهارس ذات حقل واحد تلقائيًا. الفهارس اختيارية وليست مطلوبة لتنفيذ طلب بحث. في حال عدم توفّر فهرس معيّن، ينفّذ طلب البحث عملية فحص كاملة للمجموعة. في حين أنّ طلبات البحث غير المفهرسة تتيح إنشاء نماذج أولية بسرعة، قد يكون أداؤها أبطأ وتكلفتها أعلى مع زيادة حجم مجموعة البيانات. على المطوّرين إنشاء فهارس يدويًا لتحسين أداء الاستعلامات وتقليل استهلاك وحدات القراءة.

نموذج الفوترة (حسب الوحدة)

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

ميزات عمليات Firestore Pipeline

يستخدم إصدار Firestore Enterprise مع عمليات Pipeline محرّك طلبات بحث متقدّمًا يزيل العديد من القيود الحالية في إصدار Firestore Standard. توفّر عمليات Firestore Pipeline مئات الميزات الإضافية للاستعلام. تتضمّن عمليات Firestore Pipeline الإمكانات التالية:

بنية قابلة للإنشاء تستند إلى مراحل

يتم إنشاء طلبات البحث في سلسلة المعالجة من خلال تحديد سلسلة من المراحل المتسلسلة التي يتم تنفيذها بالترتيب. يتيح ذلك إجراء عمليات معقّدة، مثل الفلترة حسب نتيجة تجميع البيانات، وهو ما لم يكن ممكنًا في السابق.

يعرض المثال التالي طلب بحث في مسار بيانات يعثر على عدد معرّفات المنتجات الفريدة التي تم عرضها خلال الشهر الماضي:

guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
  return
}
let snapshot = try await db.pipeline()
  .collection("productViews")
  .where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
  .aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
  .execute()

إمكانات موسّعة

تقدّم طلب البحث "خطوط الإنتاج" عددًا كبيرًا من الإمكانات الجديدة، بما في ذلك:

  • عمليات التجميع: إتاحة دوال تجميع جديدة (مثل sum(...) وmin(...) وcount_distinct(...)) مع حقول تجميع عشوائية
  • الفلترة المعقّدة: إتاحة مئات الوظائف الإضافية للتعبير عن عبارات where(...) المعقّدة بشكل عشوائي، بما في ذلك regex_match(...) وadd(...) وstr_contains(...)، وكل ذلك بدون متطلبات فهرس ثابتة.
  • عمليات القراءة الجزئية / عمليات العرض: يمكنك استرداد مجموعات فرعية ديناميكية من المستندات باستخدام select(...) وremove_fields(...) والعديد من مراحل معالجة المستندات الأخرى.

لمزيد من المعلومات حول هذه الإمكانات، راجِع الاستعلام عن البيانات باستخدام عمليات Pipeline.

التوافق مع ميزة "التعاون في الوقت الفعلي" و"التعديل بلا إنترنت"

لاستخدام ميزتَي "في الوقت الفعلي" و"بلا إنترنت"، يمكن للمطوّرين استخدام عمليات Firestore Core في إصدار Firestore Enterprise.

دمج العميل والأدوات

يتضمّن إصدار Enterprise ميزات متخصّصة للتفاعل مع "طلبات بحث المسار" وإدارتها:

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

الاختلافات بين Firestore Standard وFirestore Enterprise

يتمثل الاختلاف التشغيلي الرئيسي بين عمليات Core وPipeline في إدارة الفهرسة، ما يؤثر بشكل مباشر في الأداء والتكلفة.

‫Firestore Standard - العمليات الأساسية Firestore Enterprise - عمليات Core وPipeline
متطلبات الفهرسة يجب توفّر فهارس لطلبات البحث.

يتم إنشاء فهارس للحقول الفردية تلقائيًا، بينما تعتمد طلبات البحث الأكثر تعقيدًا على الفهارس المركّبة أو فهارس مجموعات المجموعات التي يجب إعدادها يدويًا.

لا تكون الفهارس مطلوبة، وبالتالي تكون اختيارية لطلبات البحث.

يمكنك تحديد الفهارس حسب الحاجة. يتوافق إصدار Enterprise أيضًا مع مجموعة أكبر من أنواع الفهارس، بما في ذلك الفهارس غير المتفرقة/المتفرقة والفهارس الفريدة.

الأداء طلبات البحث المفهرسة: يتناسب الأداء والتكلفة مع حجم مجموعة النتائج.

طلبات البحث غير المفهرسة: يتناسب الأداء والتكلفة مع حجم مجموعة البيانات.

طلبات البحث المفهرسة: يتناسب الأداء والتكلفة مع حجم مجموعة النتائج.

ننصحك باستخدام أداتَي "شرح طلب البحث" و"إحصاءات طلب البحث" لإنشاء فهارس وتحسين أداء طلبات البحث وتكلفتها.

تأثير تكلفة التخزين تتحمّل تكلفة إضافية لمساحة التخزين بسبب الفهارس التلقائية والفهارس المركّبة. يمكنك توفير تكاليف التخزين لأنّه لا يتم إنشاء فهارس تلقائيًا لكل حقل.
أساس التكلفة يتم تحصيل الرسوم مقابل كل عملية قراءة وكتابة وحذف مستند. يتم تحصيل الرسوم لكل وحدة قراءة (شرائح 4 كيلوبايت) ووحدة كتابة (شرائح 1 كيلوبايت). يؤدي إنشاء إدخالات الفهرس إلى استهلاك وحدات الكتابة.

يمكنك الاطّلاع على الأسعار الجديدة مع بعض الأمثلة.

قواعد الأمان توفّر قواعد الأمان الحماية للمجموعات من خلال التحقّق من أذونات القراءة والكتابة. توفّر قواعد الأمان الحماية للمجموعات من خلال التحقّق من أذونات القراءة والكتابة. يمكنك الاطّلاع على دليل نموذج البيانات لمعرفة كيفية تصميم بياناتك لتتوافق مع طلبات البحث في المسار.