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

فقط مربوط به نسخه Cloud Firestore Enterprise است.

این صفحه نحوه استفاده از کنسول Google Cloud و Google Cloud CLI را برای پیکربندی سیاست‌های زمان حیات (TTL) شرح می‌دهد.

مرور کلی زمان پخش زنده

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

قیمت‌گذاری

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

محدودیت‌ها و قیود

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

حذف TTL

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

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

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

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

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

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

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

  • Cloud Firestore با سازگاری MongoDB فقط زمانی یک سند را منقضی می‌کند که فیلد TTL روی Date and time یا نوع BSON Date تنظیم شده باشد. برای غیرفعال کردن انقضاها بر اساس هر سند، فیلد را حذف کنید یا روی مقداری مانند null تنظیم کنید.

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

فیلدها و شاخص‌های TTL

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

مجوزها

مدیر اصلی که سیاست TTL را پیکربندی می‌کند، به مجوزهای زیر در پروژه نیاز دارد:

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

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

قبل از اینکه شروع کنی

قبل از استفاده از gcloud CLI برای مدیریت سیاست‌های TTL، از دستور gcloud components update برای به‌روزرسانی اجزا به آخرین نسخه موجود استفاده کنید:

gcloud components update

ایجاد یک سیاست TTL

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

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

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

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

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

برای ایجاد یک سیاست TTL، مراحل زیر را دنبال کنید:

کنسول ابری گوگل

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

    به پایگاه‌های داده بروید

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

  3. در منوی پیمایش، روی «زمان پخش زنده» کلیک کنید.

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

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

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

کنسول به صفحه‌ی «زمان زنده ماندن» (Time-to-live) برمی‌گردد. اگر عملیات با موفقیت شروع شود، صفحه یک ورودی به جدول سیاست‌های TTL اضافه می‌کند. در صورت عدم موفقیت، صفحه یک پیام خطا نمایش می‌دهد.

جی‌کلاود

  1. gcloud CLI CLI را نصب و راه‌اندازی کنید .

  2. از دستور firestore fields ttls update برای پیکربندی سیاست TTL استفاده کنید. برای جلوگیری از انتظار gcloud CLI برای تکمیل عملیات، پرچم --async را اضافه کنید.

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

مدت زمان فعال‌سازی سیاست TTL

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

مشاهده سیاست‌های TTL

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

کنسول ابری گوگل

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

    به پایگاه‌های داده بروید

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

  3. در منوی پیمایش، روی «زمان پخش زنده» کلیک کنید.

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

جی‌کلاود

  1. gcloud CLI CLI را نصب و راه‌اندازی کنید .

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

    gcloud firestore fields ttls list
    

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

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

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

شما می‌توانید از gcloud CLI برای مشاهده جزئیات بیشتر در مورد یک سیاست TTL که در حالت CREATING است، استفاده کنید.

برای مشاهده‌ی تمام عملیات‌های در حال اجرا و عملیات‌های اخیراً تکمیل‌شده، از دستور operations list استفاده کنید:

gcloud firestore operations list

این پاسخ شامل تخمینی از پیشرفت عملیات است.

غیرفعال کردن سیاست TTL

برای غیرفعال کردن یک سیاست TTL، این مراحل را دنبال کنید:

کنسول ابری گوگل

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

    به پایگاه‌های داده بروید

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

  3. در منوی پیمایش، روی «زمان پخش زنده» کلیک کنید.

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

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

کنسول به صفحه زمان اجرا (Time-to-live) برمی‌گردد. در صورت موفقیت، Cloud Firestore با سازگاری MongoDB، سیاست TTL را از جدول حذف می‌کند.

جی‌کلاود

  1. gcloud CLI CLI را نصب و راه‌اندازی کنید .

  2. از دستور firestore fields ttls update برای پیکربندی سیاست TTL استفاده کنید. برای جلوگیری از انتظار gcloud CLI برای تکمیل عملیات، پرچم --async را اضافه کنید.

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

نظارت بر حذف TTL

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

نوع متریک نام متریک شرح متریک
firestore.googleapis.com/document/ttl_deletion_count شمارش حذف زمان زنده ماندن

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

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

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

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