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 ফিল্ড হয় Date and time/BSON Date ভ্যালু অথবা Array ভ্যালু যাতে Date and time/BSON Date ভ্যালু আছে, সেটিতে সেট করা হয়। প্রতিটি ডকুমেন্টের জন্য মেয়াদ শেষ হওয়ার তারিখ বন্ধ করতে, ফিল্ডটি ফাঁকা রাখুন বা 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) মেয়াদ শেষ হওয়া

TTL ইনডেক্সের অধীনে কোনও ডকুমেন্টের মেয়াদ শেষ হওয়া এবং সেটি আসলে মুছে ফেলার মধ্যে অতিবাহিত সময়।

Cloud Firestore মেট্রিক সহ ড্যাশবোর্ড সেট-আপ করতে, কাস্টম ড্যাশবোর্ড ম্যানেজ করুন এবং ড্যাশবোর্ড উইজেট যোগ করুন বিকল্প দেখুন।