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

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

نمای کلی زمان فعال بودن

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

قیمت‌گذاری

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

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

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

حذف TTL

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

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

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

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

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

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

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

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

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

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

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

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

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

به‌طور پیش‌فرض، Cloud Firestore Standard edition برای همه فیلدها نمایه تک‌فیلدی ایجاد می‌کند. می‌توانید معافیت نمایه تک‌فیلدی ایجاد کنید تا نمایه‌ها را در فیلد 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 از فیلد مشخصی برای شناسایی اسنادی که واجدشرایط حذف هستند استفاده می‌کند. برای پایگاه‌های داده نسخه Standard، فیلد TTL باید روی مقدار Date and time تنظیم شود. برای پایگاه‌های داده نسخه Enterprise، باید روی مقدار 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

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

 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

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

   gcloud firestore fields ttls list
   

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

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

مشاهده جزئیات عملیات

می‌توانید از میانای خط فرمان gcloud برای مشاهده جزئیات بیشتر درباره خط‌مشی 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

۱. از فرمان 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 برای مشاهده سنجه‌های مربوط به حذف‌های مبتنی بر TTL استفاده کنید. Cloud Firestore سنجه‌های زیر را برای TTL ارائه می‌دهد:

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

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

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

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

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