توضّح هذه الصفحة كيفية استخدام واجهة برمجة تطبيقات MongoDB ووحدة تحكّم Google Cloud وGoogle Cloud CLI لضبط فهارس مدة البقاء (TTL).
نظرة عامة على مدة البقاء على قيد الحياة
استخدِم فهارس TTL لإزالة البيانات القديمة تلقائيًا من قواعد البيانات. يحدّد فهرس TTL حقلاً معيّنًا ليكون وقت انتهاء صلاحية المستندات في مجموعة معيّنة. باستخدام مدة البقاء، يمكنك خفض تكاليف التخزين من خلال إزالة البيانات القديمة. يتم عادةً حذف البيانات في غضون 24 ساعة بعد انتهاء صلاحيتها.
الأسعار
تستخدِم عمليات الحذف حسب مدة البقاء (TTL) وحدات حذف مُدارة. للاطّلاع على الأسعار، يُرجى الانتقال إلى Cloud Firestore أسعار إصدار Enterprise.
الحدود والقيود
- يمكنك إنشاء فهرس TTL واحد فقط لكل مجموعة.
- يمكنك الحصول على 500 فهرس TTL كحدّ أقصى.
حذف بيانات TTL
يُرجى ملاحظة السلوكيات الرئيسية التالية للحذف المستند إلى فترة البقاء:
لا تتم عملية الحذف من خلال فترة البقاء على قيد الحياة بشكل فوري. تستمر المستندات المنتهية الصلاحية في الظهور في طلبات البحث والاسترجاع إلى أن تتم إزالتها فعليًا من خلال عملية TTL. تتضمن مدة البقاء (TTL) مقايضة بين سرعة حذف البيانات وميزة تقليل التكلفة الإجمالية للملكية لعمليات الحذف. يتم عادةً حذف البيانات في غضون 24 ساعة بعد انتهاء صلاحيتها.
يؤدي إنشاء فهرس TTL في مجموعة حالية إلى حذف مجمّع لجميع البيانات المنتهية الصلاحية وفقًا لفهرس TTL الجديد. يُرجى العِلم أنّ عملية الحذف المجمّع هذه ليست فورية أيضًا وتعتمد على مقدار البيانات المتوفّرة في تلك المجموعة.
إذا كان المستند يتضمّن وقت انتهاء صلاحية في الماضي وأضفت فهرس TTL جديدًا إلى المجموعة، سيتم حذف المستند في غضون 24 ساعة من انتهاء إعداد فهرس TTL وتفعيله.
لا يؤدي TTL بالضرورة إلى حذف المستندات بالترتيب نفسه الذي تم به تسجيل الطوابع الزمنية لانتهاء صلاحيتها.
لا تتم عمليات الحذف بشكل متسلسل. لا يتم بالضرورة حذف المستندات التي لها وقت انتهاء صلاحية مماثل في الوقت نفسه. إذا كنت بحاجة إلى هذا السلوك، عليك إجراء عمليات الحذف باستخدام مكتبة عميل.
سيلتزم Cloud Firestore دائمًا بأحدث قيمة في حقل مدة البقاء (TTL) لتحديد تاريخ انتهاء الصلاحية. على سبيل المثال، إذا تم تعديل حقل TTL لمستند منتهي الصلاحية ولكن لم يتم حذفه بعد إلى تاريخ لاحق، لن تنتهي صلاحية المستند وسيتم استخدام التاريخ الجديد.
لا تنتهي صلاحية المستند في Cloud Firestore إلا عندما يتم ضبط حقل مدة البقاء (TTL) على القيمة
Date and time/BSON Dateأو القيمةArrayالتي تحتوي على القيمةDate and time/BSON Date. اترك الحقل فارغًا أو اضبطه على قيمة مثلnullلإيقاف عمليات انتهاء الصلاحية على أساس كل مستند على حدة.تم تصميم TTL لتقليل التأثير في أنشطة قاعدة البيانات الأخرى. يتم التعامل مع عمليات الحذف الناتجة عن انتهاء مدة البقاء على قيد الحياة بأولوية أقل. تتوفّر استراتيجيات أخرى أيضًا لتخفيف حدّة الارتفاعات المفاجئة في عدد الزيارات الناتجة عن عمليات الحذف المستندة إلى قيمة TTL.
الاختلافات في فهارس مدة البقاء (TTL)
على عكس فهارس Firestore الأخرى، لا يتم استخدام فهارس TTL أثناء تخطيط طلب البحث لتحسين الأداء. لتحسين أداء طلب البحث في حقل مستخدَم مع TTL، عليك إضافته إلى فهرس منفصل غير TTL.
من المهم ملاحظة أنّه بما أنّ حقول مدة البقاء (TTL) تستخدم الطوابع الزمنية، فإنّ إضافتها إلى فهرس غير مخصّص لمدة البقاء (TTL) قد يؤدي إلى حدوث نقاط ساخنة. تحدث النقاط الساخنة عندما تتركز معدلات عالية من عمليات الكتابة والحذف ضمن نطاق ضيق من المستندات، ما قد يؤثر سلبًا في أداء التوسيع خلال فترات زيادة عدد طلبات الكتابة.
الأذونات
يجب أن يكون لدى الجهة الرئيسية التي تنشئ فهرسًا أو تحذفه مع ضبط قيمة TTL الإذن التالي في المشروع:
- يتطلّب عرض فهارس TTL الحصول على إذنَي
datastore.indexes.listوdatastore.indexes.get. - يتطلّب إنشاء فهارس TTL أو حذفها الحصول على إذن
datastore.indexes.update. - يتطلّب التحقّق من حالة عمليات TTL توفُّر الإذنَين
datastore.operations.listوdatastore.operations.get.
للاطّلاع على الأدوار التي تمنح هذه الأذونات، يُرجى الرجوع إلى Cloud Firestore أدوار إدارة الهوية وإمكانية الوصول.
إنشاء فهرس TTL
عند إنشاء فهرس TTL، عليك تحديد حقل مستند كمدة انتهاء صلاحية المستندات في مجموعة.
تستخدم ميزة "مدة البقاء" حقلًا محدّدًا لتحديد المستندات المؤهَّلة للحذف.
يجب ضبط حقل "مدة البقاء" (TTL) على القيمة Timestamp/BSON Date أو القيمة Array التي تحتوي على القيمة Timestamp/BSON Date. يمكنك اختيار حقل متوفّر أو تحديد حقل تنوي إضافته لاحقًا.
يجب مراعاة ما يلي قبل ضبط قيمة حقل TTL:
يمكن أن تكون قيمة حقل "مدة البقاء" وقتًا في المستقبل أو الآن أو في الماضي. إذا كانت القيمة تمثّل وقتًا سابقًا، يصبح المستند مؤهلاً للحذف على الفور. على سبيل المثال، يمكنك إنشاء فهرس TTL باستخدام الحقل
expireAt، ثم إضافته إلى المستندات الحالية.سيؤدي استخدام أي نوع بيانات آخر أو عدم ضبط قيمة حقل مدة البقاء (TTL) إلى إيقاف مدة البقاء للمستند الفردي.
لإنشاء فهرس TTL، اتّبِع الخطوات التالية:
MongoDB API
أدرِج خيار الفهرس expireAfterSeconds عند استدعاء الطريقة createIndex():
db.COLLECTION_NAME.createIndex({"TTL_FIELD": 1, "expireAfterSeconds": EXPIRATION_OFFSET_SECONDS})
على سبيل المثال:
db.restaurants.createIndex({"ts": 1, "expireAfterSeconds": 3600})
يحدّد expireAfterSeconds مدة البقاء كفهرس لمدّة البقاء، وهو الإزاحة بين قيمة الطابع الزمني من حقل مدة البقاء ووقت انتهاء الصلاحية. إذا تم ضبط expireAfterSeconds على 0، يتم تحديد وقت انتهاء الصلاحية مباشرةً من خلال قيمة الطابع الزمني من حقل مدة البقاء (TTL).
يُرجى ملاحظة القيود التالية:
- يجب أن تتضمّن فهارس TTL حقلًا واحدًا بالضبط.
- لا يتم استخدام فهارس TTL في تخطيط طلبات البحث، ولا تحسّن أداء طلبات البحث.
- يمكنك إنشاء فهرس TTL واحد فقط لكل مجموعة.
- تستخدم سجلات التدقيق لإنشاء فهرس TTL باستخدام واجهة برمجة التطبيقات MongoDB اسم الطريقة
google.firestore.admin.v1.FirestoreAdmin.UpdateField.
Google Cloud Console
في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.
اختَر قاعدة البيانات المطلوبة من قائمة قواعد البيانات.
في قائمة التنقّل، انقر على مدة البقاء.
انقر على إنشاء سياسة.
أدخِل اسم مجموعة واسم حقل الطابع الزمني.
انقر على إنشاء.
ستعود وحدة التحكّم إلى صفحة الوقت اللازم للبقاء على قيد الحياة. إذا بدأت العملية بنجاح، ستضيف الصفحة إدخالاً إلى جدول فهارس TTL. في حال حدوث خطأ، تعرض الصفحة رسالة خطأ.
gcloud
ثبِّت gcloud CLI CLI وابدأ استخدامه.
استخدِم الأمر
firestore fields ttls updateلإعداد فهرس TTL. أضِف العلامة--asyncلمنع gcloud CLI من انتظار اكتمال العملية.gcloud firestore fields ttls update ttl_field --collection-group=collection_name --enable-ttl
مدة إنشاء فهرس TTL
يمكن أن يستغرق إنشاء فهرس TTL عشر دقائق أو أكثر كحدّ أدنى. بعد بدء عملية، لن يؤدي إغلاق نافذة الوحدة الطرفية إلى إلغاء العملية.
عرض فهارس TTL
لعرض فهارس TTL، اتّبِع الخطوات التالية:
MongoDB API
استخدِم طريقة listIndexes() لعرض فهارس TTL. على سبيل المثال:
db.restaurants.listIndexes()
يُرجى العِلم أنّ الناتج سيتضمّن فهارس TTL وفهارس غير TTL. ستتضمّن فهارس TTL الخيار expireAfterSeconds.
Google Cloud Console
في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.
اختَر قاعدة البيانات المطلوبة من قائمة قواعد البيانات.
في قائمة التنقّل، انقر على مدة البقاء.
تعرض وحدة التحكّم فهارس TTL لقاعدة البيانات، وتتضمّن حالة كل فهرس.
gcloud
ثبِّت gcloud CLI CLI وابدأ استخدامه.
استخدِم الأمر
firestore fields ttls listلإعداد فهرس TTL. يعرض الأمر التالي جميع فهارس TTL.gcloud firestore fields ttls list
لإدراج فهارس TTL ضمن مجموعة معيّنة، استخدِم ما يلي:
gcloud firestore fields ttls list --collection-group=collection_name
عرض تفاصيل العملية
يمكنك استخدام gcloud CLI لعرض مزيد من التفاصيل حول فهرس TTL
الذي تكون حالته CREATING.
استخدِم الأمر operations list للاطّلاع على جميع العمليات الجارية والمكتملة مؤخرًا:
gcloud firestore operations list
يتضمّن الرد تقديرًا لمدى تقدّم العملية.
إسقاط فهرس TTL
لإزالة فهرس TTL، اتّبِع الخطوات التالية:
MongoDB API
استخدِم طريقة dropIndex() لإزالة فهرس TTL. على سبيل المثال:
إزالة فهرس TTL باستخدام اسم الفهرس
db.restaurants.dropIndex("ts_1")
إزالة فهرس TTL باستخدام تعريف الفهرس
db.restaurants.dropIndex({"ts": 1})
يُرجى العِلم أنّ سجلّات التدقيق لإزالة فهرس TTL باستخدام واجهة برمجة تطبيقات MongoDB تستخدم اسم الطريقة google.firestore.admin.v1.FirestoreAdmin.UpdateField.
Google Cloud Console
في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.
اختَر قاعدة البيانات المطلوبة من قائمة قواعد البيانات.
في قائمة التنقّل، انقر على مدة البقاء.
في جدول فهارس مدة البقاء (TTL)، ابحث عن صف فهرس مدة البقاء (TTL). ضمن صف الجدول هذا، انقر على الزر حذف (رمز سلة المهملات).
أكِّد الإجراء بالنقر على حذف.
ستعود وحدة التحكّم إلى صفحة الوقت اللازم للبقاء على قيد الحياة. عند النجاح، تزيل Cloud Firestore فهرس TTL من الجدول.
gcloud
ثبِّت gcloud CLI CLI وابدأ استخدامه.
استخدِم الأمر
firestore fields ttls updateلإعداد فهرس TTL. أضِف العلامة--asyncلمنع gcloud CLI من انتظار اكتمال العملية.gcloud firestore fields ttls update ttl_field --collection-group=collection_name --disable-ttl
مراقبة عمليات الحذف حسب مدة البقاء
يمكنك استخدام Cloud Monitoring لعرض مقاييس حول عمليات الحذف المستندة إلى فترة البقاء. توفّر Cloud Firestore المقاييس التالية لـ TTL:
| نوع المقياس | اسم المقياس | وصف المقاييس |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | عدد عمليات الحذف حسب مدة البقاء |
إجمالي عدد المستندات التي تم حذفها بواسطة فهارس TTL |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | تأخيرات الحذف عند انتهاء صلاحية مدة البقاء (TTL) |
تمثّل هذه السمة الوقت المنقضي بين انتهاء صلاحية المستند ضمن فهرس TTL ووقت حذفه فعليًا. |
لإعداد لوحة بيانات تتضمّن مقاييس Cloud Firestore، راجِع مقالتَي إدارة لوحة البيانات المخصّصة و إضافة تطبيقات مصغّرة إلى لوحة البيانات.