टीटीएल इंडेक्स की मदद से डेटा के रखरखाव को मैनेज करना

इस पेज पर, टाइम टू लिव (टीटीएल) इंडेक्स को कॉन्फ़िगर करने के लिए, MongoDB API, Google Cloud Console, और Google Cloud CLI का इस्तेमाल करने का तरीका बताया गया है.

लाइव व्यू की खास जानकारी

टीटीएल इंडेक्स का इस्तेमाल करके, अपने डेटाबेस से पुराना डेटा अपने-आप हटाएं. टीटीएल इंडेक्स, किसी फ़ील्ड को किसी कलेक्शन में मौजूद दस्तावेज़ों के लिए समयसीमा खत्म होने के समय के तौर पर तय करता है. टीटीएल की मदद से, पुराने डेटा को मिटाकर स्टोरेज के खर्च को कम किया जा सकता है. आम तौर पर, डेटा की समयसीमा खत्म होने के 24 घंटे के अंदर उसे मिटा दिया जाता है.

कीमत

टीटीएल के साथ मिटाने की कार्रवाइयों में, मैनेज की जा रही मिटाने की इकाइयों का इस्तेमाल किया जाता है. कीमत की जानकारी के लिए, Cloud Firestore Enterprise Edition की कीमत देखें.

सीमाएं और पाबंदियां

  • हर कलेक्शन के लिए, सिर्फ़ एक टीटीएल इंडेक्स बनाया जा सकता है.
  • ज़्यादा से ज़्यादा 500 टीटीएल इंडेक्स बनाए जा सकते हैं.

टीटीएल मिटाना

टीटीएल के आधार पर डेटा मिटाने की सुविधा से जुड़े इन मुख्य व्यवहारों के बारे में जानें:

  • टीटीएल के ज़रिए मिटाने की प्रोसेस तुरंत नहीं होती है. समयसीमा खत्म हो चुके दस्तावेज़, क्वेरी और लुकअप अनुरोधों में तब तक दिखते रहते हैं, जब तक टीटीएल प्रोसेस उन्हें मिटा नहीं देती. टीटीएल, डेटा मिटाने की समयसीमा को कम करता है, ताकि डेटा मिटाने की टोटल कॉस्ट ऑफ़ ओनरशिप कम हो सके. आम तौर पर, डेटा के खत्म होने के 24 घंटे के अंदर उसे मिटा दिया जाता है.

  • किसी मौजूदा कलेक्शन पर टीटीएल इंडेक्स बनाने से, टीटीएल इंडेक्स के हिसाब से, समयसीमा खत्म हो चुके सभी डेटा को एक साथ मिटा दिया जाता है. ध्यान दें कि एक साथ कई आइटम मिटाने की प्रोसेस भी तुरंत पूरी नहीं होती. इसमें लगने वाला समय, उस कलेक्शन में मौजूद डेटा की मात्रा पर निर्भर करता है.

  • अगर किसी दस्तावेज़ की समयसीमा खत्म हो चुकी है और आपने कलेक्शन में नया टीटीएल इंडेक्स जोड़ा है, तो टीटीएल इंडेक्स का सेटअप पूरा होने और चालू होने के 24 घंटों के अंदर दस्तावेज़ मिट जाएगा.

  • टीटीएल, दस्तावेज़ों को उसी क्रम में नहीं मिटाता जिस क्रम में उनके समयसीमा खत्म होने के टाइमस्टैंप होते हैं.

  • डेटा को लेन-देन के आधार पर नहीं मिटाया जाता. जिन दस्तावेज़ों के मिटने का समय एक जैसा होता है उन्हें एक साथ मिटाना ज़रूरी नहीं है. अगर आपको इस तरह के व्यवहार की ज़रूरत है, तो क्लाइंट लाइब्रेरी का इस्तेमाल करके मिटाने की कार्रवाई करें.

  • Cloud Firestore, एक्सपायर होने की तारीख का पता लगाने के लिए, हमेशा टीटीएल फ़ील्ड की नई वैल्यू का इस्तेमाल करेगा. उदाहरण के लिए, अगर किसी ऐसे दस्तावेज़ के टीटीएल फ़ील्ड को बाद की तारीख पर अपडेट किया जाता है जिसकी समयसीमा खत्म हो गई है, लेकिन जिसे अब तक नहीं मिटाया गया है, तो दस्तावेज़ की समयसीमा खत्म नहीं होगी और नई तारीख का इस्तेमाल किया जाएगा.

  • Cloud Firestore किसी दस्तावेज़ की समयसीमा सिर्फ़ तब खत्म करता है, जब टीटीएल फ़ील्ड को Date and time/BSON Date वैल्यू या Array वैल्यू पर सेट किया गया हो. वैल्यू में Date and time/BSON Date वैल्यू शामिल होती है. फ़ील्ड को खाली छोड़ें या हर दस्तावेज़ के हिसाब से समयसीमा खत्म होने की सुविधा बंद करने के लिए, null जैसे किसी वैल्यू पर सेट करें.

  • टीटीएल को इस तरह से डिज़ाइन किया गया है कि इससे डेटाबेस की अन्य गतिविधियों पर कम से कम असर पड़े. टीटीएल की वजह से मिटाए गए डेटा को कम प्राथमिकता दी जाती है. टीटीएल के आधार पर मिटाए गए डेटा की वजह से होने वाली ट्रैफ़िक में अचानक बढ़ोतरी को कम करने के लिए, अन्य रणनीतियां भी लागू की जाती हैं.

