इस पेज पर, Google Cloud Console और Google Cloud CLI का इस्तेमाल करके, टाइम टू लिव (टीटीएल) नीतियां कॉन्फ़िगर करने का तरीका बताया गया है. इस पेज को पढ़ने से पहले, आपको Cloud Firestore डेटा मॉडल के बारे में पता होना चाहिए.
टाइम टू लिव की खास जानकारी
टीटीएल नीतियों का इस्तेमाल करके, अपने डेटाबेस से पुराना डेटा अपने-आप हटाया जा सकता है. टीटीएल नीति, किसी कलेक्शन ग्रुप में मौजूद दस्तावेज़ों के लिए, किसी फ़ील्ड को एक्सपायर होने का समय तय करती है. टीटीएल की मदद से, पुराने डेटा को हटाकर स्टोरेज की लागत कम की जा सकती है. आम तौर पर, डेटा को उसकी एक्सपायरी डेट के 24 घंटे के अंदर मिटा दिया जाता है.
कीमत
टीटीएल के तहत मिटाने की कार्रवाइयों को, दस्तावेज़ मिटाने की लागत में गिना जाता है. मिटाने की कार्रवाइयों की कीमत जानने के लिए, Cloud Firestore की कीमत देखें.
सीमाएं और पाबंदियां
- हर कलेक्शन ग्रुप के लिए, सिर्फ़ एक फ़ील्ड को टीटीएल फ़ील्ड के तौर पर मार्क किया जा सकता है.
- फ़ील्ड लेवल पर ज़्यादा से ज़्यादा 1,000 कॉन्फ़िगरेशन किए जा सकते हैं. एक फ़ील्ड कॉन्फ़िगरेशन में, एक ही फ़ील्ड के लिए कई कॉन्फ़िगरेशन शामिल हो सकते हैं. उदाहरण के लिए, किसी एक फ़ील्ड के लिए इंडेक्सिंग से छूट और उसी फ़ील्ड पर टीटीएल नीति को, सीमा के हिसाब से एक फ़ील्ड कॉन्फ़िगरेशन के तौर पर गिना जाता है.
- Datastore मोड में Firestore के ग्राहकों के लिए, टीटीएल का इस्तेमाल, एंटिटी ग्रुप के साथ ऑप्टिमिस्टिक के कॉनकरेंसी मोड के साथ नहीं किया जा सकता. कॉनकरेंसी मोड को ऑप्टिमिस्टिक कॉनकरेंसी मोड में बदलने के बारे में सोचें.
टीटीएल के तहत मिटाना
टीटीएल के तहत मिटाने की सुविधा के मुख्य व्यवहार के बारे में यहां बताया गया है:
टीटीएल के तहत मिटाने की प्रोसेस तुरंत नहीं होती. एक्सपायर हो चुके दस्तावेज़, क्वेरी और लुकअप के अनुरोधों में तब तक दिखते रहते हैं, जब तक टीटीएल की प्रोसेस उन्हें मिटा नहीं देती. टीटीएल, दस्तावेज़ों को मिटाने में लगने वाले समय को कम करता है. इससे, दस्तावेज़ों को मिटाने की टोटल कॉस्ट ऑफ़ ओनरशिप कम हो जाती है. आम तौर पर, डेटा को उसकी एक्सपायरी डेट के 24 घंटे के अंदर मिटा दिया जाता है.
टीटीएल के तहत किसी दस्तावेज़ को मिटाने से, उस दस्तावेज़ के सबकलेक्शन नहीं मिटते.
किसी मौजूदा कलेक्शन ग्रुप पर टीटीएल नीति लागू करने से, एक्सपायर हो चुके सभी डेटा को नई टीटीएल नीति के हिसाब से एक साथ मिटा दिया जाता है. ध्यान दें कि एक साथ मिटाने की यह प्रोसेस भी तुरंत नहीं होती. यह इस बात पर निर्भर करती है कि उस कलेक्शन ग्रुप के लिए कितना डेटा मौजूद है.
अगर किसी दस्तावेज़ के एक्सपायर होने का समय बीत चुका है और आपने कलेक्शन में नई टीटीएल नीति जोड़ी है, तो टीटीएल नीति के सेटअप होने और चालू होने के 24 घंटे के अंदर, दस्तावेज़ मिट जाएगा.
यह ज़रूरी नहीं है कि टीटीएल, दस्तावेज़ों को उसी क्रम में मिटाए जिस क्रम में उनके एक्सपायर होने के टाइमस्टैंप होते हैं.
दस्तावेज़ों को मिटाने की प्रोसेस, लेन-देन के तौर पर नहीं की जाती. एक ही समय पर एक्सपायर होने वाले दस्तावेज़ों को, एक ही समय पर मिटाना ज़रूरी नहीं है. अगर आपको ऐसा करना है, तो क्लाइंट लाइब्रेरी का इस्तेमाल करके दस्तावेज़ों को मिटाएं.
Cloud Firestore एक्सपायरी डेट तय करने के लिए, हमेशा सबसे नए टीटीएल फ़ील्ड का इस्तेमाल करेगा. उदाहरण के लिए, अगर एक्सपायर हो चुके, लेकिन अब तक मिटाए नहीं गए किसी दस्तावेज़ के टीटीएल फ़ील्ड को बाद की तारीख पर अपडेट किया जाता है, तो दस्तावेज़ एक्सपायर नहीं होगा. साथ ही, नई तारीख का इस्तेमाल किया जाएगा.
Cloud Firestore किसी दस्तावेज़ को सिर्फ़ तब एक्सपायर करता है, जब टीटीएल फ़ील्ड को वैल्यू के खास टाइप पर सेट किया जाता है. स्टैंडर्ड एडिशन वाले डेटाबेस के लिए, फ़ील्ड को
Date and timeवैल्यू पर सेट करना ज़रूरी है. Enterprise एडिशन वाले डेटाबेस के लिए, फ़ील्ड कोDate and timeवैल्यू याArrayवैल्यू पर सेट करना ज़रूरी है. इसमेंDate and timeवैल्यू शामिल होती है. फ़ील्ड को खाली छोड़ने याnullजैसी वैल्यू पर सेट करने से, हर दस्तावेज़ के हिसाब से एक्सपायरी को बंद किया जा सकता है.टीटीएल को इस तरह डिज़ाइन किया गया है कि इसका असर, डेटाबेस की अन्य गतिविधियों पर कम से कम पड़े. टीटीएल के तहत मिटाने की कार्रवाइयों को कम प्राथमिकता दी जाती है. टीटीएल के तहत मिटाने की कार्रवाइयों की वजह से होने वाले ट्रैफ़िक स्पाइक को कम करने के लिए, अन्य रणनीतियां भी लागू की जाती हैं.
टीटीएल के तहत मिटाने की कार्रवाई से, स्नैपशॉट के सभी चालू लिसनर को कॉल किया जाता है. साथ ही, Cloud Functions Cloud Firestore ट्रिगर चालू होते हैं.
टीटीएल फ़ील्ड और इंडेक्स
टीटीएल फ़ील्ड को इंडेक्स किया जा सकता है या नहीं भी किया जा सकता. हालांकि, टीटीएल फ़ील्ड एक टाइमस्टैंप होता है. इसलिए, फ़ील्ड को इंडेक्स करने से, ज़्यादा ट्रैफ़िक रेट पर परफ़ॉर्मेंस पर असर पड़ सकता है. टाइमस्टैंप फ़ील्ड को इंडेक्स करने से हॉटस्पॉट बन सकते हैं. यह सबसे सही तरीका नहीं है. हॉटस्पॉट, दस्तावेज़ों की सीमित रेंज के लिए, ज़्यादा रीड, राइट, और मिटाने की दरें होती हैं.
डिफ़ॉल्ट रूप से, Cloud Firestore स्टैंडर्ड एडिशन, सभी फ़ील्ड के लिए सिंगल-फ़ील्ड इंडेक्स बनाता है. टीटीएल फ़ील्ड पर इंडेक्स बंद करने के लिए, सिंगल-फ़ील्ड इंडेक्स से छूट दी जा सकती है .
अनुमतियां
टीटीएल नीति को कॉन्फ़िगर करने वाले प्रिंसिपल के पास, प्रोजेक्ट में यह अनुमति होनी चाहिए:
- टीटीएल नीतियां देखने के लिए,
datastore.indexes.listऔरdatastore.indexes.getअनुमतियां ज़रूरी हैं. - टीटीएल नीतियों में बदलाव करने के लिए,
datastore.indexes.updateअनुमति ज़रूरी है. - टीटीएल की कार्रवाइयों की स्थिति देखने के लिए,
datastore.operations.listऔरdatastore.operations.getअनुमतियां ज़रूरी हैं.
इन अनुमतियों को असाइन करने वाली भूमिकाओं के बारे में जानने के लिए, Cloud Firestore आइडेंटिटी ऐंड ऐक्सेस मैनेजमेंट की भूमिकाएं देखें.
टीटीएल नीति बनाना
टीटीएल नीति बनाते समय, किसी कलेक्शन ग्रुप में मौजूद दस्तावेज़ों के लिए, किसी दस्तावेज़ फ़ील्ड को एक्सपायर होने का समय तय किया जाता है.
टीटीएल, मिटाने के लिए ज़रूरी दस्तावेज़ों की पहचान करने के लिए, तय किए गए फ़ील्ड का इस्तेमाल करता है.
स्टैंडर्ड एडिशन वाले डेटाबेस के लिए, टीटीएल फ़ील्ड को Date and time वैल्यू पर सेट करना ज़रूरी है.
Enterprise एडिशन वाले डेटाबेस के लिए, इसे Date and time वैल्यू या Array वैल्यू पर सेट करना ज़रूरी है. इसमें Date and time वैल्यू शामिल होती है. ऐसा फ़ील्ड चुना जा सकता है जो पहले से मौजूद है या ऐसा फ़ील्ड तय किया जा सकता है जिसे बाद में जोड़ा जाएगा.
टीटीएल फ़ील्ड की वैल्यू सेट करने से पहले, इन बातों का ध्यान रखें:
टीटीएल फ़ील्ड की वैल्यू, आने वाले समय, अभी या बीते समय की हो सकती है. अगर वैल्यू बीते समय की है, तो दस्तावेज़ तुरंत मिटाने के लिए ज़रूरी हो जाता है. उदाहरण के लिए,
expireAtफ़ील्ड के साथ टीटीएल नीति बनाई जा सकती है. इसके बाद, इसे मौजूदा दस्तावेज़ों में जोड़ा जा सकता है.किसी अन्य डेटा टाइप का इस्तेमाल करने या टीटीएल फ़ील्ड की वैल्यू सेट न करने पर, किसी एक दस्तावेज़ के लिए टीटीएल बंद हो जाएगा.
टीटीएल नीति बनाने के लिए, यह तरीका अपनाएं:
Google Cloud Console
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से, ज़रूरी डेटाबेस चुनें.
नेविगेशन मेन्यू में, टाइम-टू-लिव पर क्लिक करें.
नीति बनाएं पर क्लिक करें.
कलेक्शन ग्रुप का नाम और टाइमस्टैंप फ़ील्ड का नाम डालें.
बनाएं पर क्लिक करें.
कंसोल, टाइम-टू-लिव पेज पर वापस आ जाता है. अगर कार्रवाई सफलतापूर्वक शुरू होती है, तो पेज, टीटीएल नीतियों की टेबल में एक एंट्री जोड़ता है. कार्रवाई पूरी न होने पर, पेज पर गड़बड़ी का मैसेज दिखता है.
gcloud
टीटीएल नीति को कॉन्फ़िगर करने के लिए, firestore fields ttls
update
कमांड का इस्तेमाल करें. --async फ़्लैग जोड़ें, ताकि
gcloud सीएलआई को कार्रवाई पूरी होने का इंतज़ार न करना पड़े.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
टीटीएल नीति को चालू रखने की अवधि
टीटीएल नीति को चालू करने में कम से कम दस मिनट या उससे ज़्यादा समय लग सकता है. कोई कार्रवाई शुरू करने के बाद, टर्मिनल बंद करने से कार्रवाई रद्द नहीं होती.
टीटीएल नीतियां देखना
टीटीएल नीतियां और उनकी स्थितियां देखने के लिए, यह तरीका अपनाएं:
Google Cloud Console
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से, ज़रूरी डेटाबेस चुनें.
नेविगेशन मेन्यू में, टाइम-टू-लिव पर क्लिक करें.
कंसोल, आपके डेटाबेस के लिए टीटीएल नीतियां दिखाता है. साथ ही, इसमें हर नीति की स्थिति भी शामिल होती है.
gcloud
टीटीएल नीति को कॉन्फ़िगर करने के लिए,
firestore fields ttls list
कमांड का इस्तेमाल करें. यहां दी गई कमांड, सभी टीटीएल
नीतियां दिखाती है.
gcloud firestore fields ttls list
किसी खास कलेक्शन ग्रुप के तहत टीटीएल नीतियां देखने के लिए, यह कमांड इस्तेमाल करें:
gcloud firestore fields ttls list --collection-group=collection_group_name
कार्रवाई की जानकारी देखना
gcloud सीएलआई का इस्तेमाल करके, CREATING स्थिति में मौजूद टीटीएल नीति के बारे में ज़्यादा जानकारी देखी जा सकती है.
हाल ही में पूरी हुई और इस समय चल रही सभी कार्रवाइयां देखने के लिए, operations list कमांड का इस्तेमाल करें:
gcloud firestore operations list
जवाब में, कार्रवाई की प्रोग्रेस का अनुमान शामिल होता है.
टीटीएल नीति बंद करना
टीटीएल नीति बंद करने के लिए, यह तरीका अपनाएं:
Google Cloud Console
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से, ज़रूरी डेटाबेस चुनें.
नेविगेशन मेन्यू में, टाइम-टू-लिव पर क्लिक करें.
टीटीएल नीति की टेबल में, टीटीएल नीति वाली लाइन ढूंढें. इस टेबल की लाइन में, मिटाएं (ट्रैश कैन) बटन पर क्लिक करें.
मिटाएं पर क्लिक करके पुष्टि करें.
कंसोल, टाइम-टू-लिव पेज पर वापस आ जाता है. कार्रवाई पूरी होने पर, Cloud Firestore टीटीएल नीति को टेबल से हटा देता है.
gcloud
1. टीटीएल नीति को कॉन्फ़िगर करने के लिए,
firestore fields ttls update
कमांड का इस्तेमाल करें. --async फ़्लैग जोड़ें, ताकि
gcloud सीएलआई को कार्रवाई पूरी होने का इंतज़ार न करना पड़े.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_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 मेट्रिक के साथ डैशबोर्ड सेट अप करने के लिए, पसंद के मुताबिक डैशबोर्ड मैनेज करना और डैशबोर्ड में विजेट जोड़ना देखें.