TTL ইন্ডেক্সের মাধ্যমে ডেটা রিটেনশন ম্যানেজ করা

এই পৃষ্ঠায়, কীভাবে MongoDB API, Google Cloud কনসোল এবং Google Cloud CLI ব্যবহার করে টাইম টু লিভ (TTL) ইন্ডেক্স কনফিগার করতে হয় তা বর্ণনা করা হয়েছে।

টাইম টু লাইভ ওভারভিউ

আপনার ডেটাবেস থেকে অটোমেটিক পুরনো ডেটা সরিয়ে দিতে TTL ইন্ডেক্স ব্যবহার করুন। TTL ইন্ডেক্স কোনও প্রদত্ত ফিল্ডকে কোনও প্রদত্ত সংগ্রহের ডকুমেন্টের মেয়াদ শেষ হওয়ার সময় হিসেবে নির্ধারণ করে। TTL-এর সাহায্যে, আপনি পুরনো ডেটা মুছে দিয়ে স্টোরেজ খরচ কমাতে পারবেন। ডেটার মেয়াদ শেষ হওয়ার ২৪ ঘণ্টার মধ্যেই সাধারণত তা মুছে দেওয়া হয়।

মূল্য

TTL মুছে ফেলার অপারেশনে ম্যানেজ করা মুছে ফেলার ইউনিট ব্যবহার করা হয়। মূল্য সম্পর্কে জানতে, Cloud Firestore Enterprise এডিশনের মূল্য দেখুন।

সীমা ও সীমাবদ্ধতা

  • প্রতিটি কালেকশনে আপনি শুধুমাত্র একটি TTL ইন্ডেক্স তৈরি করতে পারবেন।
  • আপনি সর্বাধিক ৫০০টি TTL ইন্ডেক্স রাখতে পারবেন।

TTL মুছে ফেলা

TTL-এর মাধ্যমে ডেটা মুছে দেওয়ার ক্ষেত্রে নিম্নলিখিত মূল আচরণগুলি মনে রাখবেন:

  • TTL-এর মাধ্যমে মুছে ফেলা তাৎক্ষণিক প্রসেস নয়। মেয়াদ শেষ হয়ে যাওয়া ডকুমেন্ট TTL প্রসেস সেগুলি মুছে না দেওয়া পর্যন্ত কোয়েরি ও লুক-আপ অনুরোধে দেখা যেতে থাকবে। TTL ট্রেড মুছে ফেলার সময়সীমা মুছে ফেলার জন্য মালিকানার মোট খরচ কমানোর সুবিধা। ডেটার মেয়াদ শেষ হওয়ার ২৪ ঘণ্টার মধ্যেই সাধারণত তা মুছে দেওয়া হয়।

  • আগে থেকে থাকা কালেকশনে TTL ইন্ডেক্স তৈরি করলে, নতুন TTL ইন্ডেক্স অনুযায়ী সব মেয়াদ শেষ হয়ে যাওয়া ডেটা বাল্ক ডিলিট হয়ে যায়। মনে রাখবেন যে এই বাল্ক মুছে ফেলাও তাৎক্ষণিক হয় না এবং সেই সংগ্রহের জন্য কতটা ডেটা আছে তার উপর নির্ভর করে।

  • কোনও ডকুমেন্টের মেয়াদ শেষ হয়ে গিয়ে থাকলে এবং আপনি সেটিতে নতুন TTL ইন্ডেক্স যোগ করলে, TTL ইন্ডেক্স সেট-আপ করা হয়ে গেলে এবং অ্যাক্টিভ হওয়ার ২৪ ঘণ্টার মধ্যে ডকুমেন্টটি মুছে দেওয়া হবে।

  • TTL-এর মেয়াদ শেষ হওয়ার টাইমস্ট্যাম্পের ক্রম অনুসারে ডকুমেন্ট মুছে ফেলার প্রয়োজন নেই।

  • ডিলিট করার প্রসেসটি ট্রানজ্যাকশন ভিত্তিক নয়। একই মেয়াদ শেষ হওয়ার সময় থাকা ডকুমেন্ট একই সময়ে মুছে দেওয়া হয় না। এই ব্যবহারের প্রয়োজন হলে, ক্লায়েন্ট লাইব্রেরি ব্যবহার করে মুছে দিন।

  • Cloud Firestore সবসময় লেটেস্ট TTL ফিল্ডের উপর ভিত্তি করে মেয়াদ শেষ হওয়ার সময় নির্ধারণ করবে। যেমন, কোনও মেয়াদ শেষ হয়ে যাওয়া কিন্তু এখনও মুছে না ফেলা ডকুমেন্টের TTL ফিল্ড যদি পরবর্তী কোনও তারিখে আপডেট করা হয়, তাহলে ডকুমেন্টটির মেয়াদ শেষ হয়ে যাবে না এবং নতুন তারিখ ব্যবহার করা হবে।

  • Cloud Firestore কোনও ডকুমেন্টের মেয়াদ তখনই শেষ করে যখন TTL ফিল্ডে কোনও a Date and time/BSON Date ভ্যালু বা a Date and time/BSON Date ভ্যালু থাকা Array ভ্যালু সেট করা থাকে। প্রতিটি ডকুমেন্ট অনুযায়ী মেয়াদ শেষ হওয়ার সুবিধা বন্ধ করতে, ফিল্ডটি খালি রাখুন অথবা null-এর মতো ভ্যালু সেট করুন।

  • TTL-কে এমনভাবে ডিজাইন করা হয়েছে যাতে অন্যান্য ডেটাবেস অ্যাক্টিভিটির উপর প্রভাব কম পড়ে। TTL-এর কারণে মুছে দেওয়া ডেটা কম অগ্রাধিকার পায়। TTL-এর কারণে মুছে ফেলা ডেটা থেকে হওয়া ট্রাফিক স্পাইক কমানোর জন্য অন্যান্য কৌশলও ব্যবহার করা হয়।

