এই পৃষ্ঠায় সবচেয়ে প্রচলিত কিছু পরিস্থিতিতে বিলিং ইউনিট কীভাবে গণনা করা হয় তার উদাহরণ দেওয়া হয়েছে। উল্লেখ্য যে, কোয়েরি প্ল্যান, ডেটার গঠন এবং উপলব্ধ ইনডেক্সের মতো বিভিন্ন বিষয়ের উপর ভিত্তি করে প্রতিটি কোয়েরির প্রক্রিয়াকৃত ডেটা ভিন্ন হতে পারে।
আপনার নির্দিষ্ট কোয়েরিগুলোর খরচ এবং পারফরম্যান্স আরও ভালোভাবে বোঝার জন্য আমরা কোয়েরি এক্সপ্লেইন ফিচারটি ব্যবহার করার পরামর্শ দিই।
রিড অপারেশন
অধিকাংশ রিড অপারেশনের মধ্যে হয় কোনো নির্দিষ্ট ডকুমেন্ট থেকে পয়েন্ট রিড করা, অথবা কোনো আইডেন্টিফায়ারের উপর ভিত্তি করে ডেটার একটি পরিসর স্ক্যান করা অন্তর্ভুক্ত থাকে। রিড অপারেশনে রিড ইউনিট খরচ হয়। নিম্নলিখিত উদাহরণগুলো দেখুন।
সম্পূর্ণ পাঠ্য অনুসন্ধান
পূর্ণ-পাঠ্য অনুসন্ধান কোয়েরির জন্য চার্জকে একটি টেক্সট ইনডেক্সে অনুসন্ধান করার খরচ এবং ডকুমেন্টগুলো পুনরুদ্ধার করার খরচের মধ্যে ভাগ করা হয়। একটি টেক্সট ইনডেক্সে অনুসন্ধান করার খরচ কোয়েরির জটিলতা এবং ফলাফল খুঁজে বের করার জন্য ইনডেক্সে স্ক্যান করা ডেটার পরিমাণের উপর নির্ভর করে। এই খরচকে প্রভাবিত করে এমন বিষয়গুলোর মধ্যে রয়েছে সার্চ টার্মের সংখ্যা ও প্রকৃতি (যেমন টার্ম, ফ্রেজ), প্রাসঙ্গিকতা স্কোরিং প্রয়োগ করা হয়েছে কিনা এবং কতগুলো ইনডেক্স এন্ট্রি পরীক্ষা করতে হবে। প্রাসঙ্গিক ডকুমেন্ট পুনরুদ্ধারের খরচ অনুসন্ধান পর্ব শেষ হওয়ার পর আনা ডকুমেন্টের সংখ্যা এবং আকারের উপর ভিত্তি করে নির্ধারিত হয়।
নিম্নলিখিত সারণীতে একটি চারাগাছের নার্সারির ই-কমার্স পণ্য ক্যাটালগের জন্য পূর্ণ-পাঠ্য অনুসন্ধান (full-text search) কোয়েরি চালানোর সাথে সম্পর্কিত চার্জগুলি বর্ণনা করা হয়েছে। এই উদাহরণে ধরে নেওয়া হয়েছে যে একটি সংগ্রহে ২,০০,০০০ পণ্যের তালিকা রয়েছে, যেখানে প্রতিটি পণ্যের তালিকা ডকুমেন্টের আকার ২ কিলোবাইট (KiB) এবং সংশ্লিষ্ট টেক্সট সার্চ ইনডেক্সের আকার প্রায় ১০০ মেগাবাইট (MiB)।
| প্রশ্ন | কোডের উদাহরণ | প্রতি কোয়েরিতে ব্যবহৃত আনুমানিক রিড ইউনিট | আনুমানিক খরচ (অঞ্চল: us-central1, মার্কিন ডলারে) |
|---|---|---|---|
| একটি বিরল 'ড্রাই ওয়াটার' স্ট্যাক ফ্ল্যাট ট্রে পণ্যের অনুসন্ধানের ফলে ৩টি নথি পাওয়া গেছে। | | মোট ১০টি রিড ইউনিট পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ৭টি ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ৩টি ইউনিটের ভিত্তিতে। | প্রতি মিলিয়ন কোয়েরিতে ০.৫০ ডলার |
| ঘরের ভেতরে রাখা সমস্ত লেবু জাতীয় গাছ খোঁজার ফলে ৩৬টি নথি পাওয়া গেছে। | | মোট ৪২টি রিড ইউনিট পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ৬টি ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ৩৬টি ইউনিটের উপর ভিত্তি করে। | প্রতি মিলিয়ন কোয়েরিতে ২.১০ ডলার |
| ব্যালকনির জন্য এমন প্ল্যান্টার খুঁজুন যেখানে অনেকগুলো পণ্যের মিল পাওয়া যায়। ফলাফলগুলো প্রাসঙ্গিকতা অনুসারে সাজান এবং অনুসন্ধানের সেরা ৫০টি ফলাফলের মধ্যে সীমাবদ্ধ রাখুন। | | মোট ৭৫টি রিড ইউনিট পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ২৫টি ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ৫০টি ইউনিটের ভিত্তিতে। | প্রতি মিলিয়ন অনুসন্ধানে ৩.৭৫ ডলার |
এই উদাহরণগুলো দেখায় কিভাবে বিভিন্ন কোয়েরি প্যাটার্ন খরচের উপর প্রভাব ফেলে:
- ‘dry water’ কোয়েরিটিতে একটি ফ্রেজ (
"dry water") এবং অতিরিক্ত টার্ম অন্তর্ভুক্ত থাকে। ফ্রেজ সার্চ আরও জটিল, কারণ কোয়েরি ইঞ্জিনকে টোকেনের নৈকট্য এবং ক্রম পরীক্ষা করতে হয়, যা সার্চ পর্বের জন্য ৭টি রিড ইউনিটের কারণ হয়। যেহেতু খুব কম সংখ্যক ডকুমেন্ট মেলে, তাই ডকুমেন্ট পুনরুদ্ধারের খরচ কম হয়। - 'indoor' 'citrus' 'tree' কোয়েরিটি তিনটি পৃথক টার্ম অনুসন্ধান করে। একটি ফ্রেজ সার্চের তুলনায় প্রতিটি টার্মের জন্য এটি কিছুটা কম জটিল হলেও, এতে একাধিক টোকেন খোঁজার প্রয়োজন হয়। 'dry water' উদাহরণটির চেয়ে এর সার্চ ইনডেক্স স্ক্যান খরচ কিছুটা কম (৬ রিড ইউনিট), কিন্তু ৩৬টি ডকুমেন্ট ফেরত আসে, যা মোট খরচ বাড়িয়ে দেয়।
- ‘ব্যালকনি প্ল্যান্টার’ কোয়েরিটির ফুল-টেক্সট সার্চ খরচ উল্লেখযোগ্য ব্যবধানে সর্বোচ্চ, ২৫ ইউনিট। এর প্রধান কারণ হলো, এটি এমন টার্মগুলোর জন্য প্রাসঙ্গিকতা অনুসারে ফলাফল সাজানোর (
.sort({score: {$meta: "textScore"}})) অনুরোধ করে, যেগুলো অনেক ডকুমেন্টের সাথে মেলে। সবচেয়ে প্রাসঙ্গিক শীর্ষ ৫০টি ফলাফল নির্ধারণ করতে, কোয়েরি ইঞ্জিনকে অবশ্যই 'ব্যালকনি' বা 'প্ল্যান্টার'-এর জন্য সমস্ত সম্ভাব্য মিল খুঁজে বের করতে হবে, প্রতিটির জন্য একটি প্রাসঙ্গিকতা স্কোর গণনা করতে হবে এবং তারপরে সেগুলোকে সাজাতে হবে। ইনডেক্সের মধ্যে থাকা বিপুল সংখ্যক সম্ভাব্য টার্মের উপর এই স্কোরিং এবং সাজানোর প্রক্রিয়াটি কম্পিউটেশনালি ইনটেনসিভ, যদিও শেষ পর্যন্ত মাত্র ৫০টি ডকুমেন্ট পাওয়া যায়। টার্মগুলোর ব্যাপকতা এবং প্রাসঙ্গিকতা স্কোরিংয়ের অতিরিক্ত খরচ সার্চ পর্যায়টিকে আরও ব্যয়বহুল করে তোলে।
ভূ-স্থানিক কোয়েরি
ভূ-স্থানিক অনুসন্ধানের চার্জ নির্ভর করে অনুসন্ধানের জটিলতা, ব্যবহৃত নির্দিষ্ট শর্ত ও বিন্যাস এবং প্রাসঙ্গিক ভূ-স্থানিক সূচকের সমস্ত ডেটা স্ক্যান করার জন্য প্রয়োজনীয় সংস্থানের উপর।
নিম্নলিখিত সারণীতে একটি ম্যাপস অ্যাপ্লিকেশনের জন্য জিওস্পেশিয়াল কোয়েরি সম্পাদনের সাথে সম্পর্কিত চার্জগুলি বর্ণনা করা হয়েছে। এই উদাহরণে পয়েন্টস অফ ইন্টারেস্টের প্রতিনিধিত্বকারী ১০,০০,০০০ ডকুমেন্টের একটি সংগ্রহ ধরে নেওয়া হয়েছে, যেখানে প্রতিটি পয়েন্টস অফ ইন্টারেস্ট ডকুমেন্টের আকার ১ কিলোবাইট এবং সংশ্লিষ্ট জিওস্পেশিয়াল ইনডেক্সের আকার প্রায় ৬০ মেগাবাইট।
| প্রশ্ন | কোডের উদাহরণ | প্রতি কোয়েরিতে ব্যবহৃত আনুমানিক রিড ইউনিট | আনুমানিক খরচ (অঞ্চল: us-central1, মার্কিন ডলারে) |
|---|---|---|---|
| সর্বোচ্চ ১০ কিলোমিটারের মধ্যে অবস্থিত সমস্ত দর্শনীয় স্থান খুঁজুন, যা ১০টি ফলাফল দেবে। | | মোট ১৬টি রিড ইউনিট। ভূ-স্থানিক অনুসন্ধানের জন্য ৬টি রিড ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ১০টি ইউনিটের উপর ভিত্তি করে। | প্রতি মিলিয়ন কোয়েরিতে $০.৮০ |
| সর্বোচ্চ ১০০ কিলোমিটার দূরত্বের মধ্যে সমস্ত দর্শনীয় স্থান খুঁজুন এবং ১,০০০টি মিলের মধ্যে থেকে সবচেয়ে কাছের ১০টি দর্শনীয় স্থান ফেরত দিন। | | মোট ১৯টি রিড ইউনিট। ভূ-স্থানিক অনুসন্ধানের জন্য ৯টি রিড ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ১০টি ইউনিটের উপর ভিত্তি করে। | প্রতি মিলিয়ন কোয়েরিতে ০.৯৫ ডলার |
এই উদাহরণগুলো দেখায় কিভাবে বিভিন্ন কোয়েরি প্যাটার্ন খরচের উপর প্রভাব ফেলে:
- ১০ কিমি ব্যাসার্ধের কোয়েরি : এই কোয়েরিটি একটি ছোট ভৌগোলিক এলাকা স্ক্যান করে। যেহেতু এটি এই ১০ কিমি ব্যাসার্ধের মধ্যে মাত্র ১০টি ম্যাচ খুঁজে পায়, তাই কোয়েরি ইঞ্জিনকে এই পয়েন্টগুলোকে দূরত্ব অনুসারে শনাক্ত ও সাজানোর জন্য কম কাজ করতে হয় (যেমনটি
$nearপরোক্ষভাবে করে থাকে)। এর ফলে ইনডেক্স স্ক্যানের খরচ কমে ৬ রিড ইউনিটে দাঁড়ায়। - ১০০ কিমি ব্যাসার্ধের কোয়েরি : এই কোয়েরিটি অনেক বড় একটি এলাকা জুড়ে কাজ করে। কোয়েরিটি ১০০ কিমি ব্যাসার্ধের মধ্যে ১,০০০টি সম্ভাব্য ম্যাচ খুঁজে বের করে। সবচেয়ে কাছের ১০টি পয়েন্টের অনুরোধ পূরণ করার জন্য, কোয়েরি ইঞ্জিনকে দূরত্ব গণনা করতে হয় এবং ইনডেক্সের মধ্যে থাকা আরও অনেক বেশি সংখ্যক ক্যান্ডিডেটকে (১,০০০টি পর্যন্ত পয়েন্ট) সাজাতে হয়। আরও অনেক বেশি পয়েন্ট বাছাই এবং র্যাঙ্ক করার এই অতিরিক্ত গণনার কাজের কারণেই, ১০ কিমি কোয়েরির তুলনায় এই জিওস্পেশিয়াল কোয়েরির খরচ ৯ রিড ইউনিটে বেশি হয়, যদিও এটিও মাত্র ১০টি ডকুমেন্ট ফেরত দেয়।
পয়েন্টটি পড়ে
পয়েন্টের জন্য বিলিং-এর উদাহরণটি নিম্নরূপ:
- একটি ১ কিলোবাইট ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ১ রিড ইউনিট।
- একটি ৪ কিলোবাইট ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ১ রিড ইউনিট।
- একটি ১ MiB ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ২৫৬ রিড ইউনিট।
- প্রতিটি ১ কিলোবাইট আকারের ১০০টি ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ১০০ রিড ইউনিট।
স্ক্যানিং
নিম্নলিখিত উদাহরণগুলিতে এমন পরিস্থিতি অন্তর্ভুক্ত রয়েছে যা নথি বা সূচীভুক্ত এন্ট্রি স্ক্যান করে।
ডকুমেন্ট স্ক্যান করা
- কোয়েরিটি প্রতিটি ১ কিলোবাইট আকারের ১০০টি ডকুমেন্ট স্ক্যান করে। ব্যবহৃত হয়: ২৫ রিড ইউনিট।
স্ক্যানিং সূচক
ডকুমেন্ট বা ইনডেক্স, যা-ই স্ক্যান করা হোক না কেন, বাইটের হিসাবে স্ক্যানিং খরচ একই থাকে। তবে, ইনডেক্সের এন্ট্রিগুলো প্রায়শই আকারে ছোট হয়। ফলে, ডেটা স্ক্যান করার জন্য এগুলো প্রায়শই আরও সাশ্রয়ী একটি উপায় হতে পারে।
- কোয়েরিটি ১০০টি ইনডেক্স এন্ট্রি স্ক্যান করে, যার প্রতিটির সাইজ ১ কিলোবাইট। ব্যবহৃত হয়: ২৫ রিড ইউনিট।
- কোয়েরিটি ১০০টি ইনডেক্স এন্ট্রি স্ক্যান করে, যার প্রতিটি ১২৮ বাইটের। ব্যবহৃত হয়: ৪ রিড ইউনিট।
নথি বা সূচী এন্ট্রির ন্যূনতম আকার
কিছু পরিস্থিতিতে, একটি কোয়েরি সম্পন্ন করার জন্য কোনো ডকুমেন্ট বা ইনডেক্স এন্ট্রির বিষয়বস্তু পড়ার প্রয়োজন নাও হতে পারে। এর মধ্যে রয়েছে সাধারণ গণনা কোয়েরি, যেমন কোনো কালেকশনে থাকা মোট ডকুমেন্টের সংখ্যা গণনা করা। এইসব ক্ষেত্রে, স্ক্যান করা প্রতিটি আইটেমের জন্য ন্যূনতম ৩২ বাইট খরচ প্রযোজ্য হয়।
- একটি কালেকশনে থাকা ডকুমেন্টের সংখ্যা গণনা করুন। কোয়েরিটি কালেকশনটির ১০০০টি আইটেম স্ক্যান করে। ব্যবহৃত হয়: ৮ রিড ইউনিট।
স্ক্যানিং এবং পয়েন্ট রিডের সংমিশ্রণ
অনেক কোয়েরি কোনো একটি অপারেশন সম্পন্ন করার জন্য স্ক্যানিং এবং পয়েন্ট রিডের সংমিশ্রণ ব্যবহার করে।
- এই কোয়েরিটি প্রতিটি ২৫৬ বাইটের ১২৮টি ইনডেক্স এন্ট্রি স্ক্যান করে এবং প্রতিটি ৪ কিলোবাইটের ১২৮টি ডকুমেন্ট পয়েন্ট রিড করে। এর জন্য ব্যবহৃত হয়: ১৩৬টি রিড ইউনিট, যা গঠিত:
- পয়েন্ট রিডের জন্য ১২৮ রিড ইউনিট
- ইনডেক্স স্ক্যানের জন্য ৮টি রিড ইউনিট
প্রশ্ন ব্যাখ্যা করুন
কোয়েরি এক্সপ্লেইন আপনাকে বুঝতে সাহায্য করে যে ডাটাবেস কীভাবে আপনার কোয়েরিগুলো সম্পাদন করে। এখানে প্রদত্ত বিবরণ আপনাকে আপনার কোয়েরিগুলো অপ্টিমাইজ করতে সাহায্য করতে পারে।
Query Explain ব্যবহার করার ক্ষেত্রে নিম্নলিখিত খরচগুলো প্রযোজ্য:
- কোয়েরি ব্যাখ্যা করুন কোনটি কোয়েরিটি সম্পাদন করে: কোয়েরি কস্ট প্রযোজ্য।
- শুধুমাত্র প্ল্যান অপশন ব্যবহার করে কোয়েরি এক্সপ্লেইন। খরচ: ১ রিড ইউনিট (একটি কোয়েরির সর্বনিম্ন খরচ)।
লেখার ক্রিয়াকলাপ
রাইট অপারেশন (তৈরি, আপডেট এবং ডিলিট)-এর চার্জ, অপারেশন চলাকালীন তৈরি, পরিবর্তন বা ডিলিট করা ডকুমেন্ট এবং ইনডেক্সের আকারের উপর ভিত্তি করে ধার্য করা হয়। রাইট অপারেশনে রাইট ইউনিট ব্যবহৃত হয়। রাইট ইউনিট ১ কিলোবাইট (KiB) ট্রাঞ্চে গণনা করা হয়।
ডকুমেন্ট আইডি দ্বারা আপডেটের মতো সাধারণ রাইট অপারেশনের ক্ষেত্রে শুধুমাত্র রাইটের খরচই প্রযোজ্য হয়। যে রাইট অপারেশনগুলো সম্পন্ন করার জন্য কোয়েরি করার প্রয়োজন হয়, সেগুলোর ক্ষেত্রে অতিরিক্তভাবে কোয়েরি-সম্পর্কিত রিড খরচও যুক্ত হয়।
নিম্নলিখিত উদাহরণগুলো দেখুন।
তৈরি করে
- কোনো ইনডেক্স ছাড়া একটি নতুন ১০ কিলোবাইট ডকুমেন্ট তৈরি করুন। ব্যবহৃত হবে: ১০ রাইট ইউনিট।
- কালেকশনটিতে ২৫৬ বাইটের ১টি ইনডেক্স এন্ট্রি সহ একটি ১ কিলোবাইট ডকুমেন্ট তৈরি করুন। ব্যবহৃত উপাদান: ২ রাইট ইউনিট
আপডেট
- ডকুমেন্ট আইডি দ্বারা একটি ১০ কিলোবাইট (KiB) ডকুমেন্ট খুঁজুন এবং কালেকশনে কোনো ইনডেক্স ছাড়াই তা আপডেট করুন। ব্যবহৃত উপাদান: ১০ রাইট ইউনিট।
- ডকুমেন্ট আইডি দ্বারা একটি ১ কিলোবাইট (KiB) ডকুমেন্ট খুঁজুন এবং ২৫৬ বাইটের ১টি ইনডেক্স এন্ট্রি দিয়ে ১টি ফিল্ড আপডেট করুন। ব্যবহৃত হয়: ৩ রাইট ইউনিট। দ্রষ্টব্য: এই ক্ষেত্রে একটি ইনডেক্স এন্ট্রি আপডেট করতে ২টি রাইট ইউনিট ব্যবহৃত হয় – একটি ডিলিট করার জন্য এবং অন্যটি ইনডেক্স এন্ট্রিটি পুনরায় তৈরি করার জন্য।
- ডকুমেন্ট আইডি দ্বারা একটি ১ কিলোবাইট ডকুমেন্ট খুঁজুন এবং কোনো কিছু আপডেট করবেন না (কোনো পরিবর্তন করবেন না)। ব্যবহৃত হয়: ১ রাইট ইউনিট (সর্বনিম্ন রাইট খরচ)।
- একটি কালেকশনের সমস্ত ১ কিলোবাইট (KiB) ডকুমেন্ট কোয়েরি করুন, যা ১,০০০টি ডকুমেন্ট স্ক্যান করে, এবং কালেকশনটিতে কোনো ইনডেক্স ছাড়াই একটি নতুন ২৫৬ বাইটের ফিল্ড ইনসার্ট করুন: ১০০০ রিড ইউনিট এবং ১০০০ রাইট ইউনিট।
মুছে ফেলে
- ১ কিলোবাইট আকারের একটি ডকুমেন্ট মুছে ফেলুন, যেটির কালেকশনটিতে ১টি ইনডেক্স রয়েছে। ব্যবহৃত হবে: ২ রাইট ইউনিট।
- ১ কিলোবাইট আকারের একটি ডকুমেন্ট মুছে ফেলুন, যেটির কালেকশনে কোনো ইনডেক্স নেই। ব্যবহৃত হবে: ১ রাইট ইউনিট।
সূচক তৈরি করে
ইনডেক্স বিল্ড অপারেশন চলাকালীন তৈরি বা পরিবর্তিত ইনডেক্স এন্ট্রিগুলোর জন্য চার্জ ধার্য করা হয়। যখনই কোনো ইনডেক্স ডেফিনিশন যোগ বা অপসারণ করা হয়, তখনই এই খরচগুলো প্রযোজ্য হয়। ইনডেক্স এন্ট্রিগুলোর বিল রাইটের মতোই করা হয়, যেখানে প্রতি ১ কিলোবাইটের জন্য ১ রাইট ইউনিট চার্জ করা হয়।
- ৫০০টি ডকুমেন্ট সম্বলিত একটি কালেকশনের জন্য একটি নতুন ইনডেক্স তৈরি করুন, প্রতিটি ইনডেক্স এন্ট্রির আকার ১ কিলোবাইট। এর জন্য ৫০০ রাইট ইউনিট ব্যবহৃত হয়।
- ৫০০টি ডকুমেন্ট সম্বলিত একটি কালেকশনের বিদ্যমান ইনডেক্স মুছে ফেলুন, মুছে ফেলা প্রতিটি ইনডেক্স এন্ট্রির আকার ১ কিলোবাইট। এর জন্য ৫০০ রাইট ইউনিট ব্যবহৃত হয়।
এই পৃষ্ঠায় সবচেয়ে প্রচলিত কিছু পরিস্থিতিতে বিলিং ইউনিট কীভাবে গণনা করা হয় তার উদাহরণ দেওয়া হয়েছে। উল্লেখ্য যে, কোয়েরি প্ল্যান, ডেটার গঠন এবং উপলব্ধ ইনডেক্সের মতো বিভিন্ন বিষয়ের উপর ভিত্তি করে প্রতিটি কোয়েরির প্রক্রিয়াকৃত ডেটা ভিন্ন হতে পারে।
আপনার নির্দিষ্ট কোয়েরিগুলোর খরচ এবং পারফরম্যান্স আরও ভালোভাবে বোঝার জন্য আমরা কোয়েরি এক্সপ্লেইন ফিচারটি ব্যবহার করার পরামর্শ দিই।
রিড অপারেশন
অধিকাংশ রিড অপারেশনের মধ্যে হয় কোনো নির্দিষ্ট ডকুমেন্ট থেকে পয়েন্ট রিড করা, অথবা কোনো আইডেন্টিফায়ারের উপর ভিত্তি করে ডেটার একটি পরিসর স্ক্যান করা অন্তর্ভুক্ত থাকে। রিড অপারেশনে রিড ইউনিট খরচ হয়। নিম্নলিখিত উদাহরণগুলো দেখুন।
সম্পূর্ণ পাঠ্য অনুসন্ধান
পূর্ণ-পাঠ্য অনুসন্ধান কোয়েরির জন্য চার্জকে একটি টেক্সট ইনডেক্সে অনুসন্ধান করার খরচ এবং ডকুমেন্টগুলো পুনরুদ্ধার করার খরচের মধ্যে ভাগ করা হয়। একটি টেক্সট ইনডেক্সে অনুসন্ধান করার খরচ কোয়েরির জটিলতা এবং ফলাফল খুঁজে বের করার জন্য ইনডেক্সে স্ক্যান করা ডেটার পরিমাণের উপর নির্ভর করে। এই খরচকে প্রভাবিত করে এমন বিষয়গুলোর মধ্যে রয়েছে সার্চ টার্মের সংখ্যা ও প্রকৃতি (যেমন টার্ম, ফ্রেজ), প্রাসঙ্গিকতা স্কোরিং প্রয়োগ করা হয়েছে কিনা এবং কতগুলো ইনডেক্স এন্ট্রি পরীক্ষা করতে হবে। প্রাসঙ্গিক ডকুমেন্ট পুনরুদ্ধারের খরচ অনুসন্ধান পর্ব শেষ হওয়ার পর আনা ডকুমেন্টের সংখ্যা এবং আকারের উপর ভিত্তি করে নির্ধারিত হয়।
নিম্নলিখিত সারণীতে একটি চারাগাছের নার্সারির ই-কমার্স পণ্য ক্যাটালগের জন্য পূর্ণ-পাঠ্য অনুসন্ধান (full-text search) কোয়েরি চালানোর সাথে সম্পর্কিত চার্জগুলি বর্ণনা করা হয়েছে। এই উদাহরণে ধরে নেওয়া হয়েছে যে একটি সংগ্রহে ২,০০,০০০ পণ্যের তালিকা রয়েছে, যেখানে প্রতিটি পণ্যের তালিকা ডকুমেন্টের আকার ২ কিলোবাইট (KiB) এবং সংশ্লিষ্ট টেক্সট সার্চ ইনডেক্সের আকার প্রায় ১০০ মেগাবাইট (MiB)।
| প্রশ্ন | কোডের উদাহরণ | প্রতি কোয়েরিতে ব্যবহৃত আনুমানিক রিড ইউনিট | আনুমানিক খরচ (অঞ্চল: us-central1, মার্কিন ডলারে) |
|---|---|---|---|
| একটি বিরল 'ড্রাই ওয়াটার' স্ট্যাক ফ্ল্যাট ট্রে পণ্যের অনুসন্ধানের ফলে ৩টি নথি পাওয়া গেছে। | | মোট ১০টি রিড ইউনিট পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ৭টি ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ৩টি ইউনিটের ভিত্তিতে। | প্রতি মিলিয়ন কোয়েরিতে ০.৫০ ডলার |
| ঘরের ভেতরে রাখা সমস্ত লেবু জাতীয় গাছ খোঁজার ফলে ৩৬টি নথি পাওয়া গেছে। | | মোট ৪২টি রিড ইউনিট পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ৬টি ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ৩৬টি ইউনিটের উপর ভিত্তি করে। | প্রতি মিলিয়ন কোয়েরিতে ২.১০ ডলার |
| ব্যালকনির জন্য এমন প্ল্যান্টার খুঁজুন যেখানে অনেকগুলো পণ্যের মিল পাওয়া যায়। ফলাফলগুলো প্রাসঙ্গিকতা অনুসারে সাজান এবং অনুসন্ধানের সেরা ৫০টি ফলাফলের মধ্যে সীমাবদ্ধ রাখুন। | | মোট ৭৫টি রিড ইউনিট পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ২৫টি ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ৫০টি ইউনিটের ভিত্তিতে। | প্রতি মিলিয়ন অনুসন্ধানে ৩.৭৫ ডলার |
এই উদাহরণগুলো দেখায় কিভাবে বিভিন্ন কোয়েরি প্যাটার্ন খরচের উপর প্রভাব ফেলে:
- ‘dry water’ কোয়েরিটিতে একটি ফ্রেজ (
"dry water") এবং অতিরিক্ত টার্ম অন্তর্ভুক্ত থাকে। ফ্রেজ সার্চ আরও জটিল, কারণ কোয়েরি ইঞ্জিনকে টোকেনের নৈকট্য এবং ক্রম পরীক্ষা করতে হয়, যা সার্চ পর্বের জন্য ৭টি রিড ইউনিটের কারণ হয়। যেহেতু খুব কম সংখ্যক ডকুমেন্ট মেলে, তাই ডকুমেন্ট পুনরুদ্ধারের খরচ কম হয়। - 'indoor' 'citrus' 'tree' কোয়েরিটি তিনটি পৃথক টার্ম অনুসন্ধান করে। একটি ফ্রেজ সার্চের তুলনায় প্রতিটি টার্মের জন্য এটি কিছুটা কম জটিল হলেও, এতে একাধিক টোকেন খোঁজার প্রয়োজন হয়। 'dry water' উদাহরণটির চেয়ে এর সার্চ ইনডেক্স স্ক্যান খরচ কিছুটা কম (৬ রিড ইউনিট), কিন্তু ৩৬টি ডকুমেন্ট ফেরত আসে, যা মোট খরচ বাড়িয়ে দেয়।
- ‘ব্যালকনি প্ল্যান্টার’ কোয়েরিটির ফুল-টেক্সট সার্চ খরচ উল্লেখযোগ্য ব্যবধানে সর্বোচ্চ, ২৫ ইউনিট। এর প্রধান কারণ হলো, এটি এমন টার্মগুলোর জন্য প্রাসঙ্গিকতা অনুসারে ফলাফল সাজানোর (
.sort({score: {$meta: "textScore"}})) অনুরোধ করে, যেগুলো অনেক ডকুমেন্টের সাথে মেলে। সবচেয়ে প্রাসঙ্গিক শীর্ষ ৫০টি ফলাফল নির্ধারণ করতে, কোয়েরি ইঞ্জিনকে অবশ্যই 'ব্যালকনি' বা 'প্ল্যান্টার'-এর জন্য সমস্ত সম্ভাব্য মিল খুঁজে বের করতে হবে, প্রতিটির জন্য একটি প্রাসঙ্গিকতা স্কোর গণনা করতে হবে এবং তারপরে সেগুলোকে সাজাতে হবে। ইনডেক্সের মধ্যে থাকা বিপুল সংখ্যক সম্ভাব্য টার্মের উপর এই স্কোরিং এবং সাজানোর প্রক্রিয়াটি কম্পিউটেশনালি ইনটেনসিভ, যদিও শেষ পর্যন্ত মাত্র ৫০টি ডকুমেন্ট পাওয়া যায়। টার্মগুলোর ব্যাপকতা এবং প্রাসঙ্গিকতা স্কোরিংয়ের অতিরিক্ত খরচ সার্চ পর্যায়টিকে আরও ব্যয়বহুল করে তোলে।
ভূ-স্থানিক কোয়েরি
ভূ-স্থানিক অনুসন্ধানের চার্জ নির্ভর করে অনুসন্ধানের জটিলতা, ব্যবহৃত নির্দিষ্ট শর্ত ও বিন্যাস এবং প্রাসঙ্গিক ভূ-স্থানিক সূচকের সমস্ত ডেটা স্ক্যান করার জন্য প্রয়োজনীয় সংস্থানের উপর।
নিম্নলিখিত সারণীতে একটি ম্যাপস অ্যাপ্লিকেশনের জন্য জিওস্পেশিয়াল কোয়েরি সম্পাদনের সাথে সম্পর্কিত চার্জগুলি বর্ণনা করা হয়েছে। এই উদাহরণে পয়েন্টস অফ ইন্টারেস্টের প্রতিনিধিত্বকারী ১০,০০,০০০ ডকুমেন্টের একটি সংগ্রহ ধরে নেওয়া হয়েছে, যেখানে প্রতিটি পয়েন্টস অফ ইন্টারেস্ট ডকুমেন্টের আকার ১ কিলোবাইট এবং সংশ্লিষ্ট জিওস্পেশিয়াল ইনডেক্সের আকার প্রায় ৬০ মেগাবাইট।
| প্রশ্ন | কোডের উদাহরণ | প্রতি কোয়েরিতে ব্যবহৃত আনুমানিক রিড ইউনিট | আনুমানিক খরচ (অঞ্চল: us-central1, মার্কিন ডলারে) |
|---|---|---|---|
| সর্বোচ্চ ১০ কিলোমিটারের মধ্যে অবস্থিত সমস্ত দর্শনীয় স্থান খুঁজুন, যা ১০টি ফলাফল দেবে। | | মোট ১৬টি রিড ইউনিট। ভূ-স্থানিক অনুসন্ধানের জন্য ৬টি রিড ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ১০টি ইউনিটের উপর ভিত্তি করে। | প্রতি মিলিয়ন কোয়েরিতে $০.৮০ |
| সর্বোচ্চ ১০০ কিলোমিটার দূরত্বের মধ্যে সমস্ত দর্শনীয় স্থান খুঁজুন এবং ১,০০০টি মিলের মধ্যে থেকে সবচেয়ে কাছের ১০টি দর্শনীয় স্থান ফেরত দিন। | | মোট ১৯টি রিড ইউনিট। ভূ-স্থানিক অনুসন্ধানের জন্য ৯টি রিড ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ১০টি ইউনিটের উপর ভিত্তি করে। | প্রতি মিলিয়ন কোয়েরিতে ০.৯৫ ডলার |
এই উদাহরণগুলো দেখায় কিভাবে বিভিন্ন কোয়েরি প্যাটার্ন খরচের উপর প্রভাব ফেলে:
- ১০ কিমি ব্যাসার্ধের কোয়েরি : এই কোয়েরিটি একটি ছোট ভৌগোলিক এলাকা স্ক্যান করে। যেহেতু এটি এই ১০ কিমি ব্যাসার্ধের মধ্যে মাত্র ১০টি ম্যাচ খুঁজে পায়, তাই কোয়েরি ইঞ্জিনকে এই পয়েন্টগুলোকে দূরত্ব অনুসারে শনাক্ত ও সাজানোর জন্য কম কাজ করতে হয় (যেমনটি
$nearপরোক্ষভাবে করে থাকে)। এর ফলে ইনডেক্স স্ক্যানের খরচ কমে ৬ রিড ইউনিটে দাঁড়ায়। - ১০০ কিমি ব্যাসার্ধের কোয়েরি : এই কোয়েরিটি অনেক বড় একটি এলাকা জুড়ে কাজ করে। কোয়েরিটি ১০০ কিমি ব্যাসার্ধের মধ্যে ১,০০০টি সম্ভাব্য ম্যাচ খুঁজে বের করে। সবচেয়ে কাছের ১০টি পয়েন্টের অনুরোধ পূরণ করার জন্য, কোয়েরি ইঞ্জিনকে দূরত্ব গণনা করতে হয় এবং ইনডেক্সের মধ্যে থাকা আরও অনেক বেশি সংখ্যক ক্যান্ডিডেটকে (১,০০০টি পর্যন্ত পয়েন্ট) সাজাতে হয়। আরও অনেক বেশি পয়েন্ট বাছাই এবং র্যাঙ্ক করার এই অতিরিক্ত গণনার কাজের কারণেই, ১০ কিমি কোয়েরির তুলনায় এই জিওস্পেশিয়াল কোয়েরির খরচ ৯ রিড ইউনিটে বেশি হয়, যদিও এটিও মাত্র ১০টি ডকুমেন্ট ফেরত দেয়।
পয়েন্টটি পড়ে
পয়েন্টের জন্য বিলিং-এর উদাহরণটি নিম্নরূপ:
- একটি ১ কিলোবাইট ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ১ রিড ইউনিট।
- একটি ৪ কিলোবাইট ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ১ রিড ইউনিট।
- একটি ১ MiB ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ২৫৬ রিড ইউনিট।
- প্রতিটি ১ কিলোবাইট আকারের ১০০টি ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ১০০ রিড ইউনিট।
স্ক্যানিং
নিম্নলিখিত উদাহরণগুলিতে এমন পরিস্থিতি অন্তর্ভুক্ত রয়েছে যা নথি বা সূচীভুক্ত এন্ট্রি স্ক্যান করে।
ডকুমেন্ট স্ক্যান করা
- কোয়েরিটি প্রতিটি ১ কিলোবাইট আকারের ১০০টি ডকুমেন্ট স্ক্যান করে। ব্যবহৃত হয়: ২৫ রিড ইউনিট।
স্ক্যানিং সূচক
ডকুমেন্ট বা ইনডেক্স, যা-ই স্ক্যান করা হোক না কেন, বাইটের হিসাবে স্ক্যানিং খরচ একই থাকে। তবে, ইনডেক্সের এন্ট্রিগুলো প্রায়শই আকারে ছোট হয়। ফলে, ডেটা স্ক্যান করার জন্য এগুলো প্রায়শই আরও সাশ্রয়ী একটি উপায় হতে পারে।
- কোয়েরিটি ১০০টি ইনডেক্স এন্ট্রি স্ক্যান করে, যার প্রতিটির সাইজ ১ কিলোবাইট। ব্যবহৃত হয়: ২৫ রিড ইউনিট।
- কোয়েরিটি ১০০টি ইনডেক্স এন্ট্রি স্ক্যান করে, যার প্রতিটি ১২৮ বাইটের। ব্যবহৃত হয়: ৪ রিড ইউনিট।
নথি বা সূচী এন্ট্রির ন্যূনতম আকার
কিছু পরিস্থিতিতে, একটি কোয়েরি সম্পন্ন করার জন্য কোনো ডকুমেন্ট বা ইনডেক্স এন্ট্রির বিষয়বস্তু পড়ার প্রয়োজন নাও হতে পারে। এর মধ্যে রয়েছে সাধারণ গণনা কোয়েরি, যেমন কোনো কালেকশনে থাকা মোট ডকুমেন্টের সংখ্যা গণনা করা। এইসব ক্ষেত্রে, স্ক্যান করা প্রতিটি আইটেমের জন্য ন্যূনতম ৩২ বাইট খরচ প্রযোজ্য হয়।
- একটি কালেকশনে থাকা ডকুমেন্টের সংখ্যা গণনা করুন। কোয়েরিটি কালেকশনটির ১০০০টি আইটেম স্ক্যান করে। ব্যবহৃত হয়: ৮ রিড ইউনিট।
স্ক্যানিং এবং পয়েন্ট রিডের সংমিশ্রণ
অনেক কোয়েরি কোনো একটি অপারেশন সম্পন্ন করার জন্য স্ক্যানিং এবং পয়েন্ট রিডের সংমিশ্রণ ব্যবহার করে।
- এই কোয়েরিটি প্রতিটি ২৫৬ বাইটের ১২৮টি ইনডেক্স এন্ট্রি স্ক্যান করে এবং প্রতিটি ৪ কিলোবাইটের ১২৮টি ডকুমেন্ট পয়েন্ট রিড করে। এর জন্য ব্যবহৃত হয়: ১৩৬টি রিড ইউনিট, যা গঠিত:
- পয়েন্ট রিডের জন্য ১২৮ রিড ইউনিট
- ইনডেক্স স্ক্যানের জন্য ৮টি রিড ইউনিট
প্রশ্ন ব্যাখ্যা করুন
কোয়েরি এক্সপ্লেইন আপনাকে বুঝতে সাহায্য করে যে ডাটাবেস কীভাবে আপনার কোয়েরিগুলো সম্পাদন করে। এখানে প্রদত্ত বিবরণ আপনাকে আপনার কোয়েরিগুলো অপ্টিমাইজ করতে সাহায্য করতে পারে।
Query Explain ব্যবহার করার ক্ষেত্রে নিম্নলিখিত খরচগুলো প্রযোজ্য:
- কোয়েরি ব্যাখ্যা করুন কোনটি কোয়েরিটি সম্পাদন করে: কোয়েরি কস্ট প্রযোজ্য।
- শুধুমাত্র প্ল্যান অপশন ব্যবহার করে কোয়েরি এক্সপ্লেইন। খরচ: ১ রিড ইউনিট (একটি কোয়েরির সর্বনিম্ন খরচ)।
লেখার ক্রিয়াকলাপ
রাইট অপারেশন (তৈরি, আপডেট এবং ডিলিট)-এর চার্জ, অপারেশন চলাকালীন তৈরি, পরিবর্তন বা ডিলিট করা ডকুমেন্ট এবং ইনডেক্সের আকারের উপর ভিত্তি করে ধার্য করা হয়। রাইট অপারেশনে রাইট ইউনিট ব্যবহৃত হয়। রাইট ইউনিট ১ কিলোবাইট (KiB) ট্রাঞ্চে গণনা করা হয়।
ডকুমেন্ট আইডি দ্বারা আপডেটের মতো সাধারণ রাইট অপারেশনের ক্ষেত্রে শুধুমাত্র রাইটের খরচই প্রযোজ্য হয়। যে রাইট অপারেশনগুলো সম্পন্ন করার জন্য কোয়েরি করার প্রয়োজন হয়, সেগুলোর ক্ষেত্রে অতিরিক্তভাবে কোয়েরি-সম্পর্কিত রিড খরচও যুক্ত হয়।
নিম্নলিখিত উদাহরণগুলো দেখুন।
তৈরি করে
- কোনো ইনডেক্স ছাড়া একটি নতুন ১০ কিলোবাইট ডকুমেন্ট তৈরি করুন। ব্যবহৃত হবে: ১০ রাইট ইউনিট।
- কালেকশনটিতে ২৫৬ বাইটের ১টি ইনডেক্স এন্ট্রি সহ একটি ১ কিলোবাইট ডকুমেন্ট তৈরি করুন। ব্যবহৃত উপাদান: ২ রাইট ইউনিট
আপডেট
- ডকুমেন্ট আইডি দ্বারা একটি ১০ কিলোবাইট (KiB) ডকুমেন্ট খুঁজুন এবং কালেকশনে কোনো ইনডেক্স ছাড়াই তা আপডেট করুন। ব্যবহৃত উপাদান: ১০ রাইট ইউনিট।
- ডকুমেন্ট আইডি দ্বারা একটি ১ কিলোবাইট (KiB) ডকুমেন্ট খুঁজুন এবং ২৫৬ বাইটের ১টি ইনডেক্স এন্ট্রি দিয়ে ১টি ফিল্ড আপডেট করুন। ব্যবহৃত হয়: ৩ রাইট ইউনিট। দ্রষ্টব্য: এই ক্ষেত্রে একটি ইনডেক্স এন্ট্রি আপডেট করতে ২টি রাইট ইউনিট ব্যবহৃত হয় – একটি ডিলিট করার জন্য এবং অন্যটি ইনডেক্স এন্ট্রিটি পুনরায় তৈরি করার জন্য।
- ডকুমেন্ট আইডি দ্বারা একটি ১ কিলোবাইট ডকুমেন্ট খুঁজুন এবং কোনো কিছু আপডেট করবেন না (কোনো পরিবর্তন করবেন না)। ব্যবহৃত হয়: ১ রাইট ইউনিট (সর্বনিম্ন রাইট খরচ)।
- একটি কালেকশনের সমস্ত ১ কিলোবাইট (KiB) ডকুমেন্ট কোয়েরি করুন, যা ১,০০০টি ডকুমেন্ট স্ক্যান করে, এবং কালেকশনটিতে কোনো ইনডেক্স ছাড়াই একটি নতুন ২৫৬ বাইটের ফিল্ড ইনসার্ট করুন: ১০০০ রিড ইউনিট এবং ১০০০ রাইট ইউনিট।
মুছে ফেলে
- ১ কিলোবাইট আকারের একটি ডকুমেন্ট মুছে ফেলুন, যেটির কালেকশনটিতে ১টি ইনডেক্স রয়েছে। ব্যবহৃত হবে: ২ রাইট ইউনিট।
- ১ কিলোবাইট আকারের একটি ডকুমেন্ট মুছে ফেলুন, যেটির কালেকশনে কোনো ইনডেক্স নেই। ব্যবহৃত হবে: ১ রাইট ইউনিট।
সূচক তৈরি করে
ইনডেক্স বিল্ড অপারেশন চলাকালীন তৈরি বা পরিবর্তিত ইনডেক্স এন্ট্রিগুলোর জন্য চার্জ ধার্য করা হয়। যখনই কোনো ইনডেক্স ডেফিনিশন যোগ বা অপসারণ করা হয়, তখনই এই খরচগুলো প্রযোজ্য হয়। ইনডেক্স এন্ট্রিগুলোর বিল রাইটের মতোই করা হয়, যেখানে প্রতি ১ কিলোবাইটের জন্য ১ রাইট ইউনিট চার্জ করা হয়।
- ৫০০টি ডকুমেন্ট সম্বলিত একটি কালেকশনের জন্য একটি নতুন ইনডেক্স তৈরি করুন, প্রতিটি ইনডেক্স এন্ট্রির আকার ১ কিলোবাইট। এর জন্য ৫০০ রাইট ইউনিট ব্যবহৃত হয়।
- ৫০০টি ডকুমেন্ট সম্বলিত একটি কালেকশনের বিদ্যমান ইনডেক্স মুছে ফেলুন, মুছে ফেলা প্রতিটি ইনডেক্স এন্ট্রির আকার ১ কিলোবাইট। এর জন্য ৫০০ রাইট ইউনিট ব্যবহৃত হয়।
এই পৃষ্ঠায় সবচেয়ে প্রচলিত কিছু পরিস্থিতিতে বিলিং ইউনিট কীভাবে গণনা করা হয় তার উদাহরণ দেওয়া হয়েছে। উল্লেখ্য যে, কোয়েরি প্ল্যান, ডেটার গঠন এবং উপলব্ধ ইনডেক্সের মতো বিভিন্ন বিষয়ের উপর ভিত্তি করে প্রতিটি কোয়েরির প্রক্রিয়াকৃত ডেটা ভিন্ন হতে পারে।
আপনার নির্দিষ্ট কোয়েরিগুলোর খরচ এবং পারফরম্যান্স আরও ভালোভাবে বোঝার জন্য আমরা কোয়েরি এক্সপ্লেইন ফিচারটি ব্যবহার করার পরামর্শ দিই।
রিড অপারেশন
অধিকাংশ রিড অপারেশনের মধ্যে হয় কোনো নির্দিষ্ট ডকুমেন্ট থেকে পয়েন্ট রিড করা, অথবা কোনো আইডেন্টিফায়ারের উপর ভিত্তি করে ডেটার একটি পরিসর স্ক্যান করা অন্তর্ভুক্ত থাকে। রিড অপারেশনে রিড ইউনিট খরচ হয়। নিম্নলিখিত উদাহরণগুলো দেখুন।
সম্পূর্ণ পাঠ্য অনুসন্ধান
পূর্ণ-পাঠ্য অনুসন্ধান কোয়েরির জন্য চার্জকে একটি টেক্সট ইনডেক্সে অনুসন্ধান করার খরচ এবং ডকুমেন্টগুলো পুনরুদ্ধার করার খরচের মধ্যে ভাগ করা হয়। একটি টেক্সট ইনডেক্সে অনুসন্ধান করার খরচ কোয়েরির জটিলতা এবং ফলাফল খুঁজে বের করার জন্য ইনডেক্সে স্ক্যান করা ডেটার পরিমাণের উপর নির্ভর করে। এই খরচকে প্রভাবিত করে এমন বিষয়গুলোর মধ্যে রয়েছে সার্চ টার্মের সংখ্যা ও প্রকৃতি (যেমন টার্ম, ফ্রেজ), প্রাসঙ্গিকতা স্কোরিং প্রয়োগ করা হয়েছে কিনা এবং কতগুলো ইনডেক্স এন্ট্রি পরীক্ষা করতে হবে। প্রাসঙ্গিক ডকুমেন্ট পুনরুদ্ধারের খরচ অনুসন্ধান পর্ব শেষ হওয়ার পর আনা ডকুমেন্টের সংখ্যা এবং আকারের উপর ভিত্তি করে নির্ধারিত হয়।
নিম্নলিখিত সারণীতে একটি চারাগাছের নার্সারির ই-কমার্স পণ্য ক্যাটালগের জন্য পূর্ণ-পাঠ্য অনুসন্ধান (full-text search) কোয়েরি চালানোর সাথে সম্পর্কিত চার্জগুলি বর্ণনা করা হয়েছে। এই উদাহরণে ধরে নেওয়া হয়েছে যে একটি সংগ্রহে ২,০০,০০০ পণ্যের তালিকা রয়েছে, যেখানে প্রতিটি পণ্যের তালিকা ডকুমেন্টের আকার ২ কিলোবাইট (KiB) এবং সংশ্লিষ্ট টেক্সট সার্চ ইনডেক্সের আকার প্রায় ১০০ মেগাবাইট (MiB)।
| প্রশ্ন | কোডের উদাহরণ | প্রতি কোয়েরিতে ব্যবহৃত আনুমানিক রিড ইউনিট | আনুমানিক খরচ (অঞ্চল: us-central1, মার্কিন ডলারে) |
|---|---|---|---|
| একটি বিরল 'ড্রাই ওয়াটার' স্ট্যাক ফ্ল্যাট ট্রে পণ্যের অনুসন্ধানের ফলে ৩টি নথি পাওয়া গেছে। | | মোট ১০টি রিড ইউনিট পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ৭টি ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ৩টি ইউনিটের ভিত্তিতে। | প্রতি মিলিয়ন কোয়েরিতে ০.৫০ ডলার |
| ঘরের ভেতরে রাখা সমস্ত লেবু জাতীয় গাছ খোঁজার ফলে ৩৬টি নথি পাওয়া গেছে। | | মোট ৪২টি রিড ইউনিট পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ৬টি ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ৩৬টি ইউনিটের উপর ভিত্তি করে। | প্রতি মিলিয়ন কোয়েরিতে ২.১০ ডলার |
| ব্যালকনির জন্য এমন প্ল্যান্টার খুঁজুন যেখানে অনেকগুলো পণ্যের মিল পাওয়া যায়। ফলাফলগুলো প্রাসঙ্গিকতা অনুসারে সাজান এবং অনুসন্ধানের সেরা ৫০টি ফলাফলের মধ্যে সীমাবদ্ধ রাখুন। | | মোট ৭৫টি রিড ইউনিট পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ২৫টি ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ৫০টি ইউনিটের ভিত্তিতে। | প্রতি মিলিয়ন অনুসন্ধানে ৩.৭৫ ডলার |
এই উদাহরণগুলো দেখায় কিভাবে বিভিন্ন কোয়েরি প্যাটার্ন খরচের উপর প্রভাব ফেলে:
- ‘dry water’ কোয়েরিটিতে একটি ফ্রেজ (
"dry water") এবং অতিরিক্ত টার্ম অন্তর্ভুক্ত থাকে। ফ্রেজ সার্চ আরও জটিল, কারণ কোয়েরি ইঞ্জিনকে টোকেনের নৈকট্য এবং ক্রম পরীক্ষা করতে হয়, যা সার্চ পর্বের জন্য ৭টি রিড ইউনিটের কারণ হয়। যেহেতু খুব কম সংখ্যক ডকুমেন্ট মেলে, তাই ডকুমেন্ট পুনরুদ্ধারের খরচ কম হয়। - 'indoor' 'citrus' 'tree' কোয়েরিটি তিনটি পৃথক টার্ম অনুসন্ধান করে। একটি ফ্রেজ সার্চের তুলনায় প্রতিটি টার্মের জন্য এটি কিছুটা কম জটিল হলেও, এতে একাধিক টোকেন খোঁজার প্রয়োজন হয়। 'dry water' উদাহরণটির চেয়ে এর সার্চ ইনডেক্স স্ক্যান খরচ কিছুটা কম (৬ রিড ইউনিট), কিন্তু ৩৬টি ডকুমেন্ট ফেরত আসে, যা মোট খরচ বাড়িয়ে দেয়।
- ‘ব্যালকনি প্ল্যান্টার’ কোয়েরিটির ফুল-টেক্সট সার্চ খরচ উল্লেখযোগ্য ব্যবধানে সর্বোচ্চ, ২৫ ইউনিট। এর প্রধান কারণ হলো, এটি এমন টার্মগুলোর জন্য প্রাসঙ্গিকতা অনুসারে ফলাফল সাজানোর (
.sort({score: {$meta: "textScore"}})) অনুরোধ করে, যেগুলো অনেক ডকুমেন্টের সাথে মেলে। সবচেয়ে প্রাসঙ্গিক শীর্ষ ৫০টি ফলাফল নির্ধারণ করতে, কোয়েরি ইঞ্জিনকে অবশ্যই 'ব্যালকনি' বা 'প্ল্যান্টার'-এর জন্য সমস্ত সম্ভাব্য মিল খুঁজে বের করতে হবে, প্রতিটির জন্য একটি প্রাসঙ্গিকতা স্কোর গণনা করতে হবে এবং তারপরে সেগুলোকে সাজাতে হবে। ইনডেক্সের মধ্যে থাকা বিপুল সংখ্যক সম্ভাব্য টার্মের উপর এই স্কোরিং এবং সাজানোর প্রক্রিয়াটি কম্পিউটেশনালি ইনটেনসিভ, যদিও শেষ পর্যন্ত মাত্র ৫০টি ডকুমেন্ট পাওয়া যায়। টার্মগুলোর ব্যাপকতা এবং প্রাসঙ্গিকতা স্কোরিংয়ের অতিরিক্ত খরচ সার্চ পর্যায়টিকে আরও ব্যয়বহুল করে তোলে।
ভূ-স্থানিক কোয়েরি
ভূ-স্থানিক অনুসন্ধানের চার্জ নির্ভর করে অনুসন্ধানের জটিলতা, ব্যবহৃত নির্দিষ্ট শর্ত ও বিন্যাস এবং প্রাসঙ্গিক ভূ-স্থানিক সূচকের সমস্ত ডেটা স্ক্যান করার জন্য প্রয়োজনীয় সংস্থানের উপর।
নিম্নলিখিত সারণীতে একটি ম্যাপস অ্যাপ্লিকেশনের জন্য জিওস্পেশিয়াল কোয়েরি সম্পাদনের সাথে সম্পর্কিত চার্জগুলি বর্ণনা করা হয়েছে। এই উদাহরণে পয়েন্টস অফ ইন্টারেস্টের প্রতিনিধিত্বকারী ১০,০০,০০০ ডকুমেন্টের একটি সংগ্রহ ধরে নেওয়া হয়েছে, যেখানে প্রতিটি পয়েন্টস অফ ইন্টারেস্ট ডকুমেন্টের আকার ১ কিলোবাইট এবং সংশ্লিষ্ট জিওস্পেশিয়াল ইনডেক্সের আকার প্রায় ৬০ মেগাবাইট।
| প্রশ্ন | কোডের উদাহরণ | প্রতি কোয়েরিতে ব্যবহৃত আনুমানিক রিড ইউনিট | আনুমানিক খরচ (অঞ্চল: us-central1, মার্কিন ডলারে) |
|---|---|---|---|
| সর্বোচ্চ ১০ কিলোমিটারের মধ্যে অবস্থিত সমস্ত দর্শনীয় স্থান খুঁজুন, যা ১০টি ফলাফল দেবে। | | মোট ১৬টি রিড ইউনিট। ভূ-স্থানিক অনুসন্ধানের জন্য ৬টি রিড ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ১০টি ইউনিটের উপর ভিত্তি করে। | প্রতি মিলিয়ন কোয়েরিতে $০.৮০ |
| সর্বোচ্চ ১০০ কিলোমিটার দূরত্বের মধ্যে সমস্ত দর্শনীয় স্থান খুঁজুন এবং ১,০০০টি মিলের মধ্যে থেকে সবচেয়ে কাছের ১০টি দর্শনীয় স্থান ফেরত দিন। | | মোট ১৯টি রিড ইউনিট। ভূ-স্থানিক অনুসন্ধানের জন্য ৯টি রিড ইউনিট এবং ফেরত আসা নথিগুলোর জন্য অতিরিক্ত ১০টি ইউনিটের উপর ভিত্তি করে। | প্রতি মিলিয়ন কোয়েরিতে ০.৯৫ ডলার |
এই উদাহরণগুলো দেখায় কিভাবে বিভিন্ন কোয়েরি প্যাটার্ন খরচের উপর প্রভাব ফেলে:
- ১০ কিমি ব্যাসার্ধের কোয়েরি : এই কোয়েরিটি একটি ছোট ভৌগোলিক এলাকা স্ক্যান করে। যেহেতু এটি এই ১০ কিমি ব্যাসার্ধের মধ্যে মাত্র ১০টি ম্যাচ খুঁজে পায়, তাই কোয়েরি ইঞ্জিনকে এই পয়েন্টগুলোকে দূরত্ব অনুসারে শনাক্ত ও সাজানোর জন্য কম কাজ করতে হয় (যেমনটি
$nearপরোক্ষভাবে করে থাকে)। এর ফলে ইনডেক্স স্ক্যানের খরচ কমে ৬ রিড ইউনিটে দাঁড়ায়। - ১০০ কিমি ব্যাসার্ধের কোয়েরি : এই কোয়েরিটি অনেক বড় একটি এলাকা জুড়ে কাজ করে। কোয়েরিটি ১০০ কিমি ব্যাসার্ধের মধ্যে ১,০০০টি সম্ভাব্য ম্যাচ খুঁজে বের করে। সবচেয়ে কাছের ১০টি পয়েন্টের অনুরোধ পূরণ করার জন্য, কোয়েরি ইঞ্জিনকে দূরত্ব গণনা করতে হয় এবং ইনডেক্সের মধ্যে থাকা আরও অনেক বেশি সংখ্যক ক্যান্ডিডেটকে (১,০০০টি পর্যন্ত পয়েন্ট) সাজাতে হয়। আরও অনেক বেশি পয়েন্ট বাছাই এবং র্যাঙ্ক করার এই অতিরিক্ত গণনার কাজের কারণেই, ১০ কিমি কোয়েরির তুলনায় এই জিওস্পেশিয়াল কোয়েরির খরচ ৯ রিড ইউনিটে বেশি হয়, যদিও এটিও মাত্র ১০টি ডকুমেন্ট ফেরত দেয়।
পয়েন্টটি পড়ে
পয়েন্টের জন্য বিলিং-এর উদাহরণটি নিম্নরূপ:
- একটি ১ কিলোবাইট ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ১ রিড ইউনিট।
- একটি ৪ কিলোবাইট ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ১ রিড ইউনিট।
- একটি ১ MiB ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ২৫৬ রিড ইউনিট।
- প্রতিটি ১ কিলোবাইট আকারের ১০০টি ডকুমেন্টের পয়েন্ট রিড। ব্যবহৃত হয়: ১০০ রিড ইউনিট।
স্ক্যানিং
নিম্নলিখিত উদাহরণগুলিতে এমন পরিস্থিতি অন্তর্ভুক্ত রয়েছে যা নথি বা সূচীভুক্ত এন্ট্রি স্ক্যান করে।
ডকুমেন্ট স্ক্যান করা
- কোয়েরিটি প্রতিটি ১ কিলোবাইট আকারের ১০০টি ডকুমেন্ট স্ক্যান করে। ব্যবহৃত হয়: ২৫ রিড ইউনিট।
স্ক্যানিং সূচক
ডকুমেন্ট বা ইনডেক্স, যা-ই স্ক্যান করা হোক না কেন, বাইটের হিসাবে স্ক্যানিং খরচ একই থাকে। তবে, ইনডেক্সের এন্ট্রিগুলো প্রায়শই আকারে ছোট হয়। ফলে, ডেটা স্ক্যান করার জন্য এগুলো প্রায়শই আরও সাশ্রয়ী একটি উপায় হতে পারে।
- কোয়েরিটি ১০০টি ইনডেক্স এন্ট্রি স্ক্যান করে, যার প্রতিটির সাইজ ১ কিলোবাইট। ব্যবহৃত হয়: ২৫ রিড ইউনিট।
- কোয়েরিটি ১০০টি ইনডেক্স এন্ট্রি স্ক্যান করে, যার প্রতিটি ১২৮ বাইটের। ব্যবহৃত হয়: ৪ রিড ইউনিট।
নথি বা সূচী এন্ট্রির ন্যূনতম আকার
কিছু পরিস্থিতিতে, একটি কোয়েরি সম্পন্ন করার জন্য কোনো ডকুমেন্ট বা ইনডেক্স এন্ট্রির বিষয়বস্তু পড়ার প্রয়োজন নাও হতে পারে। এর মধ্যে রয়েছে সাধারণ গণনা কোয়েরি, যেমন কোনো কালেকশনে থাকা মোট ডকুমেন্টের সংখ্যা গণনা করা। এইসব ক্ষেত্রে, স্ক্যান করা প্রতিটি আইটেমের জন্য ন্যূনতম ৩২ বাইট খরচ প্রযোজ্য হয়।
- একটি কালেকশনে থাকা ডকুমেন্টের সংখ্যা গণনা করুন। কোয়েরিটি কালেকশনটির ১০০০টি আইটেম স্ক্যান করে। ব্যবহৃত হয়: ৮ রিড ইউনিট।
স্ক্যানিং এবং পয়েন্ট রিডের সংমিশ্রণ
অনেক কোয়েরি কোনো একটি অপারেশন সম্পন্ন করার জন্য স্ক্যানিং এবং পয়েন্ট রিডের সংমিশ্রণ ব্যবহার করে।
- এই কোয়েরিটি প্রতিটি ২৫৬ বাইটের ১২৮টি ইনডেক্স এন্ট্রি স্ক্যান করে এবং প্রতিটি ৪ কিলোবাইটের ১২৮টি ডকুমেন্ট পয়েন্ট রিড করে। এর জন্য ব্যবহৃত হয়: ১৩৬টি রিড ইউনিট, যা গঠিত:
- পয়েন্ট রিডের জন্য ১২৮ রিড ইউনিট
- ইনডেক্স স্ক্যানের জন্য ৮টি রিড ইউনিট
প্রশ্ন ব্যাখ্যা করুন
কোয়েরি এক্সপ্লেইন আপনাকে বুঝতে সাহায্য করে যে ডাটাবেস কীভাবে আপনার কোয়েরিগুলো সম্পাদন করে। এখানে প্রদত্ত বিবরণ আপনাকে আপনার কোয়েরিগুলো অপ্টিমাইজ করতে সাহায্য করতে পারে।
Query Explain ব্যবহার করার ক্ষেত্রে নিম্নলিখিত খরচগুলো প্রযোজ্য:
- কোয়েরি ব্যাখ্যা করুন কোনটি কোয়েরিটি সম্পাদন করে: কোয়েরি কস্ট প্রযোজ্য।
- শুধুমাত্র প্ল্যান অপশন ব্যবহার করে কোয়েরি এক্সপ্লেইন। খরচ: ১ রিড ইউনিট (একটি কোয়েরির সর্বনিম্ন খরচ)।
লেখার ক্রিয়াকলাপ
রাইট অপারেশন (তৈরি, আপডেট এবং ডিলিট)-এর চার্জ, অপারেশন চলাকালীন তৈরি, পরিবর্তন বা ডিলিট করা ডকুমেন্ট এবং ইনডেক্সের আকারের উপর ভিত্তি করে ধার্য করা হয়। রাইট অপারেশনে রাইট ইউনিট ব্যবহৃত হয়। রাইট ইউনিট ১ কিলোবাইট (KiB) ট্রাঞ্চে গণনা করা হয়।
ডকুমেন্ট আইডি দ্বারা আপডেটের মতো সাধারণ রাইট অপারেশনের ক্ষেত্রে শুধুমাত্র রাইটের খরচই প্রযোজ্য হয়। যে রাইট অপারেশনগুলো সম্পন্ন করার জন্য কোয়েরি করার প্রয়োজন হয়, সেগুলোর ক্ষেত্রে অতিরিক্তভাবে কোয়েরি-সম্পর্কিত রিড খরচও যুক্ত হয়।
নিম্নলিখিত উদাহরণগুলো দেখুন।
তৈরি করে
- কোনো ইনডেক্স ছাড়া একটি নতুন ১০ কিলোবাইট ডকুমেন্ট তৈরি করুন। ব্যবহৃত হবে: ১০ রাইট ইউনিট।
- কালেকশনটিতে ২৫৬ বাইটের ১টি ইনডেক্স এন্ট্রি সহ একটি ১ কিলোবাইট ডকুমেন্ট তৈরি করুন। ব্যবহৃত উপাদান: ২ রাইট ইউনিট
আপডেট
- ডকুমেন্ট আইডি দ্বারা একটি ১০ কিলোবাইট (KiB) ডকুমেন্ট খুঁজুন এবং কালেকশনে কোনো ইনডেক্স ছাড়াই তা আপডেট করুন। ব্যবহৃত উপাদান: ১০ রাইট ইউনিট।
- ডকুমেন্ট আইডি দ্বারা একটি ১ কিলোবাইট (KiB) ডকুমেন্ট খুঁজুন এবং ২৫৬ বাইটের ১টি ইনডেক্স এন্ট্রি দিয়ে ১টি ফিল্ড আপডেট করুন। ব্যবহৃত হয়: ৩ রাইট ইউনিট। দ্রষ্টব্য: এই ক্ষেত্রে একটি ইনডেক্স এন্ট্রি আপডেট করতে ২টি রাইট ইউনিট ব্যবহৃত হয় – একটি ডিলিট করার জন্য এবং অন্যটি ইনডেক্স এন্ট্রিটি পুনরায় তৈরি করার জন্য।
- ডকুমেন্ট আইডি দ্বারা একটি ১ কিলোবাইট ডকুমেন্ট খুঁজুন এবং কোনো কিছু আপডেট করবেন না (কোনো পরিবর্তন করবেন না)। ব্যবহৃত হয়: ১ রাইট ইউনিট (সর্বনিম্ন রাইট খরচ)।
- একটি কালেকশনের সমস্ত ১ কিলোবাইট (KiB) ডকুমেন্ট কোয়েরি করুন, যা ১,০০০টি ডকুমেন্ট স্ক্যান করে, এবং কালেকশনটিতে কোনো ইনডেক্স ছাড়াই একটি নতুন ২৫৬ বাইটের ফিল্ড ইনসার্ট করুন: ১০০০ রিড ইউনিট এবং ১০০০ রাইট ইউনিট।
মুছে ফেলে
- ১ কিলোবাইট আকারের একটি ডকুমেন্ট মুছে ফেলুন, যেটির কালেকশনটিতে ১টি ইনডেক্স রয়েছে। ব্যবহৃত হবে: ২ রাইট ইউনিট।
- ১ কিলোবাইট আকারের একটি ডকুমেন্ট মুছে ফেলুন, যেটির কালেকশনে কোনো ইনডেক্স নেই। ব্যবহৃত হবে: ১ রাইট ইউনিট।
সূচক তৈরি করে
ইনডেক্স বিল্ড অপারেশন চলাকালীন তৈরি বা পরিবর্তিত ইনডেক্স এন্ট্রিগুলোর জন্য চার্জ ধার্য করা হয়। যখনই কোনো ইনডেক্স ডেফিনিশন যোগ বা অপসারণ করা হয়, তখনই এই খরচগুলো প্রযোজ্য হয়। ইনডেক্স এন্ট্রিগুলোর বিল রাইটের মতোই করা হয়, যেখানে প্রতি ১ কিলোবাইটের জন্য ১ রাইট ইউনিট চার্জ করা হয়।
- ৫০০টি ডকুমেন্ট সম্বলিত একটি কালেকশনের জন্য একটি নতুন ইনডেক্স তৈরি করুন, প্রতিটি ইনডেক্স এন্ট্রির আকার ১ কিলোবাইট। এর জন্য ৫০০ রাইট ইউনিট ব্যবহৃত হয়।
- ৫০০টি ডকুমেন্ট সম্বলিত একটি কালেকশনের বিদ্যমান ইনডেক্স মুছে ফেলুন, মুছে ফেলা প্রতিটি ইনডেক্স এন্ট্রির আকার ১ কিলোবাইট। এর জন্য ৫০০ রাইট ইউনিট ব্যবহৃত হয়।
এই পৃষ্ঠায় সবচেয়ে প্রচলিত কিছু পরিস্থিতিতে বিলিং ইউনিট কীভাবে গণনা করা হয় তার উদাহরণ দেওয়া হয়েছে। উল্লেখ্য যে, কোয়েরি প্ল্যান, ডেটার গঠন এবং উপলব্ধ ইনডেক্সের মতো বিভিন্ন বিষয়ের উপর ভিত্তি করে প্রতিটি কোয়েরির প্রক্রিয়াকৃত ডেটা ভিন্ন হতে পারে।
আপনার নির্দিষ্ট কোয়েরিগুলোর খরচ এবং পারফরম্যান্স আরও ভালোভাবে বোঝার জন্য আমরা কোয়েরি এক্সপ্লেইন ফিচারটি ব্যবহার করার পরামর্শ দিই।
রিড অপারেশন
অধিকাংশ রিড অপারেশনের মধ্যে হয় কোনো নির্দিষ্ট ডকুমেন্ট থেকে পয়েন্ট রিড করা, অথবা কোনো আইডেন্টিফায়ারের উপর ভিত্তি করে ডেটার একটি পরিসর স্ক্যান করা অন্তর্ভুক্ত থাকে। রিড অপারেশনে রিড ইউনিট খরচ হয়। নিম্নলিখিত উদাহরণগুলো দেখুন।
সম্পূর্ণ পাঠ্য অনুসন্ধান
পূর্ণ-পাঠ্য অনুসন্ধান কোয়েরির জন্য চার্জকে একটি টেক্সট ইনডেক্সে অনুসন্ধান করার খরচ এবং ডকুমেন্টগুলো পুনরুদ্ধার করার খরচের মধ্যে ভাগ করা হয়। একটি টেক্সট ইনডেক্সে অনুসন্ধান করার খরচ কোয়েরির জটিলতা এবং ফলাফল খুঁজে বের করার জন্য ইনডেক্সে স্ক্যান করা ডেটার পরিমাণের উপর নির্ভর করে। এই খরচকে প্রভাবিত করে এমন বিষয়গুলোর মধ্যে রয়েছে সার্চ টার্মের সংখ্যা ও প্রকৃতি (যেমন টার্ম, ফ্রেজ), প্রাসঙ্গিকতা স্কোরিং প্রয়োগ করা হয়েছে কিনা এবং কতগুলো ইনডেক্স এন্ট্রি পরীক্ষা করতে হবে। প্রাসঙ্গিক ডকুমেন্ট পুনরুদ্ধারের খরচ অনুসন্ধান পর্ব শেষ হওয়ার পর আনা ডকুমেন্টের সংখ্যা এবং আকারের উপর ভিত্তি করে নির্ধারিত হয়।
The following table delineates the charges associated with executing full-text search queries for an ecommerce product catalog for a plant nursery. This example assumes a collection of 200,000 product listings in a collection, with each product listing document being 2KiB, and a corresponding text search index size of approximately 100MiB.
| প্রশ্ন | Code Example | Estimated Read Units Consumed Per Query | Estimated Costs (region: us-central1 in USD) |
|---|---|---|---|
| Search for a rare "dry water" stack flat tray product, resulting in the retrieval of 3 documents. | | 10 total read units Based on 7 units for full-text search and 3 additional units for the returned documents. | $0.50 per million queries |
| Search for all indoor citrus trees, resulting in the retrieval of 36 documents. | | 42 total read units Based on 6 units for full-text search and 36 additional units for the returned documents. | $2.10 per million queries |
| Search for balcony planters where there are lots of product matches. Sort results by relevance, and limit to the top 50 search results. | | 75 total read units Based on 25 units for full-text search and 50 additional units for the returned documents. | $3.75 per million queries |
These examples illustrate how different query patterns impact costs:
- The "dry water" query involves a phrase (
"dry water") and additional terms. Phrase searches are more complex as the query engine needs to check token proximity and order, contributing to the 7 read units for the search phase. Since very few documents match, document retrieval cost is low. - The "indoor" "citrus" "tree" query searches for three separate terms. While slightly less complex per term than a phrase search, it still requires looking up multiple tokens. It has a slightly lower search index scan cost of 6 read units, than the "dry water" example, but 36 documents are returned, increasing the total cost.
- The balcony planter query has the highest full-text search cost of 25 units by a significant margin. This is primarily because it requests results to be sorted by relevance (
.sort({score: {$meta: "textScore"}})) on terms that match many documents. To determine the top 50 most relevant results, the query engine must find all potential matches for "balcony" or "planter", calculate a relevance score for each, and then sort them. This scoring and sorting process across a large number of candidates within the index is computationally intensive, even though only 50 documents are ultimately retrieved. The broadness of the terms combined with the overhead of relevance scoring makes the search phase more expensive.
Geospatial Queries
Charges for geospatial queries are determined by the complexity of the query and the specific conditions and sorting utilized, as well as the resources required to scan all the data in the relevant geospatial index.
The following table delineates the charges associated with executing geospatial queries for a maps application. This example assumes a collection of 1,000,000 documents representing points of interest, with each point of interest document being 1KiB, and a corresponding geospatial index size of approximately 60MiB.
| প্রশ্ন | Code Example | Estimated Read Units Consumed Per Query | Estimated Costs (region: us-central1 in USD) |
|---|---|---|---|
| Find all points of interest within a maximum of 10km, returning 10 matches. | | 16 total read units. Based on 6 read units for geospatial query and 10 additional units for the returned documents. | $0.80 per million queries |
| Find all points of interests with a maximum distance of 100km, and return the top 10 closest points of interest out of 1,000 matches | | 19 total read units. Based on 9 read units for geospatial query and 10 additional units for the returned documents. | $0.95 per million queries |
These examples illustrate how different query patterns impact costs:
- 10km Radius Query : This query scans a smaller geographic area. Since it finds only 10 matches within this 10km radius, the query engine has to do less work to identify and order these points by distance (as
$nearimplicitly does). This results in a lower index scan cost of 6 read units. - 100km Radius Query : This query covers a much larger area. The query finds 1,000 potential matches within the 100km radius. To fulfill the request for the top 10 closest points, the query engine needs to calculate distances and sort a much larger set of candidates (up to 1,000 points) within the index. This additional computational work of sifting through and ranking many more points is why the geospatial query cost is higher at 9 read units, compared to the 10km query, despite also returning only 10 documents.
Point reads
Example billing for point reads:
- Point read of a single 1 KiB document. Consumes: 1 read unit
- Point read of a single 4 KiB document. Consumes: 1 read unit
- Point read of a single 1 MiB document. Consumes: 256 read units
- Point read of 100 documents, 1 KiB each. Consumes: 100 read units
স্ক্যানিং
The following examples include scenarios that scan documents or index entries.
Scanning Documents
- Query which scans 100 documents, 1 KiB each. Consumes: 25 read units
Scanning indexes
The scanning cost, in terms of bytes, is the same regardless of whether it is a document or index being scanned. However, index entries are often smaller in size. As a result, they can often provide a more cost effective way of scanning data.
- Query which scans 100 index entries, 1 KiB each. Consumes: 25 read units.
- Query which scans 100 index entries, 128 bytes each. Consumes: 4 read units.
Minimum document or index entry size
In certain situations it may not be necessary to read the contents of a document or index entry to satisfy a query. This includes simple count queries like counting the total number of documents in a collection. In these situations, a minimum cost of 32 bytes applies per item scanned.
- Count the number of documents in a collection. The query scans 1000 items in the collection. Consumes: 8 read units.
Combination of scanning and point reads
Many queries perform a combination of scanning and point reads to satisfy an operation.
- Query which scans 128 index entries, 256 bytes each and performs a point read of 128 documents, 4 KiB each. Consumes: 136 read units, comprised of:
- 128 read units for point reads
- 8 read units for index scans
Query Explain
Query Explain helps you understand how the database executes your queries. The details provided can help you optimize your queries.
The following costs apply when using Query Explain:
- Query Explain which executes the query: Query cost applies.
- Query Explain using plan only option. Consumes: 1 read unit (minimum cost of a query)
Write operations
Write operations (creates, updates and deletes) are charged based on the size of the documents and indexes being created, modified, or deleted during the operation. Write operations consume write units. Write units are calculated in 1 KiB tranches.
Simple write operations, like update by document ID, only incur the cost of the writes. Write operations which require querying to satisfy the operation will additionally incur the read costs associated with the query.
See the following examples.
Creates
- Create a new 10 KiB document with no indexes. Consumes: 10 write units
- Create a 1 KiB document with 1 index entry of 256 bytes on the collection. Consumes: 2 write units
আপডেট
- Find a 10 KiB document by document ID and update with no indexes on the collection. Consumes: 10 write units
- Find a 1 KiB document by document ID and update 1 field with 1 index entry of 256 bytes. Consumes: 3 write units. Note: Updating an index entry in this situation consumes 2 write units – one to delete and one to recreate the index entry.
- Find a 1 KiB document by document ID and update nothing (no changes). Consumes: 1 write units (the minimum write costs)
- Query all 1 KiB documents in a collection, which scans 1,000 documents, and insert a new 256 bytes field with no indexes on the collection: 1000 read units and 1000 writes units.
Deletes
- Delete a 1 KiB document, which has 1 index on the collection. Consumes: 2 write units
- Delete a 1 KiB document, which has no indexes on the collection. Consumes: 1 write unit
Index builds
Index builds charge for the index entries created or modified during the build operation. These costs are incurred anytime an index definition is added or removed. The index entries are billed identically to writes incurring 1 write unit per 1KiB.
- Create a new index for a collection containing 500 documents, index entries created are 1 KiB each. Consumes 500 write units.
- Delete an existing index for a collection containing 500 documents, index entries deleted are 1KiB each. Consumes 500 write units.