এই পৃষ্ঠায় গুগল ক্লাউড কনসোল এবং গুগল ক্লাউড সিএলআই ব্যবহার করে টাইম টু লিভ (টিটিএল) পলিসি কনফিগার করার পদ্ধতি বর্ণনা করা হয়েছে। এই পৃষ্ঠাটি পড়ার আগে, আপনার Cloud Firestore ডেটা মডেল সম্পর্কে ধারণা থাকা উচিত।
বেঁচে থাকার সময়ের সংক্ষিপ্ত বিবরণ
আপনার ডাটাবেস থেকে অপ্রচলিত ডেটা স্বয়ংক্রিয়ভাবে মুছে ফেলার জন্য টিটিএল (TTL) পলিসি ব্যবহার করুন। একটি টিটিএল পলিসি কোনো নির্দিষ্ট কালেকশন গ্রুপের ডকুমেন্টগুলোর জন্য একটি নির্দিষ্ট ফিল্ডকে মেয়াদোত্তীর্ণের সময় হিসেবে নির্ধারণ করে। টিটিএল-এর মাধ্যমে, আপনি অপ্রচলিত ডেটা পরিষ্কার করে স্টোরেজ খরচ কমাতে পারেন। ডেটা সাধারণত তার মেয়াদোত্তীর্ণের তারিখের ২৪ ঘণ্টার মধ্যে মুছে ফেলা হয়।
মূল্য নির্ধারণ
TTL ডিলিট অপারেশনগুলো আপনার ডকুমেন্ট ডিলিট খরচের অন্তর্ভুক্ত হয়। ডিলিট অপারেশনের মূল্য জানতে, Cloud Firestore প্রাইসিং দেখুন।
সীমা এবং সীমাবদ্ধতা
- আপনি প্রতিটি কালেকশন গ্রুপ থেকে শুধুমাত্র একটি ফিল্ডকে TTL ফিল্ড হিসেবে চিহ্নিত করতে পারবেন।
- সর্বাধিক ৫০০টি ফিল্ড লেভেল কনফিগারেশন অনুমোদিত। একটি ফিল্ড কনফিগারেশনে একই ফিল্ডের জন্য একাধিক কনফিগারেশন থাকতে পারে। উদাহরণস্বরূপ, একই ফিল্ডের জন্য একটি একক-ফিল্ড ইনডেক্সিং ছাড় এবং একটি টিটিএল (TTL) পলিসিকে এই সীমার মধ্যে একটি ফিল্ড কনফিগারেশন হিসেবে গণ্য করা হবে।
- ফায়ারস্টোর ইন ডেটাস্টোর মোডের গ্রাহকদের জন্য, ‘Optimistic With Entity Groups’ কনকারেন্সি মোডের সাথে TTL ব্যবহার করা যাবে না। কনকারেন্সি মোডটি ‘Optimistic’ কনকারেন্সি মোডে পরিবর্তন করার কথা বিবেচনা করুন।
টিটিএল মুছে ফেলা
TTL-চালিত ডিলিশনের নিম্নলিখিত মূল আচরণগুলো লক্ষ্য করুন:
TTL-এর মাধ্যমে ডেটা মুছে ফেলা একটি তাৎক্ষণিক প্রক্রিয়া নয়। TTL প্রক্রিয়াটি দ্বারা প্রকৃতপক্ষে মুছে না ফেলা পর্যন্ত মেয়াদোত্তীর্ণ ডকুমেন্টগুলো কোয়েরি এবং লুকআপ রিকোয়েস্টে প্রদর্শিত হতে থাকে। TTL প্রক্রিয়াটি ডেটা মুছে ফেলার সময়ানুবর্তিতার বিনিময়ে এর মোট মালিকানা খরচ (total cost of ownership) কমানোর সুবিধা প্রদান করে। ডেটা সাধারণত এর মেয়াদ শেষ হওয়ার ২৪ ঘণ্টার মধ্যে মুছে ফেলা হয়।
TTL-এর মাধ্যমে কোনো ডকুমেন্ট ডিলিট করলে সেই ডকুমেন্টের অধীনস্থ সাব-কালেকশনগুলো ডিলিট হয় না।
বিদ্যমান কোনো কালেকশন গ্রুপে TTL পলিসি প্রয়োগ করলে, নতুন TTL পলিসি অনুযায়ী সমস্ত মেয়াদোত্তীর্ণ ডেটা একযোগে মুছে ফেলা হয়। উল্লেখ্য যে, এই একযোগে মুছে ফেলার প্রক্রিয়াটিও তাৎক্ষণিক নয় এবং এটি ওই কালেকশন গ্রুপে কী পরিমাণ ডেটা রয়েছে তার উপর নির্ভর করে।
যদি কোনো ডকুমেন্টের মেয়াদ অতীতে শেষ হয়ে গিয়ে থাকে এবং আপনি সংগ্রহে একটি নতুন TTL পলিসি যোগ করেন, তাহলে TTL পলিসিটির সেটআপ সম্পন্ন হয়ে সক্রিয় হওয়ার ২৪ ঘণ্টার মধ্যে ডকুমেন্টটি মুছে ফেলা হবে।
TTL সবসময় ডকুমেন্টগুলোকে তাদের মেয়াদ শেষ হওয়ার টাইমস্ট্যাম্পের ক্রমানুসারে মুছে ফেলে না।
ডিলিট করার কাজটি ট্রানজ্যাকশনাল পদ্ধতিতে করা হয় না। একই মেয়াদোত্তীর্ণ সময়ের ডকুমেন্টগুলো যে একই সময়ে ডিলিট হবেই, এমন কোনো নিশ্চয়তা নেই। আপনার যদি এই ধরনের আচরণের প্রয়োজন হয়, তবে একটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে ডিলিট করার কাজটি সম্পাদন করুন।
মেয়াদ শেষ হওয়ার তারিখ নির্ধারণের জন্য Cloud Firestore সর্বদা সর্বশেষ TTL ফিল্ডটিকেই প্রাধান্য দেবে। উদাহরণস্বরূপ, যদি মেয়াদোত্তীর্ণ কিন্তু এখনও মুছে ফেলা হয়নি এমন কোনো ডকুমেন্টের TTL ফিল্ড পরবর্তী কোনো তারিখে আপডেট করা হয়, তবে ডকুমেন্টটির মেয়াদ শেষ হবে না এবং নতুন তারিখটিই ব্যবহৃত হবে।
Cloud Firestore একটি ডকুমেন্টের মেয়াদ তখনই শেষ করে, যখন TTL ফিল্ডটি নির্দিষ্ট ভ্যালু টাইপে সেট করা থাকে। স্ট্যান্ডার্ড এডিশন ডেটাবেসের জন্য, ফিল্ডটি অবশ্যই একটি
Date and timeভ্যালুতে সেট করতে হবে। এন্টারপ্রাইজ এডিশন ডেটাবেসের জন্য, ফিল্ডটি অবশ্যই একটিDate and timeভ্যালু অথবাDate and timeভ্যালু ধারণকারী একটিArrayভ্যালুতে সেট করতে হবে। ফিল্ডটি অনুপস্থিত রাখলে বাnullমতো কোনো ভ্যালুতে সেট করলে, প্রতিটি ডকুমেন্টের জন্য আলাদাভাবে মেয়াদ শেষ হওয়া নিষ্ক্রিয় করা যায়।অন্যান্য ডাটাবেস কার্যকলাপের উপর প্রভাব কমানোর জন্য TTL ডিজাইন করা হয়েছে। TTL-এর কারণে করা ডিলিটগুলোকে কম অগ্রাধিকার দেওয়া হয়। TTL-এর কারণে হওয়া ডিলিট থেকে সৃষ্ট ট্র্যাফিকের আকস্মিক বৃদ্ধি সামাল দেওয়ার জন্য অন্যান্য কৌশলও রয়েছে।
TTL-এর মাধ্যমে ডিলিট করার প্রক্রিয়াটি সমস্ত সক্রিয় স্ন্যাপশট লিসেনারকে কল করে এবং Cloud Functions Cloud Firestore ট্রিগারগুলোকে সক্রিয় করে।
TTL ফিল্ড এবং সূচক
একটি TTL ফিল্ডকে ইনডেক্স বা আনইনডেক্স করা যেতে পারে। তবে, যেহেতু একটি TTL ফিল্ড হলো একটি টাইমস্ট্যাম্প, তাই উচ্চ ট্র্যাফিকের ক্ষেত্রে ফিল্ডটিকে ইনডেক্স করলে তা পারফরম্যান্সকে প্রভাবিত করতে পারে। একটি টাইমস্ট্যাম্প ফিল্ড ইনডেক্স করলে হটস্পট তৈরি হতে পারে, যা সর্বোত্তম অনুশীলনের পরিপন্থী। হটস্পট হলো একটি নির্দিষ্ট ডকুমেন্ট পরিসরে উচ্চ রিড, রাইট এবং ডিলিট রেট।
ডিফল্টরূপে, Cloud Firestore স্ট্যান্ডার্ড সংস্করণ সমস্ত ফিল্ডের জন্য একটি একক-ফিল্ড ইনডেক্স তৈরি করে। আপনি একটি TTL ফিল্ডে ইনডেক্স নিষ্ক্রিয় করতে একটি একক-ফিল্ড ইনডেক্স ছাড় তৈরি করতে পারেন।
অনুমতি
টিটিএল পলিসি কনফিগার করার জন্য প্রজেক্টে নিম্নলিখিত অনুমতির প্রয়োজন:
- TTL পলিসিগুলো দেখার জন্য
datastore.indexes.listএবংdatastore.indexes.getপারমিশন প্রয়োজন। - TTL নীতি পরিবর্তন করতে
datastore.indexes.updateঅনুমতির প্রয়োজন হয়। - TTL অপারেশনগুলির অবস্থা পরীক্ষা করার জন্য
datastore.operations.listএবংdatastore.operations.getপ্রয়োজন।
যে ভূমিকাগুলো এই অনুমতিগুলো প্রদান করে, সেগুলোর জন্য Cloud Firestore আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট রোলস দেখুন।
শুরু করার আগে
gcloud CLI ব্যবহার করে TTL পলিসি পরিচালনা করার আগে, কম্পোনেন্টগুলোকে সর্বশেষ উপলব্ধ সংস্করণে আপডেট করতে gcloud components update কমান্ডটি ব্যবহার করুন:
gcloud components update
একটি TTL পলিসি তৈরি করুন
যখন আপনি একটি TTL পলিসি তৈরি করেন, তখন আপনি একটি কালেকশন গ্রুপের ডকুমেন্টগুলোর মেয়াদ শেষ হওয়ার সময় হিসেবে একটি ডকুমেন্ট ফিল্ড নির্ধারণ করে দেন।
TTL একটি নির্দিষ্ট ফিল্ড ব্যবহার করে সেইসব ডকুমেন্ট শনাক্ত করে যেগুলো মুছে ফেলার যোগ্য। স্ট্যান্ডার্ড এডিশন ডেটাবেসের জন্য, TTL ফিল্ডটিকে অবশ্যই একটি Date and time ভ্যালুতে সেট করতে হবে। এন্টারপ্রাইজ এডিশন ডেটাবেসের জন্য, এটিকে অবশ্যই একটি Date and time ভ্যালু অথবা Date and time ভ্যালু সম্বলিত একটি Array ভ্যালুতে সেট করতে হবে। আপনি আগে থেকে বিদ্যমান কোনো ফিল্ড নির্বাচন করতে পারেন অথবা এমন একটি ফিল্ড নির্দিষ্ট করতে পারেন যা আপনি পরে যোগ করার পরিকল্পনা করছেন।
TTL ফিল্ডের মান সেট করার আগে নিম্নলিখিত বিষয়গুলো বিবেচনা করুন:
TTL ফিল্ডের মান ভবিষ্যতের, বর্তমানের বা অতীতের কোনো সময় হতে পারে। যদি মানটি অতীতের কোনো সময় হয়, তবে ডকুমেন্টটি অবিলম্বে মুছে ফেলার যোগ্য হয়ে যায়। উদাহরণস্বরূপ, আপনি
expireAtফিল্ডসহ একটি TTL পলিসি তৈরি করতে পারেন, যা আপনি পরবর্তীতে বিদ্যমান ডকুমেন্টগুলোতে যোগ করবেন।অন্য কোনো ডেটা টাইপ ব্যবহার করলে অথবা TTL ফিল্ডের মান সেট না করলে, নির্দিষ্ট ডকুমেন্টটির জন্য TTL নিষ্ক্রিয় হয়ে যাবে।
একটি TTL পলিসি তৈরি করতে, এই ধাপগুলো অনুসরণ করুন:
গুগল ক্লাউড কনসোল
গুগল ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।
ডাটাবেসের তালিকা থেকে প্রয়োজনীয় ডাটাবেসটি নির্বাচন করুন।
নেভিগেশন মেনুতে, টাইম-টু-লিভ-এ ক্লিক করুন।
পলিসি তৈরি করুন -এ ক্লিক করুন।
একটি কালেকশন গ্রুপের নাম এবং একটি টাইমস্ট্যাম্প ফিল্ডের নাম লিখুন।
তৈরি করুন- এ ক্লিক করুন।
কনসোলটি টাইম-টু-লিভ পেজে ফিরে আসে। অপারেশনটি সফলভাবে শুরু হলে, পেজটি TTL পলিসি টেবিলে একটি এন্ট্রি যোগ করে। ব্যর্থ হলে, পেজটি একটি ত্রুটির বার্তা প্রদর্শন করে।
জিক্লাউড
একটি TTL পলিসি কনফিগার করতে ` firestore fields ttls update কমান্ডটি ব্যবহার করুন। অপারেশনটি সম্পূর্ণ হওয়ার জন্য gcloud CLI-কে অপেক্ষা করা থেকে বিরত রাখতে ` --async ফ্ল্যাগটি যোগ করুন।
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
TTL নীতি সক্রিয়করণের সময়কাল
এমনকি একটি খালি ডেটাবেসেও TTL পলিসি সক্রিয় করতে দশ মিনিট বা তার বেশি সময় লাগতে পারে। একবার কোনো অপারেশন শুরু করলে, টার্মিনাল বন্ধ করলেও অপারেশনটি বাতিল হয় না।
TTL নীতিগুলি দেখুন
TTL পলিসি এবং সেগুলোর অবস্থা দেখতে, এই ধাপগুলো অনুসরণ করুন:
গুগল ক্লাউড কনসোল
গুগল ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।
ডাটাবেসের তালিকা থেকে প্রয়োজনীয় ডাটাবেসটি নির্বাচন করুন।
নেভিগেশন মেনুতে, টাইম-টু-লিভ-এ ক্লিক করুন।
কনসোলটি আপনার ডাটাবেসের জন্য TTL পলিসিগুলো তালিকাভুক্ত করে এবং প্রতিটি পলিসির স্ট্যাটাসও অন্তর্ভুক্ত করে।
জিক্লাউড
একটি TTL পলিসি কনফিগার করতে ` firestore fields ttls list কমান্ডটি ব্যবহার করুন। নিম্নলিখিত কমান্ডটি সমস্ত TTL পলিসি তালিকাভুক্ত করে।
gcloud firestore fields ttls list
একটি নির্দিষ্ট কালেকশন গ্রুপের অধীনে TTL পলিসিগুলো তালিকাভুক্ত করতে, নিম্নলিখিতটি ব্যবহার করুন:
gcloud firestore fields ttls list --collection-group=collection_group_name
অপারেশনের বিবরণ দেখুন
CREATING অবস্থায় থাকা একটি TTL পলিসি সম্পর্কে আরও বিস্তারিত তথ্য দেখতে আপনি gcloud CLI ব্যবহার করতে পারেন।
সমস্ত চলমান এবং সম্প্রতি সম্পন্ন হওয়া অপারেশনগুলো দেখতে operations list কমান্ডটি ব্যবহার করুন:
gcloud firestore operations list
উত্তরে অভিযানটির অগ্রগতির একটি আনুমানিক হিসাব অন্তর্ভুক্ত রয়েছে।
একটি TTL নীতি নিষ্ক্রিয় করুন
একটি TTL পলিসি নিষ্ক্রিয় করতে, এই ধাপগুলো অনুসরণ করুন:
গুগল ক্লাউড কনসোল
গুগল ক্লাউড কনসোলে, ডেটাবেস পৃষ্ঠায় যান।
ডাটাবেসের তালিকা থেকে প্রয়োজনীয় ডাটাবেসটি নির্বাচন করুন।
নেভিগেশন মেনুতে, টাইম-টু-লিভ-এ ক্লিক করুন।
TTL পলিসি টেবিলে, TTL পলিসির সারিটি খুঁজুন। এই টেবিলের সারির মধ্যে, ডিলিট (ট্র্যাশক্যান) বোতামে ক্লিক করুন।
ডিলিট- এ ক্লিক করে নিশ্চিত করুন।
কনসোলটি টাইম-টু-লিভ পেজে ফিরে আসে। সফল হলে, Cloud Firestore টেবিল থেকে টিটিএল পলিসিটি সরিয়ে দেয়।
জিক্লাউড
১. একটি TTL পলিসি কনফিগার করতে ` firestore fields ttls update কমান্ডটি ব্যবহার করুন। অপারেশনটি সম্পূর্ণ হওয়ার জন্য gcloud CLI-কে অপেক্ষা করা থেকে বিরত রাখতে ` --async ফ্ল্যাগটি যোগ করুন।
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
TTL মুছে ফেলা নিরীক্ষণ করুন
আপনি TTL-চালিত ডিলিট সংক্রান্ত মেট্রিক্স দেখতে Cloud Monitoring ব্যবহার করতে পারেন। Cloud Firestore TTL-এর জন্য নিম্নলিখিত মেট্রিক্স প্রদান করে:
| মেট্রিক প্রকার | মেট্রিক নাম | মেট্রিক বর্ণনা |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | বেঁচে থাকার সময়কালের সংখ্যা | TTL নীতিমালার কারণে মুছে ফেলা নথিপত্রের মোট সংখ্যা। |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | মেয়াদ শেষ হওয়ার পর মুছে ফেলার বিলম্ব | একটি TTL পলিসির অধীনে কোনো ডকুমেন্টের মেয়াদ শেষ হওয়ার পর থেকে সেটি প্রকৃতপক্ষে মুছে ফেলা পর্যন্ত অতিবাহিত সময়। |
Cloud Firestore মেট্রিক্স সহ একটি ড্যাশবোর্ড সেট আপ করতে, 'কাস্টম ড্যাশবোর্ড পরিচালনা করুন' এবং 'ড্যাশবোর্ড উইজেট যোগ করুন' দেখুন।