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