TTL ইনডেক্সের সাথে পার্থক্য

অন্যান্য Firestore ইন্ডেক্সের মতো, পারফর্ম্যান্স উন্নত করতে কোয়েরি প্ল্যানিংয়ের সময় TTL ইন্ডেক্স ব্যবহার করা হয় না। TTL-এর সাথে ব্যবহৃত ফিল্ডে কোয়েরির পারফর্ম্যান্স উন্নত করতে, আপনাকে অবশ্যই এটি একটি আলাদা নন-TTL ইন্ডেক্সে যোগ করতে হবে।

এটি মনে রাখা গুরুত্বপূর্ণ যে TTL ফিল্ডে টাইমস্ট্যাম্প ব্যবহার করা হয়, তাই 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, মুছে ফেলার উপযুক্ত ডকুমেন্ট শনাক্ত করতে নির্দিষ্ট ফিল্ড ব্যবহার করে। TTL ফিল্ডে অবশ্যই Timestamp/BSON Date ভ্যালু অথবা Array ভ্যালু থাকতে হবে যার মধ্যে Timestamp/BSON Date ভ্যালু আছে। আপনি এমন একটি ফিল্ড বেছে নিতে পারেন যা আগে থেকেই আছে অথবা আপনি এমন একটি ফিল্ড নির্দিষ্ট করতে পারেন যা আপনি পরে যোগ করার পরিকল্পনা করেছেন।

TTL ফিল্ড ভ্যালু সেট করার আগে নিম্নলিখিত বিষয়গুলি বিবেচনা করুন:

  • TTL ফিল্ডের ভ্যালু ভবিষ্যতে, বর্তমানে বা অতীতে কোনও সময় হতে পারে। ভ্যালু যদি অতীতের কোনও সময় হয়, তাহলে ডকুমেন্টটি সঙ্গে সঙ্গে মুছে দেওয়ার উপযুক্ত হিসেবে বিবেচিত হবে। যেমন, আপনি expireAt ফিল্ড সহ TTL ইন্ডেক্স তৈরি করতে পারেন, যা আপনি আগে থেকে থাকা ডকুমেন্টে যোগ করেন।

  • অন্য কোনও ডেটা টাইপ ব্যবহার করলে বা TTL ফিল্ড ভ্যালু সেট না করলে, আলাদা আলাদা ডকুমেন্টের জন্য TTL বন্ধ হয়ে যাবে।

TTL ইন্ডেক্স তৈরি করতে, এইসব ধাপ অনুসরণ করুন:

MongoDB API

createIndex() মেথড কল করার সময় expireAfterSeconds ইনডেক্স বিকল্প অন্তর্ভুক্ত করুন:

db.COLLECTION_NAME.createIndex({"TTL_FIELD": 1, "expireAfterSeconds": EXPIRATION_OFFSET_SECONDS})

যেমন:

db.restaurants.createIndex({"ts": 1, "expireAfterSeconds": 3600})

expireAfterSeconds TTL-কে TTL ইনডেক্স হিসেবে শনাক্ত করে এবং এটি TTL ফিল্ডের টাইমস্ট্যাম্প ভ্যালু ও মেয়াদ শেষ হওয়ার সময়ের মধ্যে অফসেট। expireAfterSeconds 0 হিসেবে সেট করা থাকলে, TTL ফিল্ড থেকে টাইমস্ট্যাম্প ভ্যালু সরাসরি মেয়াদ শেষ হওয়ার সময় দেয়।

