इस पेज पर, कुछ सबसे सामान्य स्थितियों में बिलिंग यूनिट का हिसाब लगाने के उदाहरण दिए गए हैं. ध्यान दें कि हर क्वेरी के लिए प्रोसेस किए गए डेटा में अंतर हो सकता है. यह अंतर क्वेरी प्लान, डेटा के फ़ॉर्मैट, और उपलब्ध इंडेक्स जैसे फ़ैक्टर पर आधारित होता है.
हमारा सुझाव है कि आप Query Explain सुविधा का इस्तेमाल करें. इससे आपको अपनी क्वेरी की लागत और परफ़ॉर्मेंस को बेहतर तरीके से समझने में मदद मिलेगी.
डेटा पढ़ने की कार्रवाइयां
ज़्यादातर रीड ऑपरेशन में, किसी खास दस्तावेज़ को पॉइंट रीड करना या किसी आइडेंटिफ़ायर के आधार पर डेटा की रेंज को स्कैन करना शामिल होता है. रीड ऑपरेशन में रीड यूनिट खर्च होती हैं. ये उदाहरण देखें.
पूरे टेक्स्ट की खोज
पूरे टेक्स्ट की सर्च क्वेरी के लिए शुल्क, टेक्स्ट इंडेक्स पर खोज करने की लागत और दस्तावेज़ों को वापस पाने की लागत के बीच के अंतर के हिसाब से तय किया जाता है. टेक्स्ट इंडेक्स पर खोज करने की लागत, क्वेरी की जटिलता और नतीजे ढूंढने के लिए इंडेक्स में स्कैन किए गए डेटा की मात्रा से तय होती है. इस लागत पर कई चीज़ों का असर पड़ता है. जैसे, खोज के लिए इस्तेमाल हुए शब्दों की संख्या और उनकी प्रकृति (जैसे, शब्द, वाक्यांश), क्या काम के होने के हिसाब से स्कोरिंग लागू की गई है, और इंडेक्स की गई उन एंट्री की संख्या जिनकी जांच की जानी है. काम के दस्तावेज़ों को वापस पाने की लागत, खोज पूरी होने के बाद फ़ेच किए गए दस्तावेज़ों की संख्या और साइज़ पर आधारित होती है.
नीचे दी गई टेबल में, पौधों की नर्सरी के ई-कॉमर्स प्रॉडक्ट कैटलॉग के लिए, पूरे टेक्स्ट की खोज वाली सर्च क्वेरी को लागू करने से जुड़े शुल्क की जानकारी दी गई है. इस उदाहरण में, किसी कलेक्शन में 2,00,000 प्रॉडक्ट लिस्टिंग का कलेक्शन माना गया है. इसमें हर प्रॉडक्ट लिस्टिंग दस्तावेज़ का साइज़ 2 केआईबी है. साथ ही, टेक्स्ट से खोजने के लिए Search इंडेक्स का साइज़ करीब 100 एमआईबी है.
| क्वेरी | कोड का उदाहरण | हर क्वेरी के लिए इस्तेमाल की गई रीड यूनिट की अनुमानित संख्या | अनुमानित लागत (क्षेत्र: us-central1, डॉलर में) |
|---|---|---|---|
| "ड्राई वॉटर" स्टैक फ़्लैट ट्रे वाले किसी दुर्लभ प्रॉडक्ट को खोजें. इससे तीन दस्तावेज़ मिलेंगे. | |
कुल 10 यूनिट पढ़ी गईं पूरे टेक्स्ट की खोज के लिए सात यूनिट और खोज के नतीजों में मिले दस्तावेज़ों के लिए तीन अतिरिक्त यूनिट के आधार पर. |
हर 10 लाख क्वेरी के लिए 0.50 डॉलर |
| घर के अंदर उगाए जाने वाले सभी सिट्रस पेड़ों को खोजा गया. इससे 36 दस्तावेज़ मिले. | |
कुल 42 यूनिट पढ़ी गईं यह पूरे टेक्स्ट की खोज के लिए छह यूनिट और खोज के नतीजों में मिले दस्तावेज़ों के लिए 36 अतिरिक्त यूनिट पर आधारित है. |
हर 10 लाख क्वेरी के लिए 2.10 डॉलर |
| बालकनी में रखे जाने वाले गमले खोजें, जिनके लिए कई प्रॉडक्ट मैच उपलब्ध हैं. नतीजों को उनकी अहमियत के हिसाब से क्रम में लगाओ और खोज के टॉप 50 नतीजे दिखाओ. | |
कुल 75 यूनिट पढ़ी गईं पूरे टेक्स्ट की खोज के लिए 25 यूनिट और खोज के नतीजों में मिले दस्तावेज़ों के लिए 50 अतिरिक्त यूनिट के आधार पर. |
हर 10 लाख क्वेरी के लिए 3.75 डॉलर |
इन उदाहरणों से पता चलता है कि अलग-अलग क्वेरी पैटर्न से लागत पर क्या असर पड़ता है:
- "ड्राई वॉटर" क्वेरी में एक वाक्यांश (
"dry water") और अन्य शब्द शामिल हैं. फ़्रेज़ सर्च ज़्यादा जटिल होती हैं, क्योंकि क्वेरी इंजन को टोकन की प्रॉक्सिमिटी और क्रम की जांच करनी होती है. इस वजह से, खोज के फ़ेज़ के लिए सात रीड यूनिट का इस्तेमाल होता है. बहुत कम दस्तावेज़ मैच होने की वजह से, दस्तावेज़ वापस पाने की लागत कम होती है. - "indoor" "citrus" "tree" क्वेरी, तीन अलग-अलग शब्दों को खोजती है. यह वाक्यांश खोज की तुलना में थोड़ा कम जटिल है. हालांकि, इसमें भी कई टोकन देखने की ज़रूरत होती है. "ड्राई वॉटर" वाले उदाहरण की तुलना में, इसमें Search इंडेक्स को स्कैन करने की लागत थोड़ी कम है. इसमें छह रीड यूनिट हैं, लेकिन 36 दस्तावेज़ दिखाए जाते हैं. इससे कुल लागत बढ़ जाती है.
- balcony planter query में, पूरे टेक्स्ट की खोज की लागत सबसे ज़्यादा है. यह 25 यूनिट है. ऐसा इसलिए होता है, क्योंकि यह अनुरोध करता है कि नतीजों को काम के होने के हिसाब से क्रम में लगाया जाए (
.sort({score: {$meta: "textScore"}})). ये नतीजे, उन शब्दों के हिसाब से क्रम में लगाए जाते हैं जो कई दस्तावेज़ों से मेल खाते हैं. सबसे काम के 50 नतीजे तय करने के लिए, क्वेरी इंजन को "बालकनी" या "प्लांटर" के लिए, संभावित तौर पर मैच होने वाले सभी नतीजे ढूंढने होंगे. साथ ही, हर नतीजे के लिए, काम के होने का स्कोर कैलकुलेट करना होगा और फिर उन्हें क्रम से लगाना होगा. इंडेक्स में मौजूद बड़ी संख्या में उम्मीदवारों को स्कोर करने और उन्हें क्रम से लगाने की इस प्रोसेस में, कंप्यूटेशनल पावर का काफ़ी ज़्यादा इस्तेमाल होता है. भले ही, आखिर में सिर्फ़ 50 दस्तावेज़ ही दिखाए जाते हैं. खोज के लिए इस्तेमाल किए गए शब्दों के ब्रॉड होने और काम के होने के स्कोर की वजह से, खोज का चरण ज़्यादा महंगा हो जाता है.
जियोस्पेशल क्वेरी
जियोस्पेशल क्वेरी के लिए शुल्क, क्वेरी की जटिलता, इस्तेमाल की गई खास शर्तों, और क्रम से लगाने के तरीके के आधार पर तय किए जाते हैं. साथ ही, संबंधित जियोस्पेशल इंडेक्स में मौजूद पूरे डेटा को स्कैन करने के लिए ज़रूरी संसाधनों के आधार पर भी शुल्क तय किए जाते हैं.
नीचे दी गई टेबल में, मैप ऐप्लिकेशन के लिए जियोस्पेशल क्वेरी को लागू करने से जुड़े शुल्क के बारे में बताया गया है. इस उदाहरण में, दिलचस्प जगहों को दिखाने वाले 10,00,000 दस्तावेज़ों का कलेक्शन माना गया है. इसमें हर दिलचस्प जगह का दस्तावेज़ 1 केआईबी का है और उससे जुड़े जियोस्पेशल इंडेक्स का साइज़ करीब 60 एमआईबी है.
| क्वेरी | कोड का उदाहरण | हर क्वेरी के लिए इस्तेमाल की गई रीड यूनिट की अनुमानित संख्या | अनुमानित लागत (क्षेत्र: us-central1, डॉलर में) |
|---|---|---|---|
| 10 कि॰मी॰ के दायरे में मौजूद सभी दिलचस्प जगहों को ढूंढें. साथ ही, 10 नतीजे दिखाएं. | |
कुल 16 यूनिट पढ़ी गईं. जियोस्पेशल क्वेरी के लिए छह रीड यूनिट और दिखाए गए दस्तावेज़ों के लिए 10 अतिरिक्त यूनिट के आधार पर. |
हर 10 लाख क्वेरी के लिए 0.80 डॉलर |
| दिलचस्पी वाली ऐसी सभी जगहें ढूंढें जो ज़्यादा से ज़्यादा 100 कि॰मी॰ की दूरी पर हों. साथ ही, 1,000 नतीजों में से दिलचस्पी वाली सबसे नज़दीकी 10 जगहें दिखाएं | |
कुल 19 यूनिट पढ़ी गईं. जियोस्पेशल क्वेरी के लिए नौ रीड यूनिट और वापस किए गए दस्तावेज़ों के लिए 10 अतिरिक्त यूनिट के आधार पर. |
हर 10 लाख क्वेरी के लिए 0.95 डॉलर |
इन उदाहरणों से पता चलता है कि अलग-अलग क्वेरी पैटर्न से लागत पर क्या असर पड़ता है:
- 10 कि॰मी॰ के दायरे वाली क्वेरी: यह क्वेरी, छोटे भौगोलिक इलाके को स्कैन करती है. इस 10 किमी के दायरे में सिर्फ़ 10 मैच मिलते हैं. इसलिए, क्वेरी इंजन को इन पॉइंट की पहचान करने और उन्हें दूरी के हिसाब से क्रम में लगाने के लिए कम काम करना पड़ता है.
$nearभी ऐसा ही करता है. इस वजह से, इंडेक्स स्कैन की लागत कम होकर छह रीड यूनिट हो जाती है. - 100 किमी के दायरे वाली क्वेरी: इस क्वेरी में काफ़ी बड़ा इलाका शामिल होता है. क्वेरी को 100 कि॰मी॰ के दायरे में, संभावित तौर पर मैच होने वाले 1,000 नतीजे मिलते हैं. सबसे नज़दीकी 10 पॉइंट के अनुरोध को पूरा करने के लिए, क्वेरी इंजन को इंडेक्स में मौजूद कैंडिडेट के बड़े सेट (ज़्यादा से ज़्यादा 1,000 पॉइंट) के बीच की दूरी का हिसाब लगाना होगा और उन्हें क्रम से लगाना होगा. इस अतिरिक्त कंप्यूटेशनल काम में, कई और पॉइंट को छांटना और उन्हें रैंक करना शामिल है. इस वजह से, 10 किमी वाली क्वेरी की तुलना में, जियोस्पेशल क्वेरी की लागत 9 रीड यूनिट ज़्यादा है. हालांकि, इसमें भी सिर्फ़ 10 दस्तावेज़ दिखाए जाते हैं.
पॉइंट रीड
पॉइंट रीड के लिए बिलिंग का उदाहरण:
- 1 केआईबी के किसी एक दस्तावेज़ को पॉइंट रीड करना. इस्तेमाल की जाने वाली यूनिट: 1 रीड यूनिट
- 4 केआईबी के किसी एक दस्तावेज़ को पॉइंट रीड करना. इस्तेमाल की जाने वाली यूनिट: 1 रीड यूनिट
- 1 MiB के किसी एक दस्तावेज़ को पॉइंट रीड करना. इस्तेमाल की जाने वाली कंप्यूट यूनिट: 256 रीड यूनिट
- हर दस्तावेज़ 1 केआईबी का है और 100 दस्तावेज़ों को पढ़ा गया है. इस्तेमाल की गई यूनिट: 100 रीड यूनिट
स्कैन किया जा रहा है
यहां दिए गए उदाहरणों में, दस्तावेज़ों को स्कैन करने या एंट्री को इंडेक्स करने से जुड़ी स्थितियां शामिल हैं.
दस्तावेज़ स्कैन करना
- ऐसी क्वेरी जो 100 दस्तावेज़ों को स्कैन करती है. हर दस्तावेज़ का साइज़ 1 केआईबी है. इस्तेमाल की जाने वाली यूनिट: 25 रीड यूनिट
इंडेक्स स्कैन करना
बाइट के हिसाब से, स्कैन करने की लागत एक जैसी होती है. इससे कोई फ़र्क़ नहीं पड़ता कि दस्तावेज़ को स्कैन किया जा रहा है या इंडेक्स को. हालांकि, इंडेक्स एंट्री का साइज़ अक्सर छोटा होता है. इस वजह से, ये अक्सर डेटा को स्कैन करने का ज़्यादा किफ़ायती तरीका उपलब्ध करा सकते हैं.
- ऐसी क्वेरी जो 100 इंडेक्स एंट्री को स्कैन करती है. हर एंट्री 1 केआईबी की है. इस्तेमाल की जाने वाली यूनिट: 25 रीड यूनिट.
- ऐसी क्वेरी जो 100 इंडेक्स एंट्री को स्कैन करती है. हर एंट्री 128 बाइट की होती है. इस्तेमाल की जाने वाली यूनिट: चार रीड यूनिट.
दस्तावेज़ या इंडेक्स एंट्री का कम से कम साइज़
कुछ मामलों में, किसी क्वेरी का जवाब देने के लिए, दस्तावेज़ या इंडेक्स एंट्री का कॉन्टेंट पढ़ना ज़रूरी नहीं होता. इसमें गिनती करने वाली सामान्य क्वेरी शामिल हैं. जैसे, किसी कलेक्शन में मौजूद दस्तावेज़ों की कुल संख्या की गिनती करना. ऐसे मामलों में, स्कैन किए गए हर आइटम के लिए कम से कम 32 बाइट का शुल्क लागू होता है.
- किसी कलेक्शन में मौजूद दस्तावेज़ों की संख्या की गिनती करना. क्वेरी, कलेक्शन में मौजूद 1,000 आइटम स्कैन करती है. इस्तेमाल की गई यूनिट: 8 रीड यूनिट.
स्कैनिंग और पॉइंट रीड का कॉम्बिनेशन
किसी कार्रवाई को पूरा करने के लिए, कई क्वेरी में स्कैनिंग और पॉइंट रीड, दोनों का इस्तेमाल किया जाता है.
- ऐसी क्वेरी जो 128 इंडेक्स एंट्री को स्कैन करती है. हर एंट्री 256 बाइट की होती है. साथ ही, 128 दस्तावेज़ों को पॉइंट रीड करती है. हर दस्तावेज़ 4 केआईबी का होता है. इस्तेमाल की गई इकाइयां: 136 रीड यूनिट, जिनमें ये शामिल हैं:
- पॉइंट रीड के लिए 128 रीड यूनिट
- इंडेक्स स्कैन के लिए आठ रीड यूनिट
क्वेरी के बारे में जानकारी
Query Explain की मदद से, यह समझा जा सकता है कि डेटाबेस आपकी क्वेरी को कैसे लागू करता है. यहां दी गई जानकारी की मदद से, अपनी क्वेरी को ऑप्टिमाइज़ किया जा सकता है.
Query Explain का इस्तेमाल करने पर, ये शुल्क लागू होते हैं:
- Query Explain, जो क्वेरी को एक्ज़ीक्यूट करता है: क्वेरी की लागत लागू होती है.
- सिर्फ़ प्लान का इस्तेमाल करके क्वेरी के बारे में जानकारी देने का विकल्प. इस्तेमाल: एक रीड यूनिट (किसी क्वेरी की कम से कम लागत)
डेटा में बदलाव करने की कार्रवाइयां
डेटाबेस में डेटा डालने, उसमें बदलाव करने, और उसे मिटाने के लिए, शुल्क लिया जाता है. यह शुल्क, ऑपरेशन के दौरान बनाए गए, बदले गए या मिटाए गए दस्तावेज़ों और इंडेक्स के साइज़ के आधार पर तय होता है. डेटा सेव करने की कार्रवाइयों में, डेटा सेव करने की यूनिट खर्च होती हैं. राइट यूनिट का हिसाब, 1 KiB के हिस्सों में लगाया जाता है.
डेटा लिखने के आसान ऑपरेशन, जैसे कि दस्तावेज़ आईडी के हिसाब से अपडेट करने पर, सिर्फ़ डेटा लिखने की लागत आती है. डेटा लिखने की ऐसी कार्रवाइयां जिनके लिए क्वेरी करने की ज़रूरत होती है, उनमें क्वेरी से जुड़ा डेटा पढ़ने का शुल्क भी अलग से लिया जाएगा.
ये उदाहरण देखें.
बनाता है
- बिना किसी इंडेक्स के 10 केआईबी का नया दस्तावेज़ बनाएं. इस्तेमाल की गई इकाइयां: 10 राइट यूनिट
- कलेक्शन पर 256 बाइट की एक इंडेक्स एंट्री के साथ 1 केआईबी का दस्तावेज़ बनाएं. इस्तेमाल की जाने वाली यूनिट: 2 राइट यूनिट
अपडेट
- दस्तावेज़ आईडी की मदद से 10 केबी का दस्तावेज़ ढूंढें और कलेक्शन में बिना किसी इंडेक्स के अपडेट करें. इस्तेमाल की गई इकाइयां: 10 राइट यूनिट
- दस्तावेज़ आईडी की मदद से 1 केआईबी का दस्तावेज़ ढूंढना और 256 बाइट की एक इंडेक्स एंट्री वाले एक फ़ील्ड को अपडेट करना. इस्तेमाल की जाने वाली यूनिट: तीन राइट यूनिट. ध्यान दें: इस स्थिति में इंडेक्स एंट्री को अपडेट करने पर, दो राइट यूनिट खर्च होती हैं – एक इंडेक्स एंट्री को मिटाने के लिए और दूसरी उसे फिर से बनाने के लिए.
- दस्तावेज़ आईडी के हिसाब से 1 केआईबी का दस्तावेज़ ढूंढें और कुछ भी अपडेट न करें (कोई बदलाव नहीं). इस्तेमाल की गई यूनिट: 1 राइट यूनिट (कम से कम राइट कॉस्ट)
- किसी कलेक्शन में मौजूद 1 केबी के सभी दस्तावेज़ों के लिए क्वेरी करना, जिससे 1,000 दस्तावेज़ स्कैन होते हैं. साथ ही, कलेक्शन में बिना इंडेक्स वाला 256 बाइट का नया फ़ील्ड डालना: 1,000 रीड यूनिट और 1,000 राइट यूनिट.
हटाए
- 1 केआईबी का दस्तावेज़ मिटाना, जिसमें कलेक्शन पर एक इंडेक्स है. इस्तेमाल की जाने वाली यूनिट: दो राइट यूनिट
- 1 केआईबी का एक दस्तावेज़ मिटाना, जिसके कलेक्शन में कोई इंडेक्स नहीं है. इस्तेमाल की जाने वाली यूनिट: 1 राइट यूनिट
इंडेक्स बिल्ड
इंडेक्स बिल्ड के लिए, बिल्ड ऑपरेशन के दौरान बनाई गई या बदली गई इंडेक्स एंट्री के लिए शुल्क लिया जाता है. इंडेक्स की डेफ़िनिशन को जोड़ने या हटाने पर, ये शुल्क लगते हैं. इंडेक्स एंट्री के लिए, डेटा लिखने की तरह ही बिलिंग की जाती है. इसमें हर 1 केआईबी के लिए, डेटा लिखने की एक यूनिट खर्च होती है.
- 500 दस्तावेज़ों वाले कलेक्शन के लिए एक नया इंडेक्स बनाएं. इसमें हर इंडेक्स एंट्री का साइज़ 1 केआईबी है. इसमें 500 राइट यूनिट इस्तेमाल होती हैं.
- 500 दस्तावेज़ों वाले कलेक्शन के लिए, किसी मौजूदा इंडेक्स को मिटाना. मिटाई गई हर इंडेक्स एंट्री का साइज़ 1 केआईबी है. इसमें 500 राइट यूनिट इस्तेमाल होती हैं.