Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

با مجموعه‌ها، منظم بمانید ذخیره و دسته‌بندی محتوا براساس اولویت‌های شما.

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

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

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

قیمت گذاری

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

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

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

حذف TTL

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

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

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

  • اعمال یک خط مشی TTL در یک گروه مجموعه موجود منجر به حذف انبوه تمام داده هایی می شود که طبق خط مشی جدید 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 با فیلد expireAt ایجاد کنید که سپس به اسناد موجود اضافه کنید.

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

Google Cloud Console

  1. به صفحه Cloud Firestore Time-to-live در Google Cloud Platform Console بروید.

    به صفحه Time-to-live بروید

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

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

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

کنسول به صفحه 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 و وضعیت آنها مراحل زیر را دنبال کنید.

Google Cloud Console

به صفحه Cloud Firestore Time-to-live در Google Cloud Platform Console بروید.

به صفحه 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. به صفحه Cloud Firestore Time-to-live در Google Cloud Platform Console بروید.

    به صفحه Time-to-live بروید

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

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

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

gcloud

برای پیکربندی یک خط مشی 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 ارائه می دهد:

تعداد دفعات حذف زمان تا زنده

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

انقضای زمان تا زنده بودن تا تاخیرهای حذف

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

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