این صفحه نحوه استفاده از کنسول Google Cloud و Google Cloud CLI را برای پیکربندی خطمشیهای «زمان بقا» (TTL) شرح میدهد. قبلاز خواندن این صفحه، باید با مدل دادهCloud Firestore آشنا شوید.
نمای کلی زمان فعال بودن
از خطمشیهای TTL برای برداشتن خودکار دادههای قدیمی از پایگاههای دادهتان استفاده کنید. خطمشی TTL فیلد مشخصی را بهعنوان زمان انقضای اسناد در گروه مجموعه مشخصی تعیین میکند. با TTL میتوانید هزینههای فضای ذخیرهسازی را با پاک کردن دادههای منسوخ کاهش دهید. دادهها معمولاً ظرف ۲۴ ساعت پساز تاریخ انقضا حذف میشوند.
قیمتگذاری
عملیات حذف TTL در هزینههای حذف سند شما لحاظ میشود. برای قیمتگذاری عملیات حذف، به قیمتگذاری Cloud Firestore مراجعه کنید.
محدودیتها و موانع
- فقط یک فیلد را در هر گروه مجموعه میتوانید بهعنوان فیلد TTL علامتگذاری کنید.
- میتوانید حداکثر ۱۰۰۰ پیکربندی سطح فیلد داشته باشید. یک پیکربندی فیلد میتواند شامل چندین پیکربندی برای یک فیلد باشد. برای مثال، یک معافیت نمایهسازی تکفیلدی و یک خطمشی TTL در همان فیلد بهعنوان یک پیکربندی فیلد درنظر گرفته میشود و به حد مجاز اضافه میشود.
- برای مشتریان Firestore در حالت Datastore، نمیتوان از TTL با حالت همزمانی خوشبینانه با گروههای موجودیت استفاده کرد. تغییر حالت همزمانی به حالت همزمانی خوشبینانه را درنظر بگیرید.
حذف TTL
به رفتارهای کلیدی زیر در حذف مبتنی بر TTL توجه کنید:
حذف ازطریق TTL فرایندی فوری نیست. اسناد منقضیشده تا زمانی که فرایند TTL آنها را واقعاً حذف نکند، همچنان در پُرسمانها و درخواستهای جستجو ظاهر میشوند. TTL بهموقع بودن حذف را با مزیت کاهش هزینه کل مالکیت برای حذفها معاوضه میکند. دادهها معمولاً ظرف ۲۴ ساعت پساز تاریخ انقضایشان حذف میشوند.
حذف سند ازطریق TTL، زیرمجموعههای آن سند را حذف نمیکند.
اعمال خطمشی TTL بر گروه مجموعه موجود منجر به حذف انبوه همه دادههای منقضیشده طبق خطمشی TTL جدید میشود. توجه داشته باشید که این حذف انبوه نیز آنی نیست و به مقدار دادههای موجود برای آن گروه مجموعه بستگی دارد.
اگر زمان انقضای سندی در گذشته باشد و خطمشی TTL جدیدی به مجموعه اضافه کنید، سند ظرف ۲۴ ساعت پساز تکمیل راهاندازی و فعال شدن خطمشی TTL حذف خواهد شد.
TTL لزوماً اسناد را بهترتیب مُهرهای زمان انقضای آنها حذف نمیکند.
حذفها بهصورت تراکنشی انجام نمیشود. اسناد با زمان انقضای یکسان لزوماً در یک زمان حذف نمیشوند. اگر به این رفتار نیاز دارید، حذفها را بااستفاده از کتابخانه کارخواه انجام دهید.
Cloud Firestore همیشه از جدیدترین فیلد TTL برای تعیین انقضا استفاده میکند. برای مثال، اگر فیلد TTL سند منقضیشدهای که هنوز حذف نشده است به تاریخ جدیدی بهروز شود، سند منقضی نخواهد شد و از تاریخ جدید استفاده خواهد شد.
Cloud Firestore فقط زمانی سند را منقضی میکند که فیلد TTL روی انواع مقدار خاصی تنظیم شده باشد. برای پایگاههای داده نسخه Standard، این فیلد باید روی مقدار
Date and timeتنظیم شود. برای پایگاههای داده نسخه Enterprise، فیلد باید روی مقدارDate and timeیا مقدارArrayحاوی مقدارDate and timeتنظیم شود. اگر این فیلد را خالی بگذارید یا مقدار آن را روی چیزی مثلnullتنظیم کنید، میتوانید انقضا را برای هر سند بهطور جداگانه غیرفعال کنید.TTL بهگونهای طراحی شده است که تأثیر بر سایر فعالیتهای پایگاه داده را بهحداقل برساند. حذفهای ناشی از TTL با اولویت پایینتری انجام میشوند. راهبردهای دیگری نیز برای هموار کردن جهشهای ترافیک ناشی از حذفهای مبتنی بر TTL وجود دارد.
حذف ازطریق TTL همه شنوندگان عکس آنی فعال را فرامیخواند و Cloud Functions راهانداز Cloud Firestore را راهاندازی میکند.
فیلدها و نمایههای TTL
فیلد TTL میتواند نمایهگذاریشده یا نمایهگذارینشده باشد. بااینحال، چون فیلد TTL یک مُهر زمان است، نمایهسازی فیلد میتواند بر عملکرد در نرخهای ترافیک بالاتر تأثیر بگذارد. نمایهسازی فیلد مُهر زمان میتواند نقاط داغ ایجاد کند که برخلاف روالهای مطلوب است. نقاط داغ نرخهای خواندن، نوشتن، و حذف بالا در محدوده سند باریک هستند.
بهطور پیشفرض، Cloud Firestore Standard edition برای همه فیلدها نمایه تکفیلدی ایجاد میکند. میتوانید معافیت نمایه تکفیلدی ایجاد کنید تا نمایهها را در فیلد TTL غیرفعال کنید.
اجازهها
اصلیای که خطمشی TTL را پیکربندی میکند به اجازه زیر در پروژه نیاز دارد:
- مشاهده خطمشیهای TTL به اجازههای
datastore.indexes.listوdatastore.indexes.getنیاز دارد. - اصلاح خطمشیهای TTL به اجازه
datastore.indexes.updateنیاز دارد. - بررسی وضعیت عملیات TTL به
datastore.operations.listوdatastore.operations.getنیاز دارد.
برای نقشهایی که این اجازهها را اختصاص میدهند، به Cloud Firestore نقشهای «مدیریت هویت و دسترسیها» مراجعه کنید.
ایجاد خطمشی TTL
وقتی خطمشی TTL ایجاد میکنید، فیلد سند را بهعنوان زمان انقضا برای اسناد در گروه مجموعه تعیین میکنید.
TTL از فیلد مشخصی برای شناسایی اسنادی که واجدشرایط حذف هستند استفاده میکند.
برای پایگاههای داده نسخه Standard، فیلد TTL باید روی مقدار Date and time تنظیم شود.
برای پایگاههای داده نسخه Enterprise، باید روی مقدار Date and time یا مقدار Array
حاوی مقدار Date and time تنظیم شود. میتوانید فیلدی را که ازقبل وجود دارد انتخاب کنید یا فیلدی را که قصد دارید بعداً اضافه کنید تعیین کنید.
قبلاز تنظیم مقدار فیلد TTL، موارد زیر را درنظر بگیرید:
مقدار فیلد TTL میتواند زمانی در آینده، اکنون، یا در گذشته باشد. اگر مقدار زمانی در گذشته باشد، سند بلافاصله واجدشرایط حذف میشود. برای مثال، ممکن است خطمشی TTL را با فیلد
expireAtایجاد کنید و سپس آن را به اسناد موجود اضافه کنید.استفاده از هر نوع داده دیگر یا تنظیم نکردن مقدار فیلد TTL باعث غیرفعال شدن TTL برای سند مربوطه خواهد شد.
برای ایجاد خطمشی TTL، این مراحل را دنبال کنید:
Google Cloud Console
در کنسول Google Cloud، به صفحه پایگاههای داده بروید.
پایگاه داده موردنیاز را از فهرست پایگاههای داده انتخاب کنید.
در منو پیمایش، روی زمان بقا کلیک کنید.
روی ایجاد خطمشی کلیک کنید.
نام گروه مجموعه و نام فیلد مُهر زمان را وارد کنید.
اختیاری: انحراف انقضا را پیکربندی کنید. مقداری وارد کنید و واحدی (روز، ساعت، دقیقه، یا ثانیه) انتخاب کنید. بهطور پیشفرض، مقدار جابهجایی ۰ است.
روی ایجاد کردن کلیک کنید.
کنسول به صفحه زمان بقا برمیگردد. اگر عملیات با موفقیت شروع شود، صفحه ورودیای به جدول خطمشیهای TTL اضافه میکند. درصورت ناموفق بودن، صفحه پیام خطایی نمایش میدهد.
gcloud
از فرمان firestore fields ttls
update
برای پیکربندی خطمشی TTL استفاده کنید. پرچم --async را اضافه کنید تا
gcloud CLI منتظر تکمیل عملیات نماند.
gcloud firestore fields ttls update
ttl_field
--collection-group=collection_group_name
--enable-ttl
برای فعال کردن TTL با افست انقضا، پرچم
--expiration-offset را اضافه کنید:
gcloud firestore fields ttls update
ttl_field
--collection-group=collection_group_name
--enable-ttl
--expiration-offset=expiration_offset
expiration_offset را با مدتزمان جایگزین کنید، برای مثال، 7d
برای ۷ روز یا 24h برای ۲۴ ساعت. اگر این پرچم را حذف کنید، انحراف انقضا بهطور پیشفرض روی ۰ تنظیم میشود.
مدت فعالسازی خطمشی TTL
فعال کردن خطمشی TTL ممکن است حداقل ده دقیقه یا بیشتر طول بکشد. وقتی عملیاتی را شروع میکنید، بستن پایانه باعث لغو عملیات نمیشود.
مشاهده خطمشیهای TTL
برای مشاهده خطمشیهای TTL و وضعیت آنها، این مراحل را دنبال کنید:
Google Cloud Console
در کنسول Google Cloud، به صفحه پایگاههای داده بروید.
پایگاه داده موردنیاز را از فهرست پایگاههای داده انتخاب کنید.
در منو پیمایش، روی زمان بقا کلیک کنید.
کنسول خطمشیهای TTL را برای پایگاه داده شما فهرست میکند و وضعیت هر خطمشی را دربرمیگیرد.
gcloud
از فرمان
firestore fields ttls list
برای پیکربندی خطمشی TTL استفاده کنید. فرمان زیر همه خطمشیهای 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، این مراحل را دنبال کنید:
Google Cloud Console
در کنسول Google Cloud، به صفحه پایگاههای داده بروید.
پایگاه داده موردنیاز را از فهرست پایگاههای داده انتخاب کنید.
در منو پیمایش، روی زمان بقا کلیک کنید.
در جدول خطمشی TTL، ردیف مربوط به خطمشی TTL را پیدا کنید. در این ردیف جدول، روی دکمه حذف (سطل زباله) کلیک کنید.
با کلیک کردن روی حذف تأیید کنید.
کنسول به صفحه زمان بقا برمیگردد. درصورت موفقیت، Cloud Firestore خطمشی TTL را از جدول برمیدارد.
gcloud
۱. از فرمان
firestore fields ttls update
برای پیکربندی خطمشی TTL استفاده کنید. پرچم --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، مدیریت داشبورد سفارشی و افزودن ابزارههای داشبورد را ببینید.