إدارة الاحتفاظ بالبيانات باستخدام سياسات مدة البقاء (TTL)

توضّح هذه الصفحة كيفية استخدام وحدة تحكّم Google Cloud وGoogle Cloud CLI لضبط سياسات مدة البقاء (TTL). قبل قراءة هذه الصفحة، يجب أن تفهم نموذج بيانات Cloud Firestore.

نظرة عامة على مدة البقاء (TTL)

استخدِم سياسات مدة البقاء (TTL) لإزالة البيانات القديمة تلقائيًا من قواعد البيانات. تحدّد سياسة TTL حقلاً معيّنًا ليكون وقت انتهاء صلاحية المستندات في حزمة المجموعات. باستخدام مدة البقاء، يمكنك خفض تكاليف التخزين عن طريق محو البيانات القديمة. يتم عادةً حذف البيانات في غضون 24 ساعة من تاريخ انتهاء صلاحيتها.

الأسعار

يتم احتساب عمليات الحذف حسب مدة البقاء (TTL) ضمن تكاليف حذف المستندات. للاطّلاع على معلومات التسعير الخاصة بعمليات الحذف، راجِع أسعار Cloud Firestore.

الحدود والقيود

  • يمكنك وضع علامة على حقل واحد فقط لكل مجموعة مجموعات كحقل TTL.
  • يمكنك ضبط 1,000 إعداد على مستوى الحقل كحدّ أقصى. يمكن أن يحتوي أحد إعدادات الحقل على إعدادات متعددة للحقل نفسه. على سبيل المثال، يتم احتساب إعفاء واحد من الفهرسة في حقل واحد وسياسة مدة البقاء (TTL) في الحقل نفسه كإعداد حقل واحد ضمن الحد الأقصى.
  • بالنسبة إلى عملاء Firestore في وضع Datastore، لا يمكن استخدام TTL مع وضع التزامن التفاؤلي مع مجموعات الكيانات. ننصحك بتغيير وضع التزامن إلى وضع التزامن المتفائل.

حذف مدة البقاء (TTL)

يُرجى ملاحظة السلوكيات الرئيسية التالية للحذف المستند إلى مدة البقاء:

  • لا تتم عملية الحذف من خلال TTL بشكل فوري. تستمر المستندات المنتهية الصلاحية في الظهور في طلبات البحث وطلبات البحث عن المعلومات إلى أن تؤدي عملية TTL إلى حذفها فعليًا. تتجاهل TTL سرعة حذف البيانات مقابل خفض التكلفة الإجمالية للملكية لعمليات الحذف. يتم عادةً حذف البيانات في غضون 24 ساعة بعد تاريخ انتهاء صلاحيتها.

  • لا يؤدي حذف مستند من خلال TTL إلى حذف المجموعات الفرعية ضمن هذا المستند.

  • يؤدي تطبيق سياسة TTL على حزمة مجموعات حالية إلى حذف مجمّع لجميع البيانات المنتهية الصلاحية وفقًا لسياسة TTL الجديدة. يُرجى العِلم أنّ عملية الحذف المجمّع هذه ليست فورية أيضًا وتعتمد على مقدار البيانات المتوفّرة لمجموعة التجميع هذه.

  • إذا كان المستند يتضمّن وقت انتهاء صلاحية في الماضي وأضفت سياسة جديدة بشأن مدة البقاء (TTL) إلى المجموعة، سيتم حذف المستند في غضون 24 ساعة من انتهاء إعداد سياسة مدة البقاء وتفعيلها.

  • لا يؤدي TTL بالضرورة إلى حذف المستندات بالترتيب نفسه الذي تم به تسجيل الطوابع الزمنية لانتهاء صلاحيتها.

  • لا تتم عمليات الحذف بشكل متزامن. لا يعني ذلك أنّ المستندات التي لها وقت انتهاء الصلاحية نفسه سيتم حذفها في الوقت نفسه. إذا كنت بحاجة إلى هذا السلوك، عليك تنفيذ عمليات الحذف باستخدام مكتبة عميل.

  • ستلتزم Cloud Firestore دائمًا بأحدث حقل TTL لتحديد تاريخ انتهاء الصلاحية. على سبيل المثال، إذا تم تعديل حقل TTL لمستند منتهي الصلاحية ولكن لم يتم حذفه بعد إلى تاريخ لاحق، لن تنتهي صلاحية المستند وسيتم استخدام التاريخ الجديد.

  • Cloud Firestore لا تنتهي صلاحية المستند إلا عندما يتم ضبط حقل TTL على أنواع قيم محددة. بالنسبة إلى قواعد بيانات الإصدار Standard، يجب ضبط الحقل على القيمة Date and time. بالنسبة إلى قواعد بيانات Enterprise Edition، يجب ضبط الحقل على القيمة Date and time أو القيمة Array التي تحتوي على القيمة Date and time. يؤدي ترك الحقل فارغًا أو ضبطه على قيمة مثل null إلى إمكانية إيقاف عمليات انتهاء الصلاحية على أساس كل مستند على حدة.

  • تم تصميم TTL لتقليل التأثير في أنشطة قواعد البيانات الأخرى. يتم التعامل مع عمليات الحذف الناتجة عن TTL بأولوية أقل. تتوفّر أيضًا استراتيجيات أخرى لتخفيف حدّة الارتفاعات المفاجئة في عدد الزيارات الناتجة عن عمليات الحذف المستندة إلى قيمة TTL.

  • يؤدي الحذف من خلال TTL إلى استدعاء جميع أدوات معالجة اللقطات النشطة وتفعيل مشغّلات Cloud Functions وCloud Firestore.