নিম্নলিখিত সীমাবদ্ধতাগুলি মনে রাখবেন:

  • TTL ইন্ডেক্সে ঠিক একটি ফিল্ড থাকতে হবে।
  • TTL ইনডেক্স কোয়েরি প্ল্যানিংয়ে ব্যবহার করা হয় না এবং কোয়েরির পারফর্ম্যান্স উন্নত করে না।
  • প্রতিটি কালেকশনে আপনি শুধুমাত্র একটি TTL ইন্ডেক্স তৈরি করতে পারবেন।
  • MongoDB API-এর মাধ্যমে TTL ইন্ডেক্স তৈরি করার জন্য অডিট লগ, google.firestore.admin.v1.FirestoreAdmin.UpdateField মেথডের নাম ব্যবহার করে।

Google ক্লাউড কনসোল

  1. Google Cloud কনসোলে, ডেটাবেস পৃষ্ঠায় যান।

    ডেটাবেসে যান

  2. ডেটাবেসের তালিকা থেকে প্রয়োজনীয় ডেটাবেস বেছে নিন।

  3. নেভিগেশন মেনুতে, টাইম-টু-লাইভ বিকল্পে ক্লিক করুন।

  4. নীতি তৈরি করুন বিকল্পে ক্লিক করুন।

  5. কালেকশনের নাম ও টাইমস্ট্যাম্প ফিল্ডের নাম লিখুন।

  6. ঐচ্ছিক: মেয়াদ শেষ হওয়ার অফসেট কনফিগার করুন। একটি ভ্যালু লিখুন এবং একটি ইউনিট (দিন, ঘণ্টা, মিনিট বা সেকেন্ড) বেছে নিন। ডিফল্ট হিসেবে, অফসেট ০ হয়।

  7. তৈরি করুন বিকল্পে ক্লিক করুন।

কনসোল টাইম-টু-লাইভ পৃষ্ঠায় ফিরে যায়। অপারেশন সফলভাবে শুরু হলে, পৃষ্ঠাটি TTL ইন্ডেক্স টেবিলে একটি এন্ট্রি যোগ করে। কাজটি সম্পূর্ণ না হলে, পৃষ্ঠায় একটি সমস্যার মেসেজ দেখানো হয়।

gcloud

  1. gcloud CLI CLI ইনস্টল ও ইনিশিয়ালাইজ করুন।

  2. TTL ইন্ডেক্স কনফিগার করতে firestore fields ttls update কমান্ড ব্যবহার করুন। অপারেশন সম্পূর্ণ হওয়ার জন্য gcloud CLI-কে অপেক্ষা করা থেকে আটকাতে --async ফ্ল্যাগ যোগ করুন।

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

    মেয়াদ শেষ হওয়ার অফসেট সহ TTL ইন্ডেক্স চালু করতে, --expiration-offset ফ্ল্যাগ যোগ করুন:

     gcloud firestore fields ttls update \
      ttl_field \
      --collection-group=collection_name \
      --enable-ttl \
      --expiration-offset=expiration_offset 

    expiration_offset-এর জায়গায় সময়সীমা লিখুন, যেমন 7d ৭ দিনের জন্য অথবা 24h ২৪ ঘণ্টার জন্য। আপনি এই ফ্ল্যাগটি বাদ দিলে, মেয়াদ শেষ হওয়ার অফসেট ডিফল্ট হিসেবে ০ হয়ে যায়।

TTL ইন্ডেক্স তৈরি করার সময়সীমা

TTL ইন্ডেক্স তৈরি করতে কমপক্ষে দশ মিনিট বা তার বেশি সময় লাগতে পারে। আপনি কোনও অপারেশন শুরু করার পরে, টার্মিনাল বন্ধ করে দিলেও অপারেশন বাতিল হয় না।

TTL ইনডেক্স দেখুন

TTL ইন্ডেক্স দেখতে, এইসব ধাপ অনুসরণ করুন:

MongoDB API

TTL ইন্ডেক্স দেখতে listIndexes() পদ্ধতি ব্যবহার করুন। যেমন:

db.restaurants.listIndexes()

মনে রাখবেন, আউটপুটে TTL ইন্ডেক্স ও নন-TTL ইন্ডেক্স, দুটিই অন্তর্ভুক্ত থাকবে। TTL ইন্ডেক্সে expireAfterSeconds বিকল্পটি অন্তর্ভুক্ত থাকবে।

