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

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

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

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

قیمت‌گذاری

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

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

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

حذف TTL

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

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

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

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

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

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

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

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

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

  • 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 مراجعه کنید.

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

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

gcloud components update

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

جی‌کلاود

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

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

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

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

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

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

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

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

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

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

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

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

جی‌کلاود

برای پیکربندی یک سیاست TTL از دستور firestore fields ttls list استفاده کنید. دستور زیر تمام سیاست‌های 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، این مراحل را دنبال کنید:

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

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

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

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

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

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

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

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

جی‌کلاود

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

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