يتألف وضع Firestore في Native من مجموعتَين من العمليات، وهما عمليات Firestore الأساسية وعمليات Firestore Pipeline.
توفّر عمليات Firestore الأساسية وظائف إنشاء المستندات وقراءتها وتعديلها وحذفها (CRUD) العادية، بالإضافة إلى إمكانية الاستماع إلى طلبات البحث في الوقت الفعلي وإتاحة البيانات بلا اتصال بالإنترنت. يتمثّل الاختلاف التشغيلي الواضح في هذه الإصدارات في أنّ الفهارس اختيارية ولا يتم إنشاؤها تلقائيًا للحقول الفردية. مع أنّ ذلك يسمح بتنفيذ طلبات البحث بدون ضبط الفهرس مسبقًا، سيتم تلقائيًا فحص المجموعة بأكملها عند تنفيذ طلبات البحث غير المفهرسة. ويمكن أن يؤدي ذلك إلى زيادة وقت الاستجابة والتكاليف مع زيادة حجم مجموعة البيانات.
تُعدّ عمليات Firestore Pipeline ميزة أساسية في إصدار Firestore Enterprise، وهي تستند إلى محرّك طلبات بحث متقدّم لتوسيع نطاق طلبات البحث الممكنة بشكل كبير. تستخدم عمليات المسار بنية طلب بحث مرنة وطريقة فهرسة مميزة تكون فيها الفهارس اختيارية ولا يتم إنشاؤها تلقائيًا، ما يتيح عمليات استرجاع البيانات المتقدّمة للتطبيقات.
ميزات العمليات الأساسية في Firestore
تتيح العمليات الأساسية عمليات الإنشاء والقراءة والتعديل والحذف القياسية وطلبات الاستماع في الوقت الفعلي. ومع ذلك، عند استخدام هذه العمليات في إصدار Enterprise، يتغيّر السلوك الأساسي المتعلق بالفهرسة والفوترة بشكل كبير مقارنةً بإصدار Standard.
الوظائف والاستمرارية
تحتفظ العمليات الأساسية ببنية تسلسل الدوال المألوفة (على سبيل المثال، .where() و.orderBy()) المستخدَمة في الإصدار العادي. تتيح هذه العمليات تنفيذ طلبات البحث بالاستماع في الوقت الفعلي، كما تتيح حفظ البيانات بلا إنترنت على الأجهزة الجوّالة وعملاء الويب. يُنصح باستخدام هذه العمليات لأحمال العمل المعاملاتية العادية وعمليات البحث البسيطة ونقل رمز التطبيق الحالي.
الفهرسة المخصّصة
على عكس الإصدار Standard، لا تنشئ عمليات Core في الإصدار Enterprise فهارس ذات حقل واحد تلقائيًا. الفهارس اختيارية وليست مطلوبة لتنفيذ طلب بحث. إذا كان فهرس معيّن مفقودًا، ينفّذ طلب البحث عملية فحص كاملة للمجموعة. في حين أنّ طلبات البحث غير المفهرسة تتيح إنشاء نماذج أولية بسرعة، قد يكون أداؤها أبطأ وتكلّف أكثر مع زيادة حجم مجموعة البيانات. على المطوّرين إنشاء الفهارس يدويًا لتحسين أداء طلبات البحث وتقليل استهلاك وحدات القراءة.
نموذج الفوترة (حسب الوحدة)
يتم تحصيل رسوم مقابل وحدات القراءة على شكل شرائح بحجم 4 كيلوبايت بدلاً من احتسابها لكل مستند. سيؤدي طلب بحث غير مفهرس يفحص مجموعة كبيرة إلى استهلاك وحدات قراءة استنادًا إلى إجمالي عدد البايتات التي تم فحصها في جميع المستندات. يتم تحصيل رسوم الوحدات على شكل شرائح بحجم 1 كيلوبايت. يؤدي إنشاء مستند إلى استهلاك وحدات للبيانات بالإضافة إلى وحدات إضافية لكل إدخال فهرس تم تعديله. على عكس الإصدار العادي الذي يفرض فهرسة تلقائية لحقل واحد، يمكنك الآن اختيار حقول معيّنة لفهرستها من أجل تحسين تكاليف الكتابة والأداء.
ميزات عمليات Firestore Pipeline
يستخدم إصدار Firestore Enterprise مع عمليات Pipeline محرّك طلبات بحث متقدّمًا يزيل العديد من القيود الحالية في إصدار Firestore Standard. توفّر عمليات خطوط النقل مئات الميزات الإضافية للاستعلامات. تتضمّن عمليات 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 في إدارة الفهرسة، ما يؤثر بشكل مباشر في الأداء والتكلفة.
| الإصدار العادي - العمليات الأساسية | إصدار Enterprise - عمليات Core وPipeline | |
| متطلبات الفهرسة | يجب توفير فهارس لطلبات البحث.
يتم إنشاء فهارس للحقول الفردية تلقائيًا، بينما تعتمد طلبات البحث الأكثر تعقيدًا على الفهارس المركّبة أو فهارس مجموعات المجموعات التي يجب إعدادها يدويًا. |
لا تكون الفهارس مطلوبة، وبالتالي تكون اختيارية لطلبات البحث.
يمكنك تحديد الفهارس حسب الحاجة. يتوافق إصدار Enterprise أيضًا مع مجموعة أكبر من أنواع الفهارس، بما في ذلك الفهارس غير المتفرقة/المتفرقة والفهارس الفريدة. |
| الأداء | طلبات البحث المفهرسة: يتناسب الأداء والتكلفة مع حجم مجموعة النتائج. |
طلبات البحث غير المفهرسة: تتناسب مقاييس الأداء والتكلفة مع حجم مجموعة البيانات. طلبات البحث المفهرسة: يتناسب الأداء والتكلفة مع حجم مجموعة النتائج. ننصحك باستخدام أداتَي "شرح طلب البحث" و"إحصاءات طلب البحث" لإنشاء فهارس وتحسين أداء طلبات البحث وتكلفتها. |
| تأثير تكلفة التخزين | تتحمّل تكلفة إضافية لمساحة التخزين بسبب الفهارس التلقائية والفهارس المركّبة. | يمكنك توفير تكاليف التخزين لأنّه لا يتم إنشاء فهارس تلقائيًا لكل حقل. |
| أساس التكلفة | يتم تحصيل الرسوم مقابل كل عملية قراءة وكتابة وحذف مستند. | يتم تحصيل الرسوم مقابل كل وحدة قراءة (شرائح بحجم 4 كيلوبايت) ووحدة كتابة (شرائح بحجم 1 كيلوبايت). يؤدي إنشاء إدخالات الفهرس إلى استهلاك وحدات الكتابة.
يمكنك الاطّلاع على الأسعار الجديدة مع بعض الأمثلة. |
| قواعد الأمان | توفّر قواعد الأمان الحماية للمجموعات من خلال التحقّق من أذونات القراءة والكتابة. | توفّر قواعد الأمان الحماية للمجموعات من خلال التحقّق من أذونات القراءة والكتابة. يمكنك الاطّلاع على كيفية تصميم بياناتك لتتوافق مع طلبات البحث في Pipeline في دليل نموذج البيانات. |