مدیریت حفظ داده‌ها با خط‌مشی‌های TTL

این صفحه نحوه استفاده از کنسول Google Cloud و Google Cloud CLI را برای پیکربندی خط‌مشی‌های زمان فعال بودن دستگاه (TTL) شرح می‌دهد. قبل‌از خواندن این صفحه، باید با Cloud Firestore مدل داده آشنا شوید.

نمای کلی زمان زنده

از خط‌مشی‌های TTL برای برداشتن خودکار داده‌های قدیمی از پایگاه‌های داده‌تان استفاده کنید. خط‌مشی TTL فیلد معینی را به‌عنوان زمان انقضای اسناد در گروه مجموعه‌ای معین تعیین می‌کند. با «زمان زنده بودن» می‌توانید با پاک کردن داده‌های منسوخ، هزینه‌های فضای ذخیره‌سازی را کاهش دهید. داده‌ها معمولاً ظرف ۲۴ ساعت پس‌از تاریخ انقضای آن حذف می‌شوند.

قیمت‌گذاری

عملیات حذف TTL در هزینه‌های حذف سند شما محاسبه می‌شود. برای قیمت‌گذاری عملیات حذف، به قیمت‌گذاری Cloud Firestore مراجعه کنید.

محدودیت‌ها و موانع

  • فقط می‌توانید یک فیلد را در هر گروه مجموعه به‌عنوان فیلد TTL علامت‌گذاری کنید.
  • می‌توانید حداکثر ۱۰۰۰ پیکربندی سطح فیلد داشته باشید. یک پیکربندی فیلد می‌تواند شامل چندین پیکربندی برای یک فیلد باشد. برای مثال، معافیت نمایه‌گذاری تک‌فیلدی و خط‌مشی TTL در همان فیلد به‌عنوان یک پیکربندی فیلد در محدوده مجاز محسوب می‌شود.
  • برای مشتریان Firestore در حالت Datastore، نمی‌توان از TTL با حالت هم‌زمان‌سازی خوش‌بینانه با گروه‌های نهاد استفاده کرد. حالت هم‌زمان را به حالت هم‌زمان خوش‌بینانه تغییر دهید.

حذف TTL

به رفتارهای کلیدی زیر در حذف براساس TTL توجه کنید:

  • حذف ازطریق TTL فرایندی فوری نیست. اسناد منقضی‌شده تا زمانی که فرایند TTL آن‌ها را حذف کند، در پُرسمان‌ها و درخواست‌های جستجو همچنان نشان داده می‌شوند. ‫TTL سرعت حذف را با مزیت کاهش هزینه کل مالکیت برای حذف‌ها معاوضه می‌کند. داده‌ها معمولاً ظرف ۲۴ ساعت پس‌از تاریخ انقضای آن حذف می‌شود.

  • حذف سند ازطریق TTL باعث حذف زیرمجموعه‌های زیر آن سند نمی‌شود.

  • اعمال خط‌مشی TTL روی گروه مجموعه موجود منجر به حذف انبوه همه داده‌های منقضی‌شده طبق خط‌مشی جدید TTL می‌شود. توجه داشته باشید که این حذف انبوه نیز فوری نیست و به میزان داده‌های موجود برای آن گروه مجموعه بستگی دارد.

  • اگر سندی زمان انقضای گذشته داشته باشد و خط‌مشی TTL جدیدی به مجموعه اضافه کنید، سند ظرف ۲۴ ساعت پس‌از تکمیل تنظیمات خط‌مشی TTL و فعال شدن آن حذف خواهد شد.

  • ‫TTL لزوماً اسناد را به همان ترتیبی که مُهر زمان انقضای آن‌ها است حذف نمی‌کند.

  • حذف‌ها به‌صورت تراکنشی انجام نمی‌شوند. اسنادی که زمان انقضای یکسانی دارند لزوماً در یک زمان حذف نمی‌شوند. اگر به این رفتار نیاز دارید، حذف‌ها را بااستفاده از کتابخانه کارخواه انجام دهید.

  • ‫Cloud Firestore همیشه جدیدترین فیلد TTL را برای تعیین انقضا رعایت خواهد کرد. برای مثال، اگر فیلد «زمان زنده بودن» سندی که منقضی شده اما هنوز حذف نشده است به تاریخ جدیدتری به‌روز شود، سند منقضی نخواهد شد و از تاریخ جدید استفاده خواهد شد.

  • ‫Cloud Firestore سند را فقط زمانی منقضی می‌کند که فیلد «زمان زنده بودن» روی انواع مقدار خاصی تنظیم شده باشد. برای پایگاه‌های داده نسخه «استاندارد»، فیلد باید روی مقدار Date and time تنظیم شود. برای پایگاه‌های داده نسخه «سازمانی»، این فیلد باید روی مقدار Date and time یا مقدار Array حاوی مقدار Date and time تنظیم شود. خالی گذاشتن فیلد یا تنظیم آن روی مقداری مثل null باعث می‌شود انقضاها به‌صورت سندبه‌سند غیرفعال شوند.

  • ‫TTL به‌گونه‌ای طراحی شده است که تأثیر آن بر فعالیت‌های دیگر پایگاه داده به‌حداقل برسد. حذف‌های انجام‌شده براساس TTL با اولویت پایین‌تری انجام می‌شوند. استراتژی‌های دیگری نیز برای هموار کردن جهش‌های ترافیکی ناشی از حذف‌های مبتنی بر TTL وجود دارد.

  • حذف ازطریق TTL همه شنوندگان لحظه‌ای فعال را فرا می‌خواند و Cloud Functions Cloud Firestore راه‌انداز را راه‌اندازی می‌کند.