حقول ومؤشرات TTL

يمكن فهرسة حقل TTL أو عدم فهرسته. ومع ذلك، بما أنّ حقل TTL هو طابع زمني، يمكن أن يؤثر فهرسة الحقل في الأداء عند معدّلات الزيارات الأعلى. يمكن أن يؤدي فهرسة حقل الطابع الزمني إلى إنشاء نقاط ساخنة، وهو ما يتعارض مع أفضل الممارسات. النقاط الفعّالة هي معدّلات قراءة وكتابة وحذف عالية لنطاق مستندات ضيق.

تنشئ Cloud Firestore Standard edition تلقائيًا فهرسًا بحقل واحد لجميع الحقول. يمكنك إنشاء استثناء لفهرس حقل واحد لإيقاف الفهارس في حقل TTL.

الأذونات

يجب أن يكون لدى الجهة الأساسية التي تضبط سياسة مدة البقاء على قيد الحياة الإذن التالي في المشروع:

  • يتطلّب عرض سياسات مدة البقاء على قيد الحياة الحصول على إذنَي datastore.indexes.list وdatastore.indexes.get.
  • يتطلّب تعديل سياسات مدة البقاء على قيد الحياة الإذن datastore.indexes.update.
  • يتطلّب التحقّق من حالة عمليات TTL توفّر datastore.operations.list وdatastore.operations.get.

للاطّلاع على الأدوار التي تمنح هذه الأذونات، يُرجى الرجوع إلى Cloud Firestore أدوار إدارة الهوية وإمكانية الوصول.

إنشاء سياسة TTL

عند إنشاء سياسة TTL، عليك تحديد حقل مستند ليكون وقت انتهاء الصلاحية للمستندات في حزمة المجموعات.

تستخدم ميزة "مدة البقاء" حقلًا محدّدًا لتحديد المستندات المؤهَّلة للحذف. بالنسبة إلى قواعد بيانات الإصدار Standard، يجب ضبط حقل TTL على القيمة Date and time. بالنسبة إلى قواعد بيانات إصدار Enterprise، يجب ضبطها على قيمة Date and time أو قيمة Array تتضمّن قيمة Date and time. يمكنك اختيار حقل متوفّر أو تحديد حقل تنوي إضافته لاحقًا.

يُرجى مراعاة ما يلي قبل ضبط قيمة حقل TTL:

  • يمكن أن تكون قيمة حقل "مدة البقاء" وقتًا في المستقبل أو الآن أو في الماضي. إذا كانت القيمة وقتًا في الماضي، يصبح المستند مؤهلاً للحذف على الفور. على سبيل المثال، يمكنك إنشاء سياسة TTL باستخدام الحقل expireAt، ثم إضافتها إلى المستندات الحالية.

  • سيؤدي استخدام أي نوع بيانات آخر أو عدم ضبط قيمة حقل TTL إلى إيقاف TTL للمستند الفردي.

