إدارة الاحتفاظ بالبيانات باستخدام فهارس TTL

تصف هذه الصفحة كيفية استخدام MongoDB API ووحدة تحكّم Google Cloud وGoogle Cloud CLI لضبط مؤشرات مدة البقاء (TTL).

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

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

الأسعار

تستخدم عمليات حذف مدة البقاء وحدات حذف مُدارة. للاطّلاع على الأسعار، يُرجى مراجعة Cloud Firestore أسعار إصدار Enterprise.

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

  • يمكنك إنشاء مؤشر مدة بقاء واحد فقط لكل مجموعة.
  • يمكنك إنشاء 500 مؤشر مدة بقاء كحد أقصى.

حذف مدة البقاء

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

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

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

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

  • لا تحذف مدة البقاء المستندات بالضرورة بالترتيب نفسه الذي تظهر به الطوابع الزمنية لانتهاء صلاحيتها.

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

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

  • Cloud Firestore لا تنتهي صلاحية مستند إلا عندما يتم ضبط حقل مدة البقاء على قيمة Date and time/BSON Date أو قيمة Array تحتوي على قيمة Date and time/BSON Date. اترك الحقل غير متوفّر أو اضبطه على قيمة مثل null لإيقاف انتهاء الصلاحية على أساس كل مستند على حدة.

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

الاختلافات في مؤشرات مدة البقاء

على عكس مؤشرات Firestore الأخرى، لا تُستخدَم مؤشرات مدة البقاء أثناء تخطيط طلب البحث لتحسين الأداء. لتحسين أداء طلب البحث في حقل مستخدَم مع مدة البقاء، عليك إضافته إلى مؤشر منفصل غير مستند إلى مدة البقاء.

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

الأذونات

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

  • يتطلب عرض مؤشرات مدة البقاء الأذنين datastore.indexes.list وdatastore.indexes.get.
  • يتطلب إنشاء مؤشرات مدة البقاء أو حذفها الإذن datastore.indexes.update.
  • يتطلب التحقق من حالة عمليات مدة البقاء الأذنين datastore.operations.list وdatastore.operations.get.

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

إنشاء مؤشر مدة بقاء

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

تستخدم مدة البقاء حقلًا محدّدًا لتحديد المستندات المؤهّلة للحذف. يجب ضبط حقل مدة البقاء على قيمة Timestamp/BSON Date أو قيمة Array تحتوي على قيمة Timestamp/BSON Date. يمكنك اختيار حقل حالي أو تحديد حقل تخطط لإضافته لاحقًا.

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

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

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

لإنشاء فهرس مدة بقاء، اتّبِع الخطوات التالية:

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، يتم تحديد وقت انتهاء الصلاحية مباشرةً من خلال قيمة الطابع الزمني من حقل مدة البقاء.

يُرجى ملاحظة القيود التالية:

  • يجب أن تتضمّن مؤشرات مدة البقاء حقلًا واحدًا فقط.
  • لا تُستخدَم مؤشرات مدة البقاء في تخطيط طلب البحث، ولا تحسّن أداء طلبات البحث.
  • يمكنك إنشاء مؤشر مدة بقاء واحد فقط لكل مجموعة.
  • تستخدم سجلّات التدقيق لإنشاء مؤشر مدة بقاء باستخدام MongoDB API اسم الطريقة google.firestore.admin.v1.FirestoreAdmin.UpdateField.

Google Cloud Console

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

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

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

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

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

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

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

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

gcloud

  1. ثبِّت واجهة سطر الأوامر gcloud CLI وأعِد تهيئتها.

  2. استخدِم الـ firestore fields ttls update command لضبط مؤشر مدة بقاء. أضِف العلامة --async لمنع gcloud CLI من انتظار اكتمال العملية.

     gcloud firestore fields ttls update
    ttl_field --collection-group=collection_name
    --enable-ttl 

مدة إنشاء فهرس مدة البقاء

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

عرض مؤشرات مدة البقاء

لعرض مؤشرات مدة البقاء، اتّبِع الخطوات التالية:

MongoDB API

استخدِم طريقة listIndexes() لعرض مؤشرات مدة البقاء. على سبيل المثال:

db.restaurants.listIndexes()

يُرجى العِلم أنّ الناتج سيشمل كلاً من مؤشرات مدة البقاء والمؤشرات غير المستندة إلى مدة البقاء. ستتضمّن مؤشرات مدة البقاء الخيار expireAfterSeconds.

Google Cloud Console

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

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

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

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

تعرض وحدة التحكّم مؤشرات مدة البقاء لقاعدة البيانات، بما في ذلك حالة كل مؤشر.

gcloud

  1. ثبِّت واجهة سطر الأوامر gcloud CLI وأعِد تهيئتها.

  2. استخدِم الأمر firestore fields ttls list لضبط مؤشر مدة بقاء. يعرض الأمر التالي جميع مؤشرات مدة البقاء.

    gcloud firestore fields ttls list
    

    لعرض مؤشرات مدة البقاء ضمن مجموعة معيّنة، استخدِم ما يلي:

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

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

يمكنك استخدام gcloud CLI لعرض مزيد من التفاصيل حول فهرس مدة بقاء في حالة CREATING

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

gcloud firestore operations list

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

حذف مؤشر مدة بقاء

لحذف مؤشر مدة بقاء، اتّبِع الخطوات التالية:

MongoDB API

استخدِم طريقة dropIndex() لحذف مؤشر مدة بقاء. على سبيل المثال:

حذف مؤشر مدة بقاء باستخدام اسم المؤشر

db.restaurants.dropIndex("ts_1")

حذف مؤشر مدة بقاء باستخدام تعريف المؤشر

db.restaurants.dropIndex({"ts": 1})

يُرجى العِلم أنّ سجلّات التدقيق لحذف مؤشر مدة بقاء باستخدام MongoDB API تستخدم اسم الطريقة google.firestore.admin.v1.FirestoreAdmin.UpdateField.

Google Cloud Console

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

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

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

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

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

  5. أكِّد العملية بالنقر على حذف.

تعود وحدة التحكّم إلى صفحة مدة البقاء. في حال نجاح العملية، Cloud Firestore يزيل مؤشر مدة البقاء من الجدول.

gcloud

  1. ثبِّت واجهة سطر الأوامر gcloud CLI وأعِد تهيئتها.

  2. استخدِم الأمر firestore fields ttls update لضبط مؤشر مدة بقاء. أضِف العلامة --async لمنع gcloud CLI من انتظار اكتمال العملية.

    gcloud firestore fields ttls update ttl_field --collection-group=collection_name --disable-ttl
    

مراقبة عمليات حذف مدة البقاء

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

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

العدد الإجمالي للمستندات التي تم حذفها بواسطة مؤشرات مدة البقاء.

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

الوقت المنقضي بين انتهاء صلاحية مستند بموجب مؤشر مدة بقاء ووقت حذفه فعليًا.

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