فیلدها و نمایه‌های TTL

فیلد TTL می‌تواند نمایه‌گذاری‌شده یا نمایه‌گذاری‌نشده باشد. بااین‌حال، ازآنجایی‌که فیلد TTL یک مُهر زمان است، نمایه‌گذاری فیلد می‌تواند بر عملکرد در نرخ‌های ترافیک بالاتر تأثیر بگذارد. نمایه‌گذاری فیلد مُهر زمان می‌تواند نقاط داغ ایجاد کند که خلاف روال‌های مطلوب است. نقاط داغ عبارت‌اند از نرخ‌های بالای خواندن، نوشتن، و حذف در محدوده سند محدود.

به‌طور پیش‌فرض، Cloud Firestore نسخه «استاندارد» برای همه فیلدها نمایه‌ تک‌فیلدی ایجاد می‌کند. برای غیرفعال کردن نمایه‌ها در فیلد «زمان زنده بودن» می‌توانید معافیت نمای تک‌فیلدی ایجاد کنید.

اجازه‌ها

نهاد اصلی که خط‌مشی TTL را پیکربندی می‌کند به اجازه زیر در پروژه نیاز دارد:

  • برای مشاهده خط‌مشی‌های TTL به اجازه‌های datastore.indexes.list و datastore.indexes.get نیاز دارید.
  • اصلاح خط‌مشی‌های TTL نیازمند اجازه datastore.indexes.update است.
  • بررسی وضعیت عملیات TTL به datastore.operations.list و datastore.operations.get نیاز دارد.

برای نقش‌هایی که این اجازه‌ها را اختصاص می‌دهند، Cloud Firestore نقش‌های «مدیریت هویت و دسترسی‌ها» را ببینید.

ایجاد خط‌مشی TTL

وقتی خط‌مشی TTL ایجاد می‌کنید، فیلد سندی را به‌عنوان زمان انقضای اسناد در گروه مجموعه تعیین می‌کنید.

‫TTL از فیلد مشخصی برای شناسایی اسنادی که برای حذف واجدشرایط هستند استفاده می‌کند. برای پایگاه‌های داده نسخه «استاندارد»، فیلد TTL باید روی مقدار Date and time تنظیم شود. برای پایگاه‌های داده نسخه «سازمانی»، باید روی مقدار Date and time یا مقدار Array حاوی مقدار Date and time تنظیم شود. می‌توانید فیلدی را که ازقبل وجود دارد انتخاب کنید یا فیلدی را که قصد دارید بعداً اضافه کنید تعیین کنید.

قبل‌از تنظیم مقدار فیلد TTL، موارد زیر را درنظر بگیرید:

  • مقدار فیلد TTL می‌تواند زمانی در آینده، اکنون، یا در گذشته باشد. اگر مقدار زمان در گذشته باشد، سند بلافاصله واجدشرایط حذف می‌شود. برای نمونه، می‌توانید خط‌مشی TTL با فیلد expireAt ایجاد کنید، که سپس آن را به سندهای موجود اضافه می‌کنید.

  • استفاده از هر نوع داده دیگری یا تنظیم نکردن مقدار فیلد TTL باعث غیرفعال شدن TTL برای سند موردنظر می‌شود.

برای ایجاد خط‌مشی TTL، این مراحل را دنبال کنید:

