توضّح هذه الصفحة كيفية استخدام وحدة تحكّم Google Cloud وGoogle Cloud CLI لضبط سياسات مدة الصلاحية (TTL). قبل قراءة هذه الصفحة، يجب أن تفهم نموذج بيانات Cloud Firestore.
نظرة عامة على مدة الصلاحية
استخدِم سياسات TTL لإزالة البيانات القديمة من قواعد البيانات تلقائيًا. تحدّد سياسة TTL حقلاً معيّنًا على أنّه وقت انتهاء صلاحية المستندات في مجموعة معيّنة. باستخدام TTL، يمكنك خفض تكاليف التخزين عن طريق تنظيف البيانات القديمة. يتم عادةً حذف البيانات في غضون 24 ساعة من تاريخ انتهاء صلاحيتها.
الأسعار
يتم احتساب عمليات الحذف التي تتم من خلال ميزة TTL ضمن تكاليف حذف المستندات. للاطّلاع على أسعار عمليات الحذف، يُرجى مراجعة أسعار Cloud Firestore.
الحدود والقيود
- يمكنك وضع علامة على حقل واحد فقط لكل مجموعة كمجموعة TTL.
- يمكنك ضبط 1,000 إعداد على مستوى الحقل كحدّ أقصى. يمكن أن يحتوي إعداد حقل واحد على إعدادات متعددة للحقل نفسه. على سبيل المثال، يتم احتساب استثناء الفهرسة لحقل واحد وسياسة مدة صلاحية في الحقل نفسه كإعداد حقل واحد ضمن الحدّ الأقصى.
- بالنسبة إلى عملاء Firestore في وضع Datastore، لا يمكن استخدام TTL مع وضع التزامن التفاؤلي مع مجموعات الكيانات. ننصحك بتغيير وضع التزامن إلى وضع التزامن المتفائل.
الحذف وفقًا لمدة البقاء (TTL)
يُرجى ملاحظة السلوكيات الرئيسية التالية للحذف المستند إلى مدة الصلاحية:
لا تتم عملية الحذف من خلال TTL بشكل فوري. تستمر المستندات منتهية الصلاحية في الظهور في طلبات البحث وطلبات البحث حتى تحذفها عملية TTL فعليًا. يتم استخدام ميزة "مدة الصلاحية" (TTL) لتقليل التكلفة الإجمالية لعمليات الحذف، وذلك على حساب سرعة الحذف. يتم حذف البيانات عادةً في غضون 24 ساعة من تاريخ انتهاء صلاحيتها.
لا يؤدي حذف مستند من خلال TTL إلى حذف المجموعات الفرعية ضمن هذا المستند.
يؤدي تطبيق سياسة TTL على مجموعة حالية إلى حذف مجمّع لجميع البيانات منتهية الصلاحية وفقًا لسياسة TTL الجديدة. يُرجى العِلم أنّ عملية الحذف المجمّع هذه لا تتم بشكل فوري، بل تعتمد على حجم البيانات المتوفّرة لمجموعة البيانات هذه.
إذا كان المستند يتضمّن وقت انتهاء صلاحية في الماضي وأضفت سياسة TTL جديدة إلى المجموعة، سيتم حذف المستند في غضون 24 ساعة من وقت انتهاء إعداد سياسة TTL وتفعيلها.
لا يحذف TTL بالضرورة المستندات بالترتيب نفسه الذي تتبعه الطوابع الزمنية لانتهاء صلاحيتها.
لا يتم إجراء عمليات الحذف من خلال المعاملات. لا يتم بالضرورة حذف المستندات التي لها وقت انتهاء الصلاحية نفسه في الوقت نفسه. إذا كنت بحاجة إلى هذا السلوك، يمكنك إجراء عمليات الحذف باستخدام مكتبة عميل.
سيستخدم Cloud Firestore دائمًا أحدث حقل TTL لتحديد تاريخ انتهاء الصلاحية. على سبيل المثال، إذا تم تعديل حقل TTL لمستند منتهي الصلاحية ولكن لم يتم حذفه بعد إلى تاريخ لاحق، لن تنتهي صلاحية المستند وسيتم استخدام التاريخ الجديد.
لا تنتهي صلاحية المستند في Cloud Firestore إلا عند ضبط حقل TTL على أنواع قيم معيّنة. بالنسبة إلى قواعد بيانات الإصدار Standard، يجب ضبط الحقل على قيمة
Date and time. بالنسبة إلى قواعد بيانات إصدار Enterprise، يجب ضبط الحقل على قيمةDate and timeأو قيمةArrayتحتوي على قيمةDate and time. يؤدي ترك الحقل فارغًا أو ضبطه على قيمة مثلnullإلى السماح بإيقاف تواريخ انتهاء الصلاحية لكل مستند على حدة.تم تصميم TTL لتقليل التأثير في أنشطة قواعد البيانات الأخرى. وتكون عمليات الحذف المستندة إلى مدة الصلاحية ذات أولوية أقل. توجد أيضًا استراتيجيات أخرى لتخفيف الارتفاعات المفاجئة في عدد الزيارات الناتجة عن عمليات الحذف المستندة إلى مدة الصلاحية.
يؤدي الحذف من خلال TTL إلى استدعاء جميع أدوات الاستماع النشطة للّقطات وتشغيل مشغّلات Cloud Functions Cloud Firestore.
حقول TTL والفهارس
يمكن فهرسة حقل TTL أو عدم فهرسته. ومع ذلك، بما أنّ حقل TTL هو طابع زمني، يمكن أن تؤثر فهرسة الحقل في الأداء عند ارتفاع معدلات الزيارات. يمكن أن تؤدي فهرسة حقل الطابع الزمني إلى إنشاء نقاط فعالة، وهو ما يتعارض مع أفضل الممارسات. نقاط الاتصال هي معدلات قراءة وكتابة وحذف عالية لنطاق مستند ضيق.
تنشئ الإصدار العادي من Cloud Firestore تلقائيًا فهرسًا بحقل واحد لجميع الحقول. يمكنك إنشاء استثناء فهرس بحقل واحد لإيقاف الفهارس في حقل TTL.
الأذونات
يتطلّب المستخدم الأساسي الذي يضبط سياسة مدة الصلاحية الإذن التالي في المشروع:
- يتطلّب عرض سياسات TTL الحصول على الإذنَين
datastore.indexes.listوdatastore.indexes.get. - يتطلّب تعديل سياسات مدة الصلاحية الحصول على إذن
datastore.indexes.update. - يتطلّب التحقّق من حالة عمليات TTL استخدام
datastore.operations.listوdatastore.operations.get.
للاطّلاع على الأدوار التي تمنح هذه الأذونات، يُرجى مراجعة أدوار "إدارة الهوية وإمكانية الوصول" في Cloud Firestore.
إنشاء سياسة TTL
عند إنشاء سياسة TTL، يمكنك تحديد حقل مستند على أنّه وقت انتهاء صلاحية المستندات في مجموعة المجموعات.
تستخدم ميزة TTL حقلاً محدّدًا لتحديد المستندات المؤهَّلة للحذف.
بالنسبة إلى قواعد بيانات الإصدار Standard، يجب ضبط حقل مدة الصلاحية على قيمة Date and time.
بالنسبة إلى قواعد بيانات إصدار Enterprise، يجب ضبطها على قيمة Date and time أو قيمة Array تحتوي على قيمة Date and time. يمكنك اختيار حقل موجود بالفعل أو يمكنك تعيين حقل تخطط لإضافته لاحقًا.
يُرجى مراعاة ما يلي قبل ضبط قيمة حقل TTL:
يمكن أن تكون قيمة حقل TTL وقتًا في المستقبل أو الآن أو في الماضي. إذا كانت القيمة تشير إلى وقت في الماضي، يصبح المستند مؤهلاً للحذف على الفور. على سبيل المثال، يمكنك إنشاء سياسة TTL باستخدام الحقل
expireAt، ثم إضافتها إلى المستندات الحالية.سيؤدي استخدام أي نوع بيانات آخر أو عدم ضبط قيمة حقل TTL إلى إيقاف TTL للمستند الفردي.
لإنشاء سياسة TTL، اتّبِع الخطوات التالية:
Google Cloud Console
في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.
اختَر قاعدة البيانات المطلوبة من قائمة قواعد البيانات.
في قائمة التنقّل، انقر على مدة الصلاحية.
انقر على إنشاء سياسة.
أدخِل اسم مجموعة ومجموعة حقول الطابع الزمني.
اختياري: اضبط إزاحة انتهاء الصلاحية. أدخِل قيمة واختَر وحدة (أيام أو ساعات أو دقائق أو ثوانٍ). يكون الإزاحة تلقائيًا 0.
انقر على إنشاء.
تعود وحدة التحكّم إلى صفحة مدة الصلاحية. إذا بدأت العملية بنجاح، تضيف الصفحة إدخالاً إلى جدول سياسات مدة الصلاحية. في حال تعذّر ذلك، ستعرض الصفحة رسالة خطأ.
gcloud
استخدِم الأمر firestore fields ttls
update لضبط سياسة TTL. أضِف العلامة --async لمنع gcloud CLI من انتظار اكتمال العملية.
gcloud firestore fields ttls update
ttl_field
--collection-group=collection_group_name
--enable-ttl
لتفعيل مدة البقاء مع إزاحة انتهاء الصلاحية، أضِف العلامة
--expiration-offset:
gcloud firestore fields ttls update
ttl_field
--collection-group=collection_group_name
--enable-ttl
--expiration-offset=expiration_offset
استبدِل expiration_offset بمدة، مثل 7d لمدة 7 أيام أو 24h لمدة 24 ساعة. في حال حذف هذه العلامة، يتم ضبط قيمة الإزاحة التلقائية لانتهاء الصلاحية على 0.
مدة تفعيل سياسة TTL
قد يستغرق تفعيل سياسة TTL عشر دقائق على الأقل أو أكثر. بعد بدء عملية، لا يؤدي إغلاق الوحدة الطرفية إلى إلغاء العملية.
عرض سياسات TTL
لعرض سياسات TTL وحالاتها، اتّبِع الخطوات التالية:
Google Cloud Console
في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.
اختَر قاعدة البيانات المطلوبة من قائمة قواعد البيانات.
في قائمة التنقّل، انقر على مدة الصلاحية.
تعرض وحدة التحكّم سياسات TTL لقاعدة بياناتك وتتضمّن حالة كل سياسة.
gcloud
استخدِم الأمر
firestore fields ttls list
لضبط سياسة TTL. يعرض الأمر التالي جميع سياسات مدة الصلاحية.
gcloud firestore fields ttls list
لإدراج سياسات TTL ضمن مجموعة مجموعات بيانات معيّنة، استخدِم ما يلي:
gcloud firestore fields ttls list --collection-group=collection_group_name
عرض تفاصيل العملية
يمكنك استخدام gcloud CLI لعرض المزيد من التفاصيل حول سياسة مدة الصلاحية
التي تكون في الحالة CREATING.
استخدِم الأمر operations list للاطّلاع على جميع العمليات الجارية
والمكتملة مؤخرًا:
gcloud firestore operations list
يتضمّن الردّ تقديرًا لمدى تقدّم العملية.
إيقاف سياسة TTL
لإيقاف سياسة TTL، اتّبِع الخطوات التالية:
Google Cloud Console
في وحدة تحكّم Google Cloud، انتقِل إلى صفحة قواعد البيانات.
اختَر قاعدة البيانات المطلوبة من قائمة قواعد البيانات.
في قائمة التنقّل، انقر على مدة الصلاحية.
في جدول سياسة TTL، ابحث عن صف سياسة TTL. ضمن صف الجدول هذا، انقر على الزر حذف (سلة المهملات).
أكِّد الإجراء من خلال النقر على حذف.
تعود وحدة التحكّم إلى صفحة مدة الصلاحية. في حال نجاح العملية، يزيل Cloud Firestore سياسة مدة الصلاحية من الجدول.
gcloud
1. استخدِم الأمر
firestore fields ttls update
لضبط سياسة TTL. أضِف العلامة --async لمنع gcloud CLI من انتظار اكتمال العملية.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_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 | التأخيرات في الحذف بسبب انتهاء صلاحية مدة البقاء |
الوقت المنقضي بين انتهاء صلاحية مستند بموجب سياسة "مدة الصلاحية" ووقت حذفه فعليًا. |
لإعداد لوحة بيانات تتضمّن مقاييس "Cloud Firestore"، يُرجى الاطّلاع على المقالتَين إدارة لوحة البيانات المخصّصة وإضافة تطبيقات مصغّرة إلى لوحة البيانات.