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

فقط مربوط به Cloud Firestore Enterprise edition.

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

زمان برای مرور کلی زندگی

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

قیمت گذاری

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

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

  • شما می توانید تنها یک فیلد در هر مجموعه را به عنوان فیلد TTL علامت گذاری کنید.
  • شما می توانید حداکثر 500 پیکربندی 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 Identity و Access Management مراجعه کنید.

قبل از شروع

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

gcloud components update

یک خط مشی TTL ایجاد کنید

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

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

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

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

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

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

Google Cloud Console

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

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

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

  3. در منوی پیمایش، روی Time-to-live کلیک کنید.

  4. روی Create Policy کلیک کنید.

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

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

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

gcloud

  1. gcloud CLI CLI را نصب و مقداردهی اولیه کنید.

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

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

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

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

سیاست های TTL را مشاهده کنید

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

Google Cloud Console

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

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

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

  3. در منوی پیمایش، روی Time-to-live کلیک کنید.

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

gcloud

  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، مراحل زیر را دنبال کنید:

Google Cloud Console

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

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

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

  3. در منوی پیمایش، روی Time-to-live کلیک کنید.

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

  5. با کلیک بر روی Delete تایید کنید.

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

gcloud

  1. gcloud CLI CLI را نصب و مقداردهی اولیه کنید.

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

    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، به مدیریت داشبورد سفارشی و افزودن ویجت‌های داشبورد مراجعه کنید.