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

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

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

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

قیمت گذاری

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

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

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

حذف TTL

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

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

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

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

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

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

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

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

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

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

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

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

به طور پیش فرض، Cloud Firestore یک فهرست تک فیلد برای همه فیلدها ایجاد می کند. برای غیرفعال کردن نمایه ها در یک فیلد 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 باید از نوع Date and time باشد. می‌توانید فیلدی را انتخاب کنید که از قبل وجود دارد یا می‌توانید فیلدی را که می‌خواهید بعداً اضافه کنید، تعیین کنید.

قبل از تنظیم مقدار فیلد 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

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

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

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

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

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

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

Google Cloud Console

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

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

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

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

کنسول خط‌مشی‌های 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. در منوی پیمایش، روی Time-to-live کلیک کنید.

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

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

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

gcloud

1. برای پیکربندی یک خط مشی TTL از فرمان firestore fields ttls update استفاده کنید. پرچم --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 ، به مدیریت داشبورد سفارشی و افزودن ویجت‌های داشبورد مراجعه کنید.