Firestore Pipelines की कार्रवाइयों की खास जानकारी

Firestore पाइपलाइन ऑपरेशन, Firestore Enterprise Edition की मुख्य सुविधा है. इसे नए क्वेरी इंजन पर बनाया गया है, ताकि क्वेरी की रेंज को काफ़ी हद तक बढ़ाया जा सके. Firestore पाइपलाइन ऑपरेशन में, क्वेरी के लिए फ़्लेक्सिबल सिंटैक्स और इंडेक्सिंग का अलग तरीका इस्तेमाल किया जाता है. इसमें इंडेक्स बनाना ज़रूरी नहीं होता और इंडेक्स अपने-आप नहीं बनते. इससे ऐप्लिकेशन के लिए, डेटा वापस पाने से जुड़ी बेहतर कार्रवाइयां की जा सकती हैं.

Firestore पाइपलाइन ऑपरेशन की सुविधाएं

Firestore Enterprise एडिशन और नई पाइपलाइन कार्रवाइयों में, नए और बेहतर क्वेरी इंजन का इस्तेमाल किया जाता है. इससे Firestore Standard एडिशन की कई मौजूदा सीमाएं हट जाती हैं. Firestore Pipeline operations में, क्वेरी से जुड़ी 120 से ज़्यादा नई सुविधाएं मिलती हैं. Firestore Pipeline की कार्रवाइयों में ये सुविधाएं होती हैं:

स्टेज के हिसाब से कंपोज़ेबल सिंटैक्स

पाइपलाइन क्वेरी, क्रम से चरणों की एक सीरीज़ तय करके बनाई जाती हैं. इन चरणों को क्रम से लागू किया जाता है. इससे जटिल कार्रवाइयां की जा सकती हैं. जैसे, एग्रीगेशन के नतीजे के आधार पर फ़िल्टर करना. ऐसा पहले नहीं किया जा सकता था.

यहां एक पाइपलाइन क्वेरी का उदाहरण दिया गया है. इससे पिछले महीने देखे गए यूनीक प्रॉडक्ट आईडी की संख्या का पता चलता है:

guard let cutoffDate = Calendar.current.date(byAdding: .month, value: -1, to: Date()) else {
  return
}
let snapshot = try await db.pipeline()
  .collection("productViews")
  .where(Field("viewedAt").greaterThan(cutoffDate.timeIntervalSince1970))
  .aggregate([Field("productId").countDistinct().as("uniqueProductViews")])
  .execute()

ज़्यादा सुविधाएं

पाइपलाइन क्वेरी में कई नई सुविधाएं जोड़ी गई हैं. इनमें ये शामिल हैं:

  • एग्रीगेशन: इसमें नए एग्रीगेशन फ़ंक्शन (जैसे कि sum(...), min(...), और count_distinct(...)) के साथ-साथ, ग्रुपिंग के लिए इस्तेमाल किए जाने वाले फ़ील्ड के लिए भी सहायता मिलती है.
  • कॉम्प्लेक्स फ़िल्टरिंग: इसमें 120 से ज़्यादा नए फ़ंक्शन इस्तेमाल किए जा सकते हैं. इनकी मदद से, where(...) स्टेटमेंट को अपनी ज़रूरत के हिसाब से कॉम्प्लेक्स बनाया जा सकता है. इनमें regex_match(...), add(...), और str_contains(...) शामिल हैं. इन सभी के लिए, हार्ड इंडेक्स की ज़रूरत नहीं होती.
  • आंशिक तौर पर पढ़ना / अनुमान लगाना: select(...), remove_fields(...), और दस्तावेज़ में बदलाव करने के कई अन्य चरणों का इस्तेमाल करके, दस्तावेज़ों के डाइनैमिक सबसेट वापस पाएं.

रीयलटाइम और ऑफ़लाइन सहायता

रीयलटाइम और ऑफ़लाइन मोड का इस्तेमाल करने के लिए, डेवलपर Firestore Enterprise वर्शन पर Firestore Core के ऑपरेशन का इस्तेमाल कर सकते हैं.

क्लाइंट और टूलिंग इंटिग्रेशन