टीटीएल इंडेक्स से जुड़े अंतर

अन्य Firestore इंडेक्स के उलट, टीटीएल इंडेक्स का इस्तेमाल क्वेरी प्लान बनाने के दौरान नहीं किया जाता. इससे परफ़ॉर्मेंस बेहतर होती है. टीटीएल के साथ इस्तेमाल किए गए फ़ील्ड पर क्वेरी की परफ़ॉर्मेंस को बेहतर बनाने के लिए, आपको इसे टीटीएल के बिना इंडेक्स किए गए अलग इंडेक्स में जोड़ना होगा.

यह ध्यान रखना ज़रूरी है कि टीटीएल फ़ील्ड टाइमस्टैंप का इस्तेमाल करते हैं. इसलिए, उन्हें किसी ऐसे इंडेक्स में जोड़ने से हॉटस्पॉट बन सकते हैं जिसमें टीटीएल की सुविधा नहीं होती. हॉटस्पॉट तब बनते हैं, जब किसी दस्तावेज़ में लिखने और मिटाने की प्रोसेस बहुत ज़्यादा होती है. इससे, लिखने की प्रोसेस ज़्यादा होने पर, स्केलिंग की परफ़ॉर्मेंस पर बुरा असर पड़ सकता है.

अनुमतियां

टीटीएल इंडेक्स बनाने या हटाने वाले प्रिंसिपल के पास प्रोजेक्ट में यह अनुमति होनी चाहिए:

  • टीटीएल इंडेक्स देखने के लिए, datastore.indexes.list और datastore.indexes.get अनुमतियों की ज़रूरत होती है.
  • टीटीएल इंडेक्स बनाने या हटाने के लिए, datastore.indexes.update अनुमति की ज़रूरत होती है.
  • टीटीएल ऑपरेशन का स्टेटस देखने के लिए, datastore.operations.list और datastore.operations.get की ज़रूरत होती है.

इन अनुमतियों को असाइन करने वाली भूमिकाओं के बारे में जानने के लिए, Cloud Firestore पहचान और ऐक्सेस मैनेजमेंट की भूमिकाएं लेख पढ़ें.

टीटीएल इंडेक्स बनाना

टीटीएल इंडेक्स बनाते समय, किसी दस्तावेज़ फ़ील्ड को किसी कलेक्शन में मौजूद दस्तावेज़ों के लिए समयसीमा के तौर पर सेट किया जाता है.

टीटीएल, मिटाए जाने के लिए ज़रूरी दस्तावेज़ों की पहचान करने के लिए, तय किए गए फ़ील्ड का इस्तेमाल करता है. टीटीएल फ़ील्ड को Timestamp/BSON Date वैल्यू या Array वैल्यू पर सेट किया जाना चाहिए. वैल्यू में Timestamp/BSON Date वैल्यू होनी चाहिए. आपके पास ऐसा फ़ील्ड चुनने का विकल्प होता है जो पहले से मौजूद है. इसके अलावा, ऐसा फ़ील्ड भी चुना जा सकता है जिसे आपको बाद में जोड़ना है.

टीटीएल फ़ील्ड की वैल्यू सेट करने से पहले, इन बातों का ध्यान रखें:

  • टीटीएल फ़ील्ड की वैल्यू, आने वाले समय, अभी या पिछले समय की हो सकती है. अगर वैल्यू में पिछली तारीख का समय दिया गया है, तो दस्तावेज़ को तुरंत मिटाया जा सकता है. उदाहरण के लिए, expireAt फ़ील्ड के साथ टीटीएल इंडेक्स बनाया जा सकता है. इसके बाद, इसे मौजूदा दस्तावेज़ों में जोड़ा जा सकता है.

  • किसी अन्य डेटा टाइप का इस्तेमाल करने या टीटीएल फ़ील्ड की वैल्यू सेट न करने पर, दस्तावेज़ के लिए टीटीएल बंद हो जाएगा.

