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

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

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

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

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

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

MongoDB API

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

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