Enterprise वर्शन में, पाइपलाइन क्वेरी के साथ इंटरैक्ट करने और उन्हें मैनेज करने के लिए खास सुविधाएं शामिल हैं:

  • क्वेरी के बारे में जानकारी और उसकी प्रोफ़ाइलिंग: क्वेरी के बारे में जानकारी देने वाले नतीजों का इस्तेमाल करके, यह समझा जा सकता है कि कोई क्वेरी कितनी रीड या राइट यूनिट का इस्तेमाल करती है. साथ ही, उसके एक्ज़ीक्यूशन का विश्लेषण किया जा सकता है.
  • क्वेरी की अहम जानकारी: Enterprise वर्शन में क्वेरी की अहम जानकारी की सुविधा उपलब्ध है. इससे आपको यह तय करने में मदद मिलती है कि परफ़ॉर्मेंस और लागत को बेहतर बनाने के लिए, इंडेक्स कहां बनाए जा सकते हैं. इसके लिए, क्वेरी की परफ़ॉर्मेंस की विशेषताओं की जानकारी दी जाती है.
  • नए इंडेक्स टाइप: Enterprise वर्शन के लिए, खास इंडेक्स बनाए जा सकते हैं. इनमें स्पार्स इंडेक्स भी शामिल हैं. यह Enterprise डेटाबेस के लिए, वेक्टर सर्च इंडेक्स बनाने और उनमें बदलाव करने की सुविधा भी देता है.

Firestore Standard और Firestore Enterprise के बीच अंतर

कोर और पाइपलाइन के बीच ऑपरेशनल अंतर, इंडेक्सिंग को मैनेज करने के तरीके में होता है. इससे परफ़ॉर्मेंस और लागत पर सीधा असर पड़ता है.

Firestore Standard - कोर ऑपरेशन Firestore Enterprise - कोर और पाइपलाइन ऑपरेशन
इंडेक्स करने की ज़रूरी शर्तें क्वेरी के लिए इंडेक्स ज़रूरी होते हैं.

अलग-अलग फ़ील्ड के लिए इंडेक्स अपने-आप बन जाते हैं. हालांकि, ज़्यादा जटिल क्वेरी के लिए कंपोज़िट इंडेक्स या कलेक्शन ग्रुप इंडेक्स का इस्तेमाल किया जाता है. इन्हें मैन्युअल तरीके से कॉन्फ़िगर करना होता है.

क्वेरी के लिए इंडेक्स ज़रूरी नहीं होते. इसलिए, इन्हें इस्तेमाल करना ज़रूरी नहीं है.

ज़रूरत के हिसाब से इंडेक्स तय किए जाते हैं. Enterprise वर्शन में, इंडेक्स के ज़्यादा टाइप इस्तेमाल किए जा सकते हैं. जैसे, नॉन-स्पार्स/स्पार्स और यूनीक इंडेक्स.

परफ़ॉर्मेंस का जोखिम इंडेक्स की गई क्वेरी: परफ़ॉर्मेंस और लागत, आपके नतीजों के सेट के साइज़ के हिसाब से बढ़ती है.

अनइंडेक्स की गई क्वेरी: परफ़ॉर्मेंस और लागत, आपके डेटासेट के साइज़ के हिसाब से बढ़ती है.

इंडेक्स की गई क्वेरी: परफ़ॉर्मेंस और लागत, आपके नतीजों के सेट के साइज़ के हिसाब से बढ़ती है.

हमारा सुझाव है कि इंडेक्स बनाने के लिए, क्वेरी की व्याख्या करने और क्वेरी की अहम जानकारी देने वाले टूल का इस्तेमाल करें. इससे आपकी क्वेरी की परफ़ॉर्मेंस बेहतर होगी और लागत कम होगी.

स्टोरेज की लागत पर असर ऑटोमैटिक इंडेक्स और कंपोज़िट इंडेक्स की वजह से, स्टोरेज का इस्तेमाल बढ़ जाता है. आपको स्टोरेज की लागत में बचत होती है, क्योंकि हर फ़ील्ड के लिए इंडेक्स अपने-आप नहीं बनते.
लागत आधार हर दस्तावेज़ के लिए, पढ़ने, लिखने, और मिटाने की कार्रवाई के हिसाब से शुल्क लिया जाता है. हर रीड यूनिट (4 केबी के बैच) और राइट यूनिट (1 केबी के बैच) के हिसाब से शुल्क लिया जाता है. इंडेक्स एंट्री लिखने पर, राइट यूनिट खर्च होती हैं.

उदाहरणों की मदद से, नई कीमत के बारे में जानें.

सुरक्षा के नियम सुरक्षा के नियम, पढ़ने/लिखने की अनुमतियों की पुष्टि करके कलेक्शन को सुरक्षित रखते हैं. सुरक्षा के नियम, पढ़ने/लिखने की अनुमतियों की पुष्टि करके कलेक्शन को सुरक्षित रखते हैं. डेटा मॉडल गाइड में, पाइपलाइन क्वेरी के लिए डेटा को मॉडल करने का तरीका जानें.