Google ক্লাউড কনসোল

  1. Google Cloud কনসোলে, ডেটাবেস পৃষ্ঠায় যান।

    ডেটাবেসে যান

  2. ডেটাবেসের তালিকা থেকে প্রয়োজনীয় ডেটাবেস বেছে নিন।

  3. নেভিগেশন মেনুতে, টাইম-টু-লাইভ বিকল্পে ক্লিক করুন।

কনসোল আপনার ডেটাবেসের জন্য TTL ইন্ডেক্স তালিকাভুক্ত করে এবং প্রতিটি ইন্ডেক্সের স্ট্যাটাস অন্তর্ভুক্ত করে।

gcloud

  1. gcloud CLI CLI ইনস্টল ও ইনিশিয়ালাইজ করুন।

  2. TTL ইন্ডেক্স কনফিগার করতে firestore fields ttls list কমান্ড ব্যবহার করুন। নিম্নলিখিত কমান্ড সব TTL ইনডেক্সের তালিকা তৈরি করে।

    gcloud firestore fields ttls list
    

    নির্দিষ্ট সংগ্রহের অধীনে TTL ইন্ডেক্স তালিকাভুক্ত করতে, নিম্নলিখিতগুলি ব্যবহার করুন:

    gcloud firestore fields ttls list  --collection-group=collection_name
    

অপারেশনের বিবরণ দেখুন

CREATING স্টেটে থাকা TTL ইন্ডেক্স সম্পর্কে আরও বিবরণ দেখতে আপনি gcloud CLI ব্যবহার করতে পারবেন।

সব রানিং এবং সম্প্রতি সম্পূর্ণ হওয়া অপারেশন দেখতে operations list কমান্ড ব্যবহার করুন:

gcloud firestore operations list

উত্তরে অপারেশনের অগ্রগতি সম্পর্কে একটি আনুমানিক তথ্য দেওয়া হয়েছে।

TTL ইন্ডেক্স ড্রপ করা

TTL ইন্ডেক্স বাদ দিতে, এইসব ধাপ অনুসরণ করুন:

MongoDB API

TTL ইন্ডেক্স বাদ দিতে dropIndex() পদ্ধতি ব্যবহার করুন। যেমন:

ইনডেক্সের নাম ব্যবহার করে TTL ইনডেক্স ড্রপ করা

db.restaurants.dropIndex("ts_1")

ইনডেক্স সংজ্ঞা ব্যবহার করে TTL ইনডেক্স বাদ দেওয়া

db.restaurants.dropIndex({"ts": 1})

মনে রাখবেন, MongoDB API-এর মাধ্যমে TTL ইন্ডেক্স ড্রপ করার জন্য অডিট লগ, google.firestore.admin.v1.FirestoreAdmin.UpdateField মেথড নাম ব্যবহার করে।

Google ক্লাউড কনসোল

  1. Google Cloud কনসোলে, ডেটাবেস পৃষ্ঠায় যান।

    ডেটাবেসে যান

  2. ডেটাবেসের তালিকা থেকে প্রয়োজনীয় ডেটাবেস বেছে নিন।

  3. নেভিগেশন মেনুতে, টাইম-টু-লাইভ বিকল্পে ক্লিক করুন।

  4. TTL ইন্ডেক্স টেবিলে, TTL ইন্ডেক্সের জন্য সারিটি খুঁজে নিন। এই টেবিল সারির মধ্যে, মুছে দিন (ট্র্যাশ ক্যান) বোতামে ক্লিক করুন।

  5. মুছুন বিকল্পে ক্লিক করে কনফার্ম করুন।

কনসোল টাইম-টু-লাইভ পৃষ্ঠায় ফিরে যায়। সফল হলে, Cloud Firestore টেবিল থেকে TTL ইন্ডেক্স সরিয়ে দেয়।

gcloud

  1. gcloud CLI CLI ইনস্টল ও ইনিশিয়ালাইজ করুন।

  2. TTL ইন্ডেক্স কনফিগার করতে firestore fields ttls update কমান্ড ব্যবহার করুন। অপারেশন সম্পূর্ণ হওয়ার জন্য gcloud CLI-কে অপেক্ষা করা থেকে আটকাতে --async ফ্ল্যাগ যোগ করুন।

    gcloud firestore fields ttls update ttl_field --collection-group=collection_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 মেট্রিক্স সহ ড্যাশবোর্ড সেট-আপ করতে, কাস্টম ড্যাশবোর্ড ম্যানেজ করুন এবং ড্যাশবোর্ড উইজেট যোগ করুন বিকল্প দেখুন।