इस पेज पर, TTL (टाइम टू लिव) नीतियां कॉन्फ़िगर करने के लिए, Google Cloud Console और Google Cloud CLI का इस्तेमाल करने का तरीका बताया गया है. इस पेज को पढ़ने से पहले, आपको Cloud Firestore डेटा मॉडल के बारे में पता होना चाहिए.
टाइम टू लिव की खास जानकारी
अपने डेटाबेस से पुराना डेटा अपने-आप हटाने के लिए, TTL नीतियों का इस्तेमाल करें. TTL नीति, किसी दिए गए फ़ील्ड को, कलेक्शन ग्रुप में मौजूद दस्तावेज़ों के लिए, एक्सपायर होने का समय तय करती है. TTL की मदद से, पुराने डेटा को हटाकर स्टोरेज की लागत कम की जा सकती है. आम तौर पर, डेटा को उसकी एक्सपायरी डेट के 24 घंटे के अंदर मिटा दिया जाता है.
कीमत
TTL की मदद से मिटाने की कार्रवाइयों को, दस्तावेज़ मिटाने की लागत में गिना जाता है. मिटाने की कार्रवाइयों की कीमत जानने के लिए, Cloud Firestore की कीमत देखें.
सीमाएं और पाबंदियां
- हर कलेक्शन ग्रुप के लिए, सिर्फ़ एक फ़ील्ड को TTL फ़ील्ड के तौर पर मार्क किया जा सकता है.
- फ़ील्ड लेवल पर ज़्यादा से ज़्यादा 1,000 कॉन्फ़िगरेशन किए जा सकते हैं. एक फ़ील्ड कॉन्फ़िगरेशन में, एक ही फ़ील्ड के लिए कई कॉन्फ़िगरेशन शामिल हो सकते हैं. उदाहरण के लिए, किसी एक फ़ील्ड के लिए इंडेक्सिंग से छूट और उसी फ़ील्ड पर लागू TTL नीति को, सीमा के हिसाब से एक फ़ील्ड कॉन्फ़िगरेशन के तौर पर गिना जाता है.
- Datastore मोड में Firestore का इस्तेमाल करने वाले ग्राहकों के लिए, TTL का इस्तेमाल, Optimistic With Entity Groups के कॉनकरेंसी मोड के साथ नहीं किया जा सकता. कॉनकरेंसी मोड को Optimistic कॉनकरेंसी मोड में बदलने के बारे में सोचें.
TTL की मदद से डेटा मिटाना
TTL की मदद से डेटा मिटाने से जुड़े इन अहम पहलुओं के बारे में जानें:
TTL की मदद से डेटा मिटाने की प्रोसेस तुरंत नहीं होती. एक्सपायर हो चुके दस्तावेज़, क्वेरी और लुकअप के अनुरोधों में तब तक दिखते रहते हैं, जब तक TTL की प्रोसेस उन्हें मिटा नहीं देती. TTL की मदद से डेटा मिटाने में लगने वाले समय के मुकाबले, डेटा मिटाने की कुल लागत कम होती है. आम तौर पर, डेटा को उसकी एक्सपायरी डेट के 24 घंटे के अंदर मिटा दिया जाता है.
TTL की मदद से कोई दस्तावेज़ मिटाने पर, उस दस्तावेज़ के तहत मौजूद सब-कलेक्शन नहीं मिटते.
किसी मौजूदा कलेक्शन ग्रुप पर TTL नीति लागू करने से, नई TTL नीति के मुताबिक, एक्सपायर हो चुका सारा डेटा एक साथ मिट जाता है. ध्यान दें कि एक साथ डेटा मिटाने की प्रोसेस भी तुरंत नहीं होती. यह इस बात पर निर्भर करती है कि उस कलेक्शन ग्रुप के लिए कितना डेटा मौजूद है.
अगर किसी दस्तावेज़ के एक्सपायर होने का समय बीत चुका है और आपने कलेक्शन में नई TTL नीति जोड़ी है, तो TTL नीति के सेटअप होने और चालू होने के 24 घंटे के अंदर, वह दस्तावेज़ मिट जाएगा.
यह ज़रूरी नहीं है कि TTL, दस्तावेज़ों को उसी क्रम में मिटाए जिस क्रम में उनके एक्सपायर होने के टाइमस्टैंप होते हैं.
डेटा मिटाने की प्रोसेस, लेन-देन के तौर पर नहीं की जाती. यह ज़रूरी नहीं है कि एक ही समय पर एक्सपायर होने वाले दस्तावेज़, एक ही समय पर मिटाए जाएं. अगर आपको ऐसा करना है, तो क्लाइंट लाइब्रेरी का इस्तेमाल करके डेटा मिटाएं.
Cloud Firestore एक्सपायरी डेट तय करने के लिए, हमेशा सबसे नए TTL फ़ील्ड का इस्तेमाल करेगा. उदाहरण के लिए, अगर एक्सपायर हो चुके, लेकिन अब तक नहीं मिटाए गए किसी दस्तावेज़ के TTL फ़ील्ड को अपडेट करके, बाद की कोई तारीख सेट की जाती है, तो वह दस्तावेज़ एक्सपायर नहीं होगा. साथ ही, नई तारीख का इस्तेमाल किया जाएगा.
Cloud Firestore किसी दस्तावेज़ को सिर्फ़ तब एक्सपायर करता है, जब TTL फ़ील्ड की वैल्यू के टाइप तय किए गए हों. Standard Edition के डेटाबेस के लिए, फ़ील्ड की वैल्यू
Date and timeपर सेट होनी चाहिए. Enterprise Edition के डेटाबेस के लिए, फ़ील्ड की वैल्यूDate and timeयाArrayपर सेट होनी चाहिए. इसमेंDate and timeवैल्यू शामिल हो. फ़ील्ड को खाली छोड़ने याnullजैसी वैल्यू पर सेट करने से, हर दस्तावेज़ के हिसाब से एक्सपायरी की सुविधा बंद की जा सकती है.TTL को इस तरह से डिज़ाइन किया गया है कि इसका असर, डेटाबेस की अन्य गतिविधियों पर कम से कम पड़े. TTL की मदद से डेटा मिटाने की प्रोसेस को कम प्राथमिकता दी जाती है. TTL की मदद से डेटा मिटाने की वजह से होने वाले ट्रैफ़िक स्पाइक को कम करने के लिए, अन्य रणनीतियां भी लागू की जाती हैं.
TTL की मदद से डेटा मिटाने पर, सभी चालू स्नैपशॉट लिसनर को कॉल किया जाता है. साथ ही, Cloud Functions Cloud Firestore ट्रिगर को ट्रिगर किया जाता है.
TTL फ़ील्ड और इंडेक्स
किसी TTL फ़ील्ड को इंडेक्स किया जा सकता है या नहीं भी किया जा सकता. हालांकि, TTL फ़ील्ड एक टाइमस्टैंप होता है. इसलिए, फ़ील्ड को इंडेक्स करने से, ज़्यादा ट्रैफ़िक होने पर परफ़ॉर्मेंस पर असर पड़ सकता है. टाइमस्टैंप फ़ील्ड को इंडेक्स करने से हॉटस्पॉट बन सकते हैं. यह सबसे सही तरीका नहीं है. हॉटस्पॉट, दस्तावेज़ों की किसी खास रेंज के लिए, ज़्यादा रीड, राइट, और डिलीट रेट होते हैं.
डिफ़ॉल्ट रूप से, Cloud Firestore Standard Edition, सभी फ़ील्ड के लिए सिंगल-फ़ील्ड इंडेक्स बनाता है. TTL फ़ील्ड पर इंडेक्स बंद करने के लिए, सिंगल-फ़ील्ड इंडेक्स से छूट दी जा सकती है .
अनुमतियां
TTL नीति को कॉन्फ़िगर करने वाले प्रिंसिपल के पास, प्रोजेक्ट में यह अनुमति होनी चाहिए:
- TTL नीतियां देखने के लिए,
datastore.indexes.listऔरdatastore.indexes.getअनुमतियां ज़रूरी हैं. - TTL नीतियां बदलने के लिए,
datastore.indexes.updateअनुमति ज़रूरी है. - TTL की कार्रवाइयों की स्थिति देखने के लिए,
datastore.operations.listऔरdatastore.operations.getअनुमतियां ज़रूरी हैं.
इन अनुमतियों को असाइन करने वाली भूमिकाओं के बारे में जानने के लिए, Cloud Firestore की IAM भूमिकाएं देखें.
TTL नीति बनाना
TTL नीति बनाते समय, आपको किसी कलेक्शन ग्रुप में मौजूद दस्तावेज़ों के लिए, किसी दस्तावेज़ फ़ील्ड को एक्सपायर होने का समय तय करना होता है.
TTL, मिटाने के लिए ज़रूरी दस्तावेज़ों की पहचान करने के लिए, तय किए गए फ़ील्ड का इस्तेमाल करता है.
Standard Edition के डेटाबेस के लिए, TTL फ़ील्ड की वैल्यू Date and time पर सेट होनी चाहिए.
Enterprise Edition के डेटाबेस के लिए, इसकी वैल्यू Date and time या Array पर सेट होनी चाहिए. इसमें Date and time वैल्यू शामिल हो. आपके पास ऐसा फ़ील्ड चुनने का विकल्प होता है जो पहले से मौजूद है. इसके अलावा, ऐसा फ़ील्ड भी तय किया जा सकता है जिसे बाद में जोड़ा जाना है.
TTL फ़ील्ड की वैल्यू सेट करने से पहले, इन बातों का ध्यान रखें:
TTL फ़ील्ड की वैल्यू, आने वाले समय, अभी या बीते समय की हो सकती है. अगर वैल्यू बीते समय की है, तो दस्तावेज़ तुरंत मिटाने के लिए तैयार हो जाता है. उदाहरण के लिए,
expireAtफ़ील्ड के साथ TTL नीति बनाई जा सकती है. इसके बाद, इसे मौजूदा दस्तावेज़ों में जोड़ा जा सकता है.किसी अन्य डेटा टाइप का इस्तेमाल करने या TTL फ़ील्ड की वैल्यू सेट न करने पर, उस दस्तावेज़ के लिए TTL बंद हो जाएगा.
TTL नीति बनाने के लिए, यह तरीका अपनाएं:
Google Cloud Console
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से, ज़रूरी डेटाबेस चुनें.
नेविगेशन मेन्यू में, टाइम-टू-लिव पर क्लिक करें.
नीति बनाएं पर क्लिक करें.
कलेक्शन ग्रुप का नाम और टाइमस्टैंप फ़ील्ड का नाम डालें.
बनाएं पर क्लिक करें.
कंसोल, टाइम-टू-लिव पेज पर वापस आ जाता है. अगर कार्रवाई सफलतापूर्वक शुरू होती है, तो पेज, TTL नीतियों की टेबल में एक एंट्री जोड़ता है. कार्रवाई पूरी न होने पर, पेज पर गड़बड़ी का मैसेज दिखता है.
gcloud
TTL नीति को कॉन्फ़िगर करने के लिए, firestore fields ttls
update
कमांड का इस्तेमाल करें. --async फ़्लैग जोड़ें, ताकि
gcloud सीएलआई को कार्रवाई पूरी होने का इंतज़ार न करना पड़े.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --enable-ttl
TTL नीति को चालू करने में लगने वाला समय
TTL नीति को चालू करने में कम से कम 10 मिनट या उससे ज़्यादा समय लग सकता है. कोई कार्रवाई शुरू करने के बाद, टर्मिनल बंद करने पर वह कार्रवाई रद्द नहीं होती.
TTL नीतियां देखना
TTL नीतियां और उनकी स्थितियां देखने के लिए, यह तरीका अपनाएं:
Google Cloud Console
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से, ज़रूरी डेटाबेस चुनें.
नेविगेशन मेन्यू में, टाइम-टू-लिव पर क्लिक करें.
कंसोल, आपके डेटाबेस के लिए TTL नीतियां दिखाता है. साथ ही, हर नीति की स्थिति भी दिखाता है.
gcloud
TTL नीति को कॉन्फ़िगर करने के लिए,
firestore fields ttls list
कमांड का इस्तेमाल करें. यहां दी गई कमांड, सभी TTL
नीतियां दिखाती है.
gcloud firestore fields ttls list
किसी खास कलेक्शन ग्रुप के तहत TTL नीतियां देखने के लिए, यह कमांड इस्तेमाल करें:
gcloud firestore fields ttls list --collection-group=collection_group_name
कार्रवाई की जानकारी देखना
gcloud सीएलआई का इस्तेमाल करके, CREATING स्थिति में मौजूद TTL नीति के बारे में ज़्यादा जानकारी देखी जा सकती है.
हाल ही में पूरी हुई और इस समय चल रही सभी कार्रवाइयां देखने के लिए, operations list कमांड का इस्तेमाल करें:
gcloud firestore operations list
जवाब में, कार्रवाई की प्रोग्रेस का अनुमान शामिल होता है.
TTL नीति बंद करना
TTL नीति बंद करने के लिए, यह तरीका अपनाएं:
Google Cloud Console
Google Cloud Console में, डेटाबेस पेज पर जाएं.
डेटाबेस की सूची में से, ज़रूरी डेटाबेस चुनें.
नेविगेशन मेन्यू में, टाइम-टू-लिव पर क्लिक करें.
TTL नीति की टेबल में, TTL नीति वाली लाइन ढूंढें. इस टेबल की लाइन में, मिटाएं (ट्रैश कैन) बटन पर क्लिक करें.
मिटाएं पर क्लिक करके पुष्टि करें.
कंसोल, टाइम-टू-लिव पेज पर वापस आ जाता है. कार्रवाई पूरी होने पर, Cloud Firestore TTL नीति को टेबल से हटा देता है.
gcloud
1. TTL नीति को कॉन्फ़िगर करने के लिए,
firestore fields ttls update
कमांड का इस्तेमाल करें. --async फ़्लैग जोड़ें, ताकि
gcloud सीएलआई को कार्रवाई पूरी होने का इंतज़ार न करना पड़े.
gcloud firestore fields ttls update ttl_field --collection-group=collection_group_name --disable-ttl
TTL की मदद से डेटा मिटाने की प्रोसेस पर नज़र रखना
Cloud Monitoring का इस्तेमाल करके, TTL की मदद से डेटा मिटाने की प्रोसेस से जुड़ी मेट्रिक देखी जा सकती हैं. Cloud Firestore TTL के लिए ये मेट्रिक उपलब्ध कराता है:
| मेट्रिक का टाइप | मेट्रिक का नाम | मेट्रिक की जानकारी |
|---|---|---|
| firestore.googleapis.com/document/ttl_deletion_count | टाइम-टू-लिव की मदद से डेटा मिटाने की संख्या |
TTL नीतियों की मदद से मिटाए गए दस्तावेज़ों की कुल संख्या. |
| firestore.googleapis.com/document/ttl_expiration_to_deletion_delays | टाइम-टू-लिव की मदद से डेटा मिटाने में लगने वाला समय |
TTL नीति के तहत, किसी दस्तावेज़ के एक्सपायर होने और उसके मिटने के बीच लगने वाला समय. |
Cloud Firestore मेट्रिक के साथ डैशबोर्ड सेट अप करने के लिए, पसंद के मुताबिक डैशबोर्ड मैनेज करना और डैशबोर्ड में विजेट जोड़ना देखें.