इस पेज पर, 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
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से, ज़रूरी डेटाबेस चुनें.
नेविगेशन मेन्यू में, टाइम-टू-लिव पर क्लिक करें.
नीति बनाएं पर क्लिक करें.
कलेक्शन का नाम और टाइमस्टैंप फ़ील्ड का नाम डालें.
बनाएं पर क्लिक करें.
कंसोल, टाइम-टू-लिव पेज पर वापस आ जाता है. अगर कार्रवाई सफलतापूर्वक शुरू होती है, तो पेज, टीटीएल इंडेक्स की टेबल में एक एंट्री जोड़ता है. कार्रवाई पूरी न होने पर, पेज पर गड़बड़ी का मैसेज दिखता है.
gcloud
इंस्टॉल करें और शुरू करें gcloud CLI CLI.
टीटीएल इंडेक्स कॉन्फ़िगर करने के लिए,
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
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से, ज़रूरी डेटाबेस चुनें.
नेविगेशन मेन्यू में, टाइम-टू-लिव पर क्लिक करें.
कंसोल, आपके डेटाबेस के लिए टीटीएल इंडेक्स की सूची दिखाता है. साथ ही, इसमें हर इंडेक्स की स्थिति भी शामिल होती है.
gcloud
इंस्टॉल करें और शुरू करें gcloud CLI CLI.
टीटीएल इंडेक्स कॉन्फ़िगर करने के लिए,
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
इंस्टॉल करें और शुरू करें gcloud CLI CLI.
टीटीएल इंडेक्स कॉन्फ़िगर करने के लिए,
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 मेट्रिक के साथ डैशबोर्ड सेट अप करने के लिए, पसंद के मुताबिक डैशबोर्ड मैनेज करना और डैशबोर्ड में विजेट जोड़ना देखें.