Google Cloud Console

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به «پایگاه‌های داده»

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.

  3. در منوِ پیمایش، روی زمان زنده بودن کلیک کنید.

  4. روی ایجاد خط‌مشی کلیک کنید.

  5. نام گروه مجموعه و نام فیلد مُهر زمان را وارد کنید.

  6. اختیاری: انحراف انقضا را پیکربندی کنید. مقداری وارد کنید و واحدی (روز، ساعت، دقیقه، یا ثانیه) انتخاب کنید. به‌طور پیش‌فرض، انحراف ۰ است.

  7. روی ایجاد کردن کلیک کنید.

کنسول به صفحه زمان زنده بودن برمی‌گردد. اگر عملیات با موفقیت شروع شود، صفحه ورودی‌ای به جدول خط‌مشی‌های TTL اضافه می‌کند. درصورت عدم موفقیت، صفحه پیام خطایی نمایش می‌دهد.

gcloud

برای پیکربندی خط‌مشی TTL، از فرمان firestore fields ttls update استفاده کنید. پرچم --async را اضافه کنید تا «خط فرمان gcloud» منتظر تکمیل عملیات نماند.

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

برای فعال کردن TTL با انحراف انقضا، پرچم --expiration-offset را اضافه کنید:

 gcloud firestore fields ttls update 
ttl_field
--collection-group=collection_group_name
--enable-ttl
--expiration-offset=expiration_offset

expiration_offset را با مدت زمان جایگزین کنید، برای مثال، 7d برای ۷ روز یا 24h برای ۲۴ ساعت. اگر این پرچم را حذف کنید، انحراف انقضا به‌طور پیش‌فرض روی ۰ تنظیم می‌شود.

مدت فعال‌سازی خط‌مشی TTL

فعال کردن خط‌مشی TTL حداقل ده دقیقه یا بیشتر طول می‌کشد. پس‌از شروع عملیات، بستن پایانه باعث لغو عملیات نمی‌شود.

مشاهده خط‌مشی‌های TTL

برای مشاهده خط‌مشی‌های TTL و وضعیت آن‌ها، این مراحل را دنبال کنید:

Google Cloud Console

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به «پایگاه‌های داده»

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.

  3. در منوِ پیمایش، روی زمان زنده بودن کلیک کنید.

کنسول خط‌مشی‌های TTL را برای پایگاه داده‌تان فهرست می‌کند و وضعیت هر خط‌مشی را نشان می‌دهد.

gcloud

برای پیکربندی خط‌مشی TTL، از فرمان firestore fields ttls list استفاده کنید. فرمان زیر همه خط‌مشی‌های TTL را فهرست می‌کند.

   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، به صفحه پایگاه‌های داده بروید.

    رفتن به «پایگاه‌های داده»

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.

  3. در منوِ پیمایش، روی زمان زنده بودن کلیک کنید.

  4. در جدول خط‌مشی TTL، ردیف مربوط به خط‌مشی TTL را پیدا کنید. در این ردیف جدول، روی دکمه حذف (سطل زباله) کلیک کنید.

  5. با کلیک کردن روی حذف تأیید کنید.

کنسول به صفحه زمان زنده بودن برمی‌گردد. درصورت موفقیت، Cloud Firestore خط‌مشی TTL را از جدول برمی‌دارد.

gcloud

۱. برای پیکربندی خط‌مشی TTL، از فرمان firestore fields ttls update استفاده کنید. پرچم --async را اضافه کنید تا «خط فرمان gcloud» منتظر تکمیل عملیات نماند.

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

پایش حذف‌های TTL

می‌توانید از Cloud Monitoring برای مشاهده سنجه‌های مربوط به حذف‌های مبتنی بر TTL استفاده کنید. ‫Cloud Firestore سنجه‌های زیر را برای TTL ارائه می‌دهد:

نوع سنجه نام سنجه شرح سنجه
firestore.googleapis.com/document/ttl_deletion_count تعداد حذف طول عمر

تعداد کل اسناد حذف‌شده توسط خط‌مشی‌های TTL.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays تأخیرهای حذف انقضای زمان زندگی

زمان سپری‌شده بین زمانی که سند تحت خط‌مشی «زمان زنده بودن» منقضی شد و زمانی که واقعاً حذف شد.

برای راه‌اندازی داشبورد با Cloud Firestore معیار، مدیریت داشبورد سفارشی و افزودن ابزاره‌های داشبورد را ببینید.