لإنشاء سياسة TTL، اتّبِع الخطوات التالية:

Google Cloud Console

  1. في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى "قواعد البيانات"

  2. اختَر قاعدة البيانات المطلوبة من قائمة قواعد البيانات.

  3. في قائمة التنقّل، انقر على مدة البقاء.

  4. انقر على إنشاء سياسة.

  5. أدخِل اسم حزمة المجموعات واسم حقل الطابع الزمني.

  6. اختياري: اضبط إزاحة انتهاء الصلاحية. أدخِل قيمة واختَر وحدة (أيام أو ساعات أو دقائق أو ثوانٍ). تكون قيمة الإزاحة 0 تلقائيًا.

  7. انقر على إنشاء.

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

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)

للاطّلاع على سياسات مدة البقاء على قيد الحياة وحالاتها، اتّبِع الخطوات التالية:

Google Cloud Console

  1. في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى "قواعد البيانات"

  2. اختَر قاعدة البيانات المطلوبة من قائمة قواعد البيانات.

  3. في قائمة التنقّل، انقر على مدة البقاء.

تعرض وحدة التحكّم سياسات مدة البقاء (TTL) لقاعدة البيانات، كما تتضمّن حالة كل سياسة.

gcloud

استخدِم الأمر firestore fields ttls list لإعداد سياسة TTL. يعرض الأمر التالي جميع السياسات التي تكون فيها قيمة TTL أقل من 0x0A.

   gcloud firestore fields ttls list
   

لعرض سياسات TTL ضمن مجموعة مجموعات معيّنة، استخدِم ما يلي:

   gcloud firestore fields ttls list  --collection-group=collection_group_name
   

عرض تفاصيل العملية

يمكنك استخدام gcloud CLI لعرض المزيد من التفاصيل حول سياسة TTL التي تكون في الحالة CREATING.

استخدِم الأمر operations list للاطّلاع على جميع العمليات الجارية والمكتملة مؤخرًا:

gcloud firestore operations list

تتضمّن الاستجابة تقديرًا لمستوى تقدّم العملية.

إيقاف سياسة TTL

لإيقاف سياسة TTL، اتّبِع الخطوات التالية:

Google Cloud Console

  1. في Google Cloud Console، انتقِل إلى صفحة قواعد البيانات.

    الانتقال إلى "قواعد البيانات"

  2. اختَر قاعدة البيانات المطلوبة من قائمة قواعد البيانات.

  3. في قائمة التنقّل، انقر على مدة البقاء.

  4. في جدول سياسات TTL، ابحث عن صف سياسة TTL. ضمن صف الجدول هذا، انقر على الزر حذف (سلة المهملات).

  5. أكِّد الإجراء من خلال النقر على حذف.

ستعود وحدة التحكّم إلى صفحة مدة البقاء. في حال النجاح، تزيل 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
   

مراقبة عمليات الحذف حسب مدة البقاء (TTL)

يمكنك استخدام Cloud Monitoring لعرض مقاييس حول عمليات الحذف المستندة إلى فترة البقاء. يوفّر Cloud Firestore المقاييس التالية لوقت البقاء على قيد الحياة (TTL):

نوع المقياس اسم المقياس وصف المقاييس
firestore.googleapis.com/document/ttl_deletion_count عدد عمليات الحذف حسب مدة البقاء

إجمالي عدد المستندات التي تم حذفها بموجب سياسات مدة البقاء (TTL).

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays تأخيرات الحذف بسبب انتهاء صلاحية الوقت المحدّد للبقاء

الوقت المنقضي بين انتهاء صلاحية مستند بموجب سياسة مدة البقاء (TTL) ووقت حذفه فعليًا

لإعداد لوحة بيانات تتضمّن مقاييس Cloud Firestore، راجِع إدارة لوحة البيانات المخصّصة وإضافة أدوات لوحة البيانات.