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

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

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

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

कीमत

टीटीएल के आधार पर मिटाए गए दस्तावेज़ों को, दस्तावेज़ मिटाने के शुल्क में शामिल किया जाता है. डेटा मिटाने की कार्रवाइयों की कीमत जानने के लिए, Cloud Firestore Enterprise वर्शन की कीमत देखें.

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

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

टीटीएल के आधार पर मिटाना

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

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

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

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

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

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

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

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

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

टीटीएल फ़ील्ड और नॉन-टीटीएल इंडेक्स

टीटीएल फ़ील्ड को इंडेक्स किया जा सकता है या इंडेक्स नहीं किया जा सकता. हालांकि, टीटीएल फ़ील्ड एक टाइमस्टैंप होता है. इसलिए, टीटीएल के बिना इंडेक्स में फ़ील्ड को शामिल करने से, ज़्यादा ट्रैफ़िक रेट पर परफ़ॉर्मेंस पर असर पड़ सकता है. नॉन-टीटीएल इंडेक्स में टाइमस्टैंप फ़ील्ड शामिल करने से हॉटस्पॉट बन सकते हैं. यह सबसे सही तरीकों के ख़िलाफ़ है. हॉटस्पॉट, दस्तावेज़ की किसी छोटी रेंज में डेटा को पढ़ने, लिखने, और मिटाने की ज़्यादा दरें होती हैं.

अनुमतियां

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

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

इन अनुमतियों को असाइन करने वाली भूमिकाओं के बारे में जानने के लिए, Cloud Firestore Identity and Access Management की भूमिकाएं देखें.

शुरू करने से पहले

टीटीएल इंडेक्स मैनेज करने के लिए gcloud CLI का इस्तेमाल करने से पहले, gcloud components update कमांड का इस्तेमाल करके कॉम्पोनेंट को उपलब्ध सबसे नए वर्शन पर अपडेट करें:

gcloud components update

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

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

टीटीएल, मिटाए जा सकने वाले दस्तावेज़ों की पहचान करने के लिए, तय किए गए फ़ील्ड का इस्तेमाल करता है. टीटीएल फ़ील्ड को Timestamp/BSON Date वैल्यू या Array वैल्यू पर सेट किया जाना चाहिए. 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. बनाएं पर क्लिक करें.

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

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 

टीटीएल इंडेक्स बनाने की अवधि

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

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

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

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 मेट्रिक वाला डैशबोर्ड सेट अप करने के लिए, कस्टम डैशबोर्ड मैनेज करना और डैशबोर्ड विजेट जोड़ना लेख पढ़ें.