इस पेज पर, टाइम टू लिव (टीटीएल) इंडेक्स को कॉन्फ़िगर करने के लिए, 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
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी ज़रूरत है.
नेविगेशन मेन्यू में, टाइम-टू-लाइव पर क्लिक करें.
नीति बनाएं पर क्लिक करें.
कलेक्शन का नाम और टाइमस्टैंप फ़ील्ड का नाम डालें.
ज़रूरी नहीं: ऐक्सेस खत्म होने की तारीख कॉन्फ़िगर करें. कोई वैल्यू डालें और यूनिट चुनें (दिन, घंटे, मिनट या सेकंड). डिफ़ॉल्ट रूप से, ऑफ़सेट 0 होता है.
बनाएं पर क्लिक करें.
कंसोल, टाइम-टू-लाइव पेज पर वापस आ जाता है. अगर ऑपरेशन सफलतापूर्वक शुरू हो जाता है, तो पेज, टीटीएल इंडेक्स टेबल में एक एंट्री जोड़ता है. ऐसा न होने पर, पेज पर गड़बड़ी का मैसेज दिखता है.
gcloud
टीटीएल इंडेक्स को कॉन्फ़िगर करने के लिए,
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सात दिनों के लिए या24h24 घंटों के लिए. अगर आपने इस फ़्लैग को शामिल नहीं किया है, तो समयसीमा खत्म होने का ऑफ़सेट डिफ़ॉल्ट रूप से 0 पर सेट हो जाता है.
टीटीएल इंडेक्स बनाने में लगने वाला समय
टीटीएल इंडेक्स बनाने में कम से कम दस मिनट या इससे ज़्यादा समय लग सकता है. कोई कार्रवाई शुरू करने के बाद, टर्मिनल बंद करने से कार्रवाई रद्द नहीं होती.
टीटीएल इंडेक्स देखना
टीटीएल इंडेक्स देखने के लिए, यह तरीका अपनाएं:
MongoDB API
टीटीएल इंडेक्स देखने के लिए, listIndexes() तरीके का इस्तेमाल करें. उदाहरण के लिए:
db.restaurants.listIndexes()
ध्यान दें कि आउटपुट में टीटीएल इंडेक्स और नॉन-टीटीएल इंडेक्स, दोनों शामिल होंगे. टीटीएल इंडेक्स में expireAfterSeconds विकल्प शामिल होगा.
Google Cloud Console
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी ज़रूरत है.
नेविगेशन मेन्यू में, टाइम-टू-लाइव पर क्लिक करें.
कंसोल, आपके डेटाबेस के लिए टीटीएल इंडेक्स की सूची दिखाता है. साथ ही, इसमें हर इंडेक्स की स्थिति शामिल होती है.
gcloud
टीटीएल इंडेक्स को कॉन्फ़िगर करने के लिए,
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
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची से, वह डेटाबेस चुनें जिसकी ज़रूरत है.
नेविगेशन मेन्यू में, टाइम-टू-लाइव पर क्लिक करें.
टीटीएल इंडेक्स टेबल में, टीटीएल इंडेक्स की लाइन ढूंढें. इस टेबल की लाइन में, मिटाएं (ट्रैश कैन) बटन पर क्लिक करें.
मिटाएं पर क्लिक करके पुष्टि करें.
कंसोल, टाइम-टू-लाइव पेज पर वापस आ जाता है. कार्रवाई पूरी होने पर, Cloud Firestore टेबल से टीटीएल इंडेक्स हटा देता है.
gcloud
टीटीएल इंडेक्स को कॉन्फ़िगर करने के लिए,
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 मेट्रिक वाला डैशबोर्ड सेट अप करने के लिए, कस्टम डैशबोर्ड मैनेज करना और डैशबोर्ड विजेट जोड़ना लेख पढ़ें.