टीटीएल इंडेक्स बनाने के लिए, यह तरीका अपनाएं:

MongoDB API

createIndex() तरीके को कॉल करते समय, expireAfterSeconds इंडेक्स विकल्प शामिल करें:

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

उदाहरण के लिए:

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

expireAfterSeconds, टीटीएल को टीटीएल इंडेक्स के तौर पर पहचानता है. साथ ही, यह टीटीएल फ़ील्ड की टाइमस्टैंप वैल्यू और खत्म होने के समय के बीच का ऑफ़सेट होता है. अगर expireAfterSeconds को 0 पर सेट किया जाता है, तो खत्म होने का समय, टीटीएल फ़ील्ड में मौजूद टाइमस्टैंप वैल्यू से तय होता है.

इन बातों का ध्यान रखें:

  • टीटीएल इंडेक्स में सिर्फ़ एक फ़ील्ड होना चाहिए.
  • क्वेरी की प्लानिंग में टीटीएल इंडेक्स का इस्तेमाल नहीं किया जाता. साथ ही, इससे क्वेरी की परफ़ॉर्मेंस बेहतर नहीं होती.
  • हर कलेक्शन के लिए, सिर्फ़ एक टीटीएल इंडेक्स बनाया जा सकता है.
  • MongoDB API की मदद से टीटीएल इंडेक्स बनाने के लिए, ऑडिट लॉग में google.firestore.admin.v1.FirestoreAdmin.UpdateField तरीके का नाम इस्तेमाल किया जाता है.

Google Cloud Console

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.

  3. नेविगेशन मेन्यू में, टाइम-टू-लाइव पर क्लिक करें.

  4. नीति बनाएं पर क्लिक करें.

  5. कलेक्शन का नाम और टाइमस्टैंप फ़ील्ड का नाम डालें.

  6. ज़रूरी नहीं: ऐक्सेस खत्म होने की तारीख कॉन्फ़िगर करें. कोई वैल्यू डालें और यूनिट चुनें (दिन, घंटे, मिनट या सेकंड). डिफ़ॉल्ट रूप से, ऑफ़सेट 0 होता है.

  7. बनाएं पर क्लिक करें.

कंसोल, टाइम-टू-लाइव पेज पर वापस आ जाता है. अगर ऑपरेशन सफलतापूर्वक शुरू हो जाता है, तो पेज, टीटीएल इंडेक्स टेबल में एक एंट्री जोड़ता है. ऐसा न होने पर, पेज पर गड़बड़ी का मैसेज दिखता है.

gcloud

  1. gcloud CLI सीएलआई को इंस्टॉल करें और शुरू करें.

  2. टीटीएल इंडेक्स को कॉन्फ़िगर करने के लिए, firestore fields ttls update कमांड का इस्तेमाल करें. --async फ़्लैग जोड़ें, ताकि gcloud CLI को कार्रवाई पूरी होने का इंतज़ार न करना पड़े.

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

    ऐक्सेस खत्म होने की ऑफ़सेट के साथ टीटीएल इंडेक्स चालू करने के लिए, --expiration-offset फ़्लैग जोड़ें:

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

    expiration_offset को किसी अवधि से बदलें. उदाहरण के लिए, 7d सात दिनों के लिए या 24h 24 घंटों के लिए. अगर आपने इस फ़्लैग को शामिल नहीं किया है, तो समयसीमा खत्म होने का ऑफ़सेट डिफ़ॉल्ट रूप से 0 पर सेट हो जाता है.

टीटीएल इंडेक्स बनाने में लगने वाला समय

टीटीएल इंडेक्स बनाने में कम से कम दस मिनट या इससे ज़्यादा समय लग सकता है. कोई कार्रवाई शुरू करने के बाद, टर्मिनल बंद करने से कार्रवाई रद्द नहीं होती.

टीटीएल इंडेक्स देखना

टीटीएल इंडेक्स देखने के लिए, यह तरीका अपनाएं:

MongoDB API

टीटीएल इंडेक्स देखने के लिए, listIndexes() तरीके का इस्तेमाल करें. उदाहरण के लिए:

db.restaurants.listIndexes()

ध्यान दें कि आउटपुट में टीटीएल और नॉन-टीटीएल, दोनों तरह के इंडेक्स शामिल होंगे. टीटीएल इंडेक्स में expireAfterSeconds विकल्प शामिल होगा.

Google Cloud Console

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.

  3. नेविगेशन मेन्यू में, टाइम-टू-लाइव पर क्लिक करें.

कंसोल, आपके डेटाबेस के लिए टीटीएल इंडेक्स की सूची दिखाता है. साथ ही, इसमें हर इंडेक्स की स्थिति शामिल होती है.

gcloud

  1. gcloud CLI सीएलआई को इंस्टॉल करें और शुरू करें.

  2. टीटीएल इंडेक्स को कॉन्फ़िगर करने के लिए, firestore fields ttls list कमांड का इस्तेमाल करें. यहां दी गई कमांड से, सभी टीटीएल इंडेक्स की सूची मिलती है.

    gcloud firestore fields ttls list
    

    किसी कलेक्शन के तहत टीटीएल इंडेक्स की सूची बनाने के लिए, इसका इस्तेमाल करें:

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

कार्रवाई की जानकारी देखना

CREATING स्थिति में मौजूद टीटीएल इंडेक्स के बारे में ज़्यादा जानकारी देखने के लिए, gcloud CLI का इस्तेमाल किया जा सकता है.

operations list कमांड का इस्तेमाल करके, चल रही और हाल ही में पूरी हुई सभी कार्रवाइयां देखें:

gcloud firestore operations list

जवाब में, ऑपरेशन की प्रोग्रेस का अनुमान शामिल होता है.

टीटीएल इंडेक्स हटाना

टीटीएल इंडेक्स को हटाने के लिए, यह तरीका अपनाएं:

MongoDB API

टीटीएल इंडेक्स को हटाने के लिए, dropIndex() तरीके का इस्तेमाल करें. उदाहरण के लिए:

इंडेक्स के नाम का इस्तेमाल करके, टीटीएल इंडेक्स हटाना

db.restaurants.dropIndex("ts_1")

इंडेक्स की परिभाषा का इस्तेमाल करके टीटीएल इंडेक्स हटाना

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

ध्यान दें कि MongoDB API की मदद से टीटीएल इंडेक्स हटाने के लिए, ऑडिट लॉग में google.firestore.admin.v1.FirestoreAdmin.UpdateField तरीके का नाम इस्तेमाल किया जाता है.

Google Cloud Console

  1. Google Cloud Console में, डेटाबेस पेज पर जाएं.

    डेटाबेस पर जाएं

  2. डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी आपको ज़रूरत है.

  3. नेविगेशन मेन्यू में, टाइम-टू-लाइव पर क्लिक करें.

  4. टीटीएल इंडेक्स टेबल में, टीटीएल इंडेक्स की लाइन ढूंढें. इस टेबल की लाइन में, मिटाएं (ट्रैश कैन) बटन पर क्लिक करें.

  5. मिटाएं पर क्लिक करके पुष्टि करें.

कंसोल, टाइम-टू-लाइव पेज पर वापस आ जाता है. कार्रवाई पूरी होने पर, Cloud Firestore टेबल से टीटीएल इंडेक्स हटा देता है.

gcloud

  1. gcloud CLI सीएलआई को इंस्टॉल करें और शुरू करें.

  2. टीटीएल इंडेक्स को कॉन्फ़िगर करने के लिए, firestore fields ttls update कमांड का इस्तेमाल करें. --async फ़्लैग जोड़ें, ताकि gcloud CLI को कार्रवाई पूरी होने का इंतज़ार न करना पड़े.

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

टीटीएल के हिसाब से मिटाए गए डेटा पर नज़र रखना

टीटीएल के आधार पर मिटाए गए डेटा के बारे में मेट्रिक देखने के लिए, Cloud Monitoring का इस्तेमाल करें. Cloud Firestore टीटीएल के लिए ये मेट्रिक उपलब्ध कराता है:

मेट्रिक का टाइप मेट्रिक का नाम मेट्रिक की जानकारी
firestore.googleapis.com/document/ttl_deletion_count मिटाए गए वीडियो की संख्या

टीटीएल इंडेक्स की मदद से मिटाए गए दस्तावेज़ों की कुल संख्या.

firestore.googleapis.com/document/ttl_expiration_to_deletion_delays समयसीमा खत्म होने से लेकर खाता मिटने तक की अवधि

टीटीएल इंडेक्स के तहत किसी दस्तावेज़ की समयसीमा खत्म होने और उसे मिटाने के बीच का समय.

Cloud Firestore मेट्रिक वाला डैशबोर्ड सेट अप करने के लिए, कस्टम डैशबोर्ड मैनेज करना और डैशबोर्ड विजेट जोड़ना लेख पढ़ें.