نمونه های قیمت گذاری

این صفحه شامل نمونه‌هایی از نحوه محاسبه واحدهای صورتحساب در برخی از رایج‌ترین سناریوها است. توجه داشته باشید که هر پرس‌وجو ممکن است بر اساس عواملی مانند طرح پرس‌وجو، شکل داده‌ها و شاخص‌های موجود، از نظر داده‌های پردازش‌شده متفاوت باشد.

توصیه می‌کنیم از ویژگی توضیح پرس‌وجو (Query Explain) برای درک بهتر هزینه و عملکرد پرس‌وجوهای خاص خود استفاده کنید.

عملیات خواندن

بیشتر عملیات خواندن مستلزم انجام یک خواندن نقطه‌ای از یک سند خاص یا اسکن طیف وسیعی از داده‌ها بر اساس یک شناسه است. عملیات خواندن واحدهای خوانده شده را مصرف می‌کند. به مثال‌های زیر مراجعه کنید.

هزینه‌های جستجوهای تمام متن بین هزینه انجام جستجو در یک فهرست متنی و هزینه بازیابی اسناد تمایز قائل می‌شوند. هزینه انجام جستجو در یک فهرست متنی با پیچیدگی جستجو و میزان داده‌های اسکن شده در فهرست برای یافتن نتایج تعیین می‌شود. عوامل مؤثر بر این هزینه شامل تعداد و ماهیت عبارات جستجو (مثلاً اصطلاحات، عبارات)، اعمال امتیازدهی مرتبط بودن یا نبودن، و تعداد ورودی‌های فهرست که باید بررسی شوند، می‌باشد. هزینه بازیابی اسناد مرتبط بر اساس تعداد و اندازه اسناد بازیابی شده پس از تکمیل مرحله جستجو تعیین می‌شود.

جدول زیر هزینه‌های مرتبط با اجرای جستجوهای متن کامل برای یک کاتالوگ محصولات تجارت الکترونیک برای یک گلخانه را مشخص می‌کند. این مثال مجموعه‌ای از ۲۰۰۰۰۰ لیست محصول را در یک مجموعه فرض می‌کند که هر سند لیست محصول ۲ کیلوبایت و اندازه فهرست جستجوی متن مربوطه تقریباً ۱۰۰ مگابایت است.

پرس و جو مثال کد واحدهای خوانده شده تخمینی مصرف شده به ازای هر پرس و جو هزینه‌های تخمینی (منطقه: ایالات متحده-مرکزی ۱ به دلار آمریکا)
جستجوی یک محصول کمیاب سینی تخت با پشته "آب خشک" که منجر به بازیابی ۳ سند می‌شود.
db.products.find(
  {$text: {$search: '"dry water" stack flat'}}
);

۱۰ واحد خوانده شده در مجموع

بر اساس ۷ واحد برای جستجوی متن کامل و ۳ واحد اضافی برای اسناد بازگردانده شده.

۰.۵۰ دلار به ازای هر میلیون درخواست
جستجوی تمام درختان مرکبات خانگی، منجر به بازیابی ۳۶ سند شد.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

۴۲ واحد خوانده شده در مجموع

بر اساس ۶ واحد برای جستجوی متن کامل و ۳۶ واحد اضافی برای اسناد بازگردانده شده.

۲.۱۰ دلار به ازای هر یک میلیون جستجو
برای گلدان‌های بالکن، محصولاتی با تطابق زیاد را جستجو کنید. نتایج را بر اساس مرتبط بودن مرتب کنید و آنها را به ۵۰ نتیجه برتر جستجو محدود کنید.
db.products.find(
  {$text: {$search: 'balcony planter'}}
).sort({score: {$meta: "textScore"}}).limit(50);

۷۵ واحد خوانده شده در کل

بر اساس ۲۵ واحد برای جستجوی متن کامل و ۵۰ واحد اضافی برای اسناد بازگردانده شده.

۳.۷۵ دلار به ازای هر یک میلیون جستجو

این مثال‌ها نشان می‌دهند که چگونه الگوهای مختلف پرس‌وجو بر هزینه‌ها تأثیر می‌گذارند:

  • عبارت جستجوی «آب خشک» شامل یک عبارت ( "dry water" ) و اصطلاحات اضافی است. جستجوی عبارات پیچیده‌تر است زیرا موتور جستجو باید نزدیکی و ترتیب توکن‌ها را بررسی کند که به 7 واحد خوانده شده برای مرحله جستجو کمک می‌کند. از آنجایی که تعداد بسیار کمی از اسناد مطابقت دارند، هزینه بازیابی سند کم است.
  • عبارت جستجوی «درون‌ساختمانی»، «مرکبات» و «درخت» سه عبارت جداگانه را جستجو می‌کند. اگرچه به ازای هر عبارت کمی پیچیده‌تر از جستجوی عبارتی است، اما همچنان نیاز به جستجوی چندین توکن دارد. هزینه اسکن فهرست جستجو در آن کمی کمتر از مثال «آب خشک» است که ۶ واحد خوانده می‌شود، اما ۳۶ سند برگردانده می‌شود که هزینه کل را افزایش می‌دهد.
  • جستجوی گلدان بالکن با اختلاف قابل توجهی، بالاترین هزینه جستجوی متن کامل را با ۲۵ واحد دارد. این امر عمدتاً به این دلیل است که درخواست می‌کند نتایج بر اساس ارتباط ( .sort({score: {$meta: "textScore"}}) ) بر روی عباراتی که با اسناد زیادی مطابقت دارند، مرتب شوند. برای تعیین ۵۰ نتیجه برتر و مرتبط، موتور جستجو باید تمام تطابق‌های بالقوه برای "balcony" یا "planter" را پیدا کند، امتیاز ارتباط را برای هر کدام محاسبه کند و سپس آنها را مرتب کند. این فرآیند امتیازدهی و مرتب‌سازی در تعداد زیادی از کاندیداها در فهرست، از نظر محاسباتی فشرده است، حتی اگر در نهایت فقط ۵۰ سند بازیابی شود. گستردگی عبارات همراه با سربار امتیازدهی ارتباط، مرحله جستجو را پرهزینه‌تر می‌کند.

پرس‌وجوهای مکانی

هزینه‌های مربوط به پرس‌وجوهای مکانی بر اساس پیچیدگی پرس‌وجو و شرایط خاص و مرتب‌سازی مورد استفاده، و همچنین منابع مورد نیاز برای اسکن تمام داده‌ها در فهرست مکانی مربوطه تعیین می‌شود.

جدول زیر هزینه‌های مرتبط با اجرای پرس‌وجوهای مکانی برای یک برنامه نقشه را مشخص می‌کند. این مثال مجموعه‌ای از ۱،۰۰۰،۰۰۰ سند را فرض می‌کند که نشان‌دهنده نقاط مورد علاقه هستند و هر سند مورد علاقه ۱ کیلوبایت حجم دارد و اندازه شاخص مکانی مربوطه تقریباً ۶۰ مگابایت است.

پرس و جو مثال کد واحدهای خوانده شده تخمینی مصرف شده به ازای هر پرس و جو هزینه‌های تخمینی (منطقه: ایالات متحده-مرکزی ۱ به دلار آمریکا)
تمام نقاط مورد علاقه را در شعاع حداکثر ۱۰ کیلومتری پیدا کنید و ۱۰ مورد مشابه را برگردانید.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 10000
    }}})

در مجموع ۱۶ واحد خوانده شده.

بر اساس ۶ واحد خوانده شده برای پرس و جوی مکانی و ۱۰ واحد اضافی برای اسناد برگشتی.

۰.۸۰ دلار به ازای هر یک میلیون جستجو
تمام نقاط مورد علاقه با حداکثر فاصله ۱۰۰ کیلومتر را پیدا کنید و ۱۰ نقطه مورد علاقه نزدیک را از بین ۱۰۰۰ مورد منطبق، انتخاب کنید.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

در مجموع ۱۹ واحد خوانده شده.

بر اساس ۹ واحد خوانده شده برای پرس و جوی مکانی و ۱۰ واحد اضافی برای اسناد برگشتی.

۰.۹۵ دلار به ازای هر یک میلیون جستجو

این مثال‌ها نشان می‌دهند که چگونه الگوهای مختلف پرس‌وجو بر هزینه‌ها تأثیر می‌گذارند:

  • پرس‌وجوی شعاع ۱۰ کیلومتری : این پرس‌وجو یک منطقه جغرافیایی کوچک‌تر را اسکن می‌کند. از آنجایی که فقط ۱۰ مورد منطبق در این شعاع ۱۰ کیلومتری پیدا می‌کند، موتور پرس‌وجو باید کار کمتری برای شناسایی و مرتب‌سازی این نقاط بر اساس فاصله انجام دهد (همانطور که $near به طور ضمنی انجام می‌دهد). این منجر به هزینه اسکن شاخص کمتر از ۶ واحد خواندن می‌شود.
  • پرس‌وجوی شعاع ۱۰۰ کیلومتری : این پرس‌وجو منطقه بسیار وسیع‌تری را پوشش می‌دهد. پرس‌وجو ۱۰۰۰ مورد منطبق بالقوه را در شعاع ۱۰۰ کیلومتری پیدا می‌کند. برای انجام درخواست ۱۰ نقطه نزدیک‌تر، موتور پرس‌وجو باید فواصل را محاسبه کرده و مجموعه بسیار بزرگتری از کاندیداها (تا ۱۰۰۰ امتیاز) را در شاخص مرتب کند. این کار محاسباتی اضافی برای غربال کردن و رتبه‌بندی نقاط بسیار بیشتر، دلیل بالاتر بودن هزینه پرس‌وجوی مکانی با ۹ واحد خواندن، در مقایسه با پرس‌وجوی ۱۰ کیلومتری است، با وجود اینکه فقط ۱۰ سند را برمی‌گرداند.

نقاط خوانده شده

مثال صورتحساب برای امتیاز به شرح زیر است:

  • خواندن یک سند ۱ کیلوبایتی. مصرف: ۱ واحد خواندن
  • خواندن یک سند ۴ کیلوبایتی. مصرف: ۱ واحد خواندن
  • خواندن یک سند ۱ مگابایتی. مصرف: ۲۵۶ واحد خواندن
  • خواندن نقطه‌ای ۱۰۰ سند، هر کدام ۱ کیلوبایت. مصرف: ۱۰۰ واحد خواندن

اسکن کردن

مثال‌های زیر شامل سناریوهایی هستند که اسناد را اسکن می‌کنند یا ورودی‌های فهرست‌بندی شده را نمایش می‌دهند.

اسکن اسناد

  • پرس‌وجویی که ۱۰۰ سند، هر کدام ۱ کیلوبایت، را اسکن می‌کند. مصرف: ۲۵ واحد خواندن

اسکن ایندکس‌ها

هزینه اسکن، بر حسب بایت، صرف نظر از اینکه سند اسکن شده باشد یا فهرست، یکسان است. با این حال، ورودی‌های فهرست اغلب اندازه کوچکتری دارند. در نتیجه، آنها اغلب می‌توانند روشی مقرون به صرفه‌تر برای اسکن داده‌ها ارائه دهند.

  • پرس‌وجویی که ۱۰۰ ورودی فهرست، هر کدام ۱ کیلوبایت را اسکن می‌کند. مصرف: ۲۵ واحد خواندن.
  • پرس‌وجویی که ۱۰۰ ورودی ایندکس، هر کدام ۱۲۸ بایت را اسکن می‌کند. ۴ واحد خواندن مصرف می‌کند.

حداقل اندازه سند یا ورودی فهرست

در شرایط خاص، ممکن است برای پاسخ به یک پرس‌وجو، خواندن محتوای یک سند یا ورودی فهرست ضروری نباشد. این شامل پرس‌وجوهای شمارش ساده مانند شمارش تعداد کل اسناد در یک مجموعه می‌شود. در این شرایط، حداقل هزینه ۳۲ بایت برای هر مورد اسکن شده اعمال می‌شود.

  • تعداد اسناد موجود در یک مجموعه را بشمارید. این پرس و جو ۱۰۰۰ مورد را در مجموعه اسکن می‌کند. مصرف: ۸ واحد خواندن.

ترکیبی از اسکن و خوانش نقطه‌ای

بسیاری از پرس‌وجوها ترکیبی از اسکن و خواندن نقطه‌ای را برای انجام یک عملیات انجام می‌دهند.

  • پرس‌وجویی که ۱۲۸ ورودی فهرست، هر کدام ۲۵۶ بایت، را اسکن می‌کند و یک خواندن نقطه‌ای از ۱۲۸ سند، هر کدام ۴ کیلوبایت، انجام می‌دهد. مصرف: ۱۳۶ واحد خواندن، شامل:
    • ۱۲۸ واحد خواندن برای خواندن نقطه‌ای
    • ۸ واحد خواندن برای اسکن‌های فهرستی

توضیح پرس و جو

توضیح کوئری به شما کمک می‌کند تا بفهمید پایگاه داده چگونه کوئری‌های شما را اجرا می‌کند. جزئیات ارائه شده می‌تواند به شما در بهینه‌سازی کوئری‌هایتان کمک کند.

هزینه‌های زیر هنگام استفاده از Query Explain اعمال می‌شود:

  • توضیح دهید کدام پرس‌وجو پرس‌وجو را اجرا می‌کند: هزینه پرس‌وجو اعمال می‌شود.
  • توضیح پرس‌وجو با استفاده از گزینه فقط طرح. مصرف: ۱ واحد خواندن (حداقل هزینه یک پرس‌وجو)

عملیات نوشتن

عملیات نوشتن (ایجاد، به‌روزرسانی و حذف) بر اساس اندازه اسناد و شاخص‌هایی که در طول عملیات ایجاد، اصلاح یا حذف می‌شوند، محاسبه می‌شوند. عملیات نوشتن، واحدهای نوشتن را مصرف می‌کنند. واحدهای نوشتن بر اساس ترانشه‌های ۱ کیلوبایتی محاسبه می‌شوند.

عملیات نوشتن ساده، مانند به‌روزرسانی بر اساس شناسه سند، فقط هزینه نوشتن را متحمل می‌شوند. عملیات نوشتنی که برای انجام عملیات نیاز به پرس‌وجو دارند، علاوه بر آن، هزینه‌های خواندن مرتبط با پرس‌وجو را نیز متحمل می‌شوند.

به مثال‌های زیر توجه کنید.

ایجاد می‌کند

  • یک سند جدید ۱۰ کیلوبایتی بدون ایندکس ایجاد کنید. مصرف: ۱۰ واحد نوشتن
  • یک سند ۱ کیلوبایتی با ۱ ورودی اندیس ۲۵۶ بایتی روی مجموعه ایجاد می‌کند. ۲ واحد نوشتن مصرف می‌کند.

به‌روزرسانی‌ها

  • یک سند ۱۰ کیلوبایتی را از طریق شناسه سند پیدا کنید و بدون هیچ اندیسی روی مجموعه، آن را به‌روزرسانی کنید. مصرف: ۱۰ واحد نوشتن
  • یک سند ۱ کیلوبایتی را با استفاده از شناسه سند پیدا کنید و ۱ فیلد را با ۱ ورودی شاخص ۲۵۶ بایتی به‌روزرسانی کنید. ۳ واحد نوشتن مصرف می‌کند. توجه: به‌روزرسانی ورودی شاخص در این شرایط ۲ واحد نوشتن مصرف می‌کند - یکی برای حذف و یکی برای ایجاد مجدد ورودی شاخص.
  • یک سند ۱ کیلوبایتی را با استفاده از شناسه سند پیدا کنید و هیچ چیزی را به‌روزرسانی نکنید (بدون تغییر). مصرف: ۱ واحد نوشتن (حداقل هزینه نوشتن)
  • تمام اسناد ۱ کیلوبایتی موجود در یک مجموعه که ۱۰۰۰ سند را اسکن می‌کند، جستجو کنید و یک فیلد جدید ۲۵۶ بایتی بدون اندیس در مجموعه وارد کنید: ۱۰۰۰ واحد خواندن و ۱۰۰۰ واحد نوشتن.

حذف‌ها

  • یک سند ۱ کیلوبایتی را که ۱ اندیس در مجموعه دارد، حذف می‌کند. ۲ واحد نوشتن مصرف می‌کند.
  • یک سند ۱ کیلوبایتی را که هیچ فهرستی در مجموعه ندارد، حذف می‌کند. ۱ واحد نوشتن مصرف می‌کند.

ساخت شاخص

هزینه ساخت شاخص برای ورودی‌های شاخص ایجاد شده یا اصلاح شده در طول عملیات ساخت. این هزینه‌ها هر زمان که تعریف شاخص اضافه یا حذف می‌شود، اعمال می‌شوند. ورودی‌های شاخص به طور یکسان برای نوشتن محاسبه می‌شوند که شامل ۱ واحد نوشتن به ازای هر ۱ کیلوبایت است.

  • یک فهرست جدید برای مجموعه‌ای شامل ۵۰۰ سند ایجاد کنید، ورودی‌های فهرست ایجاد شده هر کدام ۱ کیلوبایت هستند. ۵۰۰ واحد نوشتن مصرف می‌کند.
  • حذف یک فهرست موجود برای مجموعه‌ای حاوی ۵۰۰ سند، ورودی‌های فهرست حذف شده هر کدام ۱ کیلوبایت هستند. ۵۰۰ واحد نوشتن مصرف می‌کند.
،

این صفحه شامل نمونه‌هایی از نحوه محاسبه واحدهای صورتحساب در برخی از رایج‌ترین سناریوها است. توجه داشته باشید که هر پرس‌وجو ممکن است بر اساس عواملی مانند طرح پرس‌وجو، شکل داده‌ها و شاخص‌های موجود، از نظر داده‌های پردازش‌شده متفاوت باشد.

توصیه می‌کنیم از ویژگی توضیح پرس‌وجو (Query Explain) برای درک بهتر هزینه و عملکرد پرس‌وجوهای خاص خود استفاده کنید.

عملیات خواندن

بیشتر عملیات خواندن مستلزم انجام یک خواندن نقطه‌ای از یک سند خاص یا اسکن طیف وسیعی از داده‌ها بر اساس یک شناسه است. عملیات خواندن واحدهای خوانده شده را مصرف می‌کند. به مثال‌های زیر مراجعه کنید.

هزینه‌های جستجوهای تمام متن بین هزینه انجام جستجو در یک فهرست متنی و هزینه بازیابی اسناد تمایز قائل می‌شوند. هزینه انجام جستجو در یک فهرست متنی با پیچیدگی جستجو و میزان داده‌های اسکن شده در فهرست برای یافتن نتایج تعیین می‌شود. عوامل مؤثر بر این هزینه شامل تعداد و ماهیت عبارات جستجو (مثلاً اصطلاحات، عبارات)، اعمال امتیازدهی مرتبط بودن یا نبودن، و تعداد ورودی‌های فهرست که باید بررسی شوند، می‌باشد. هزینه بازیابی اسناد مرتبط بر اساس تعداد و اندازه اسناد بازیابی شده پس از تکمیل مرحله جستجو تعیین می‌شود.

جدول زیر هزینه‌های مرتبط با اجرای جستجوهای متن کامل برای یک کاتالوگ محصولات تجارت الکترونیک برای یک گلخانه را مشخص می‌کند. این مثال مجموعه‌ای از ۲۰۰۰۰۰ لیست محصول را در یک مجموعه فرض می‌کند که هر سند لیست محصول ۲ کیلوبایت و اندازه فهرست جستجوی متن مربوطه تقریباً ۱۰۰ مگابایت است.

پرس و جو مثال کد واحدهای خوانده شده تخمینی مصرف شده به ازای هر پرس و جو هزینه‌های تخمینی (منطقه: ایالات متحده-مرکزی ۱ به دلار آمریکا)
جستجوی یک محصول کمیاب سینی تخت با پشته "آب خشک" که منجر به بازیابی ۳ سند می‌شود.
db.products.find(
  {$text: {$search: '"dry water" stack flat'}}
);

۱۰ واحد خوانده شده در مجموع

بر اساس ۷ واحد برای جستجوی متن کامل و ۳ واحد اضافی برای اسناد بازگردانده شده.

۰.۵۰ دلار به ازای هر میلیون درخواست
جستجوی تمام درختان مرکبات خانگی، منجر به بازیابی ۳۶ سند شد.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

۴۲ واحد خوانده شده در مجموع

بر اساس ۶ واحد برای جستجوی متن کامل و ۳۶ واحد اضافی برای اسناد بازگردانده شده.

۲.۱۰ دلار به ازای هر یک میلیون جستجو
برای گلدان‌های بالکن، محصولاتی با تطابق زیاد را جستجو کنید. نتایج را بر اساس مرتبط بودن مرتب کنید و آنها را به ۵۰ نتیجه برتر جستجو محدود کنید.
db.products.find(
  {$text: {$search: 'balcony planter'}}
).sort({score: {$meta: "textScore"}}).limit(50);

۷۵ واحد خوانده شده در کل

بر اساس ۲۵ واحد برای جستجوی متن کامل و ۵۰ واحد اضافی برای اسناد بازگردانده شده.

۳.۷۵ دلار به ازای هر یک میلیون جستجو

این مثال‌ها نشان می‌دهند که چگونه الگوهای مختلف پرس‌وجو بر هزینه‌ها تأثیر می‌گذارند:

  • عبارت جستجوی «آب خشک» شامل یک عبارت ( "dry water" ) و اصطلاحات اضافی است. جستجوی عبارات پیچیده‌تر است زیرا موتور جستجو باید نزدیکی و ترتیب توکن‌ها را بررسی کند که به 7 واحد خوانده شده برای مرحله جستجو کمک می‌کند. از آنجایی که تعداد بسیار کمی از اسناد مطابقت دارند، هزینه بازیابی سند کم است.
  • عبارت جستجوی «درون‌ساختمانی»، «مرکبات» و «درخت» سه عبارت جداگانه را جستجو می‌کند. اگرچه به ازای هر عبارت کمی پیچیده‌تر از جستجوی عبارتی است، اما همچنان نیاز به جستجوی چندین توکن دارد. هزینه اسکن فهرست جستجو در آن کمی کمتر از مثال «آب خشک» است که ۶ واحد خوانده می‌شود، اما ۳۶ سند برگردانده می‌شود که هزینه کل را افزایش می‌دهد.
  • جستجوی گلدان بالکن با اختلاف قابل توجهی، بالاترین هزینه جستجوی متن کامل را با ۲۵ واحد دارد. این امر عمدتاً به این دلیل است که درخواست می‌کند نتایج بر اساس ارتباط ( .sort({score: {$meta: "textScore"}}) ) بر روی عباراتی که با اسناد زیادی مطابقت دارند، مرتب شوند. برای تعیین ۵۰ نتیجه برتر و مرتبط، موتور جستجو باید تمام تطابق‌های بالقوه برای "balcony" یا "planter" را پیدا کند، امتیاز ارتباط را برای هر کدام محاسبه کند و سپس آنها را مرتب کند. این فرآیند امتیازدهی و مرتب‌سازی در تعداد زیادی از کاندیداها در فهرست، از نظر محاسباتی فشرده است، حتی اگر در نهایت فقط ۵۰ سند بازیابی شود. گستردگی عبارات همراه با سربار امتیازدهی ارتباط، مرحله جستجو را پرهزینه‌تر می‌کند.

پرس‌وجوهای مکانی

هزینه‌های مربوط به پرس‌وجوهای مکانی بر اساس پیچیدگی پرس‌وجو و شرایط خاص و مرتب‌سازی مورد استفاده، و همچنین منابع مورد نیاز برای اسکن تمام داده‌ها در فهرست مکانی مربوطه تعیین می‌شود.

جدول زیر هزینه‌های مرتبط با اجرای پرس‌وجوهای مکانی برای یک برنامه نقشه را مشخص می‌کند. این مثال مجموعه‌ای از ۱،۰۰۰،۰۰۰ سند را فرض می‌کند که نشان‌دهنده نقاط مورد علاقه هستند و هر سند مورد علاقه ۱ کیلوبایت حجم دارد و اندازه شاخص مکانی مربوطه تقریباً ۶۰ مگابایت است.

پرس و جو مثال کد واحدهای خوانده شده تخمینی مصرف شده به ازای هر پرس و جو هزینه‌های تخمینی (منطقه: ایالات متحده-مرکزی ۱ به دلار آمریکا)
تمام نقاط مورد علاقه را در شعاع حداکثر ۱۰ کیلومتری پیدا کنید و ۱۰ مورد مشابه را برگردانید.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 10000
    }}})

در مجموع ۱۶ واحد خوانده شده.

بر اساس ۶ واحد خوانده شده برای پرس و جوی مکانی و ۱۰ واحد اضافی برای اسناد برگشتی.

۰.۸۰ دلار به ازای هر یک میلیون جستجو
تمام نقاط مورد علاقه با حداکثر فاصله ۱۰۰ کیلومتر را پیدا کنید و ۱۰ نقطه مورد علاقه نزدیک را از بین ۱۰۰۰ مورد منطبق، انتخاب کنید.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

در مجموع ۱۹ واحد خوانده شده.

بر اساس ۹ واحد خوانده شده برای پرس و جوی مکانی و ۱۰ واحد اضافی برای اسناد برگشتی.

۰.۹۵ دلار به ازای هر یک میلیون جستجو

این مثال‌ها نشان می‌دهند که چگونه الگوهای مختلف پرس‌وجو بر هزینه‌ها تأثیر می‌گذارند:

  • پرس‌وجوی شعاع ۱۰ کیلومتری : این پرس‌وجو یک منطقه جغرافیایی کوچک‌تر را اسکن می‌کند. از آنجایی که فقط ۱۰ مورد منطبق در این شعاع ۱۰ کیلومتری پیدا می‌کند، موتور پرس‌وجو باید کار کمتری برای شناسایی و مرتب‌سازی این نقاط بر اساس فاصله انجام دهد (همانطور که $near به طور ضمنی انجام می‌دهد). این منجر به هزینه اسکن شاخص کمتر از ۶ واحد خواندن می‌شود.
  • پرس‌وجوی شعاع ۱۰۰ کیلومتری : این پرس‌وجو منطقه بسیار وسیع‌تری را پوشش می‌دهد. پرس‌وجو ۱۰۰۰ مورد منطبق بالقوه را در شعاع ۱۰۰ کیلومتری پیدا می‌کند. برای انجام درخواست ۱۰ نقطه نزدیک‌تر، موتور پرس‌وجو باید فواصل را محاسبه کرده و مجموعه بسیار بزرگتری از کاندیداها (تا ۱۰۰۰ امتیاز) را در شاخص مرتب کند. این کار محاسباتی اضافی برای غربال کردن و رتبه‌بندی نقاط بسیار بیشتر، دلیل بالاتر بودن هزینه پرس‌وجوی مکانی با ۹ واحد خواندن، در مقایسه با پرس‌وجوی ۱۰ کیلومتری است، با وجود اینکه فقط ۱۰ سند را برمی‌گرداند.

نقاط خوانده شده

مثال صورتحساب برای امتیاز به شرح زیر است:

  • خواندن یک سند ۱ کیلوبایتی. مصرف: ۱ واحد خواندن
  • خواندن یک سند ۴ کیلوبایتی. مصرف: ۱ واحد خواندن
  • خواندن یک سند ۱ مگابایتی. مصرف: ۲۵۶ واحد خواندن
  • خواندن نقطه‌ای ۱۰۰ سند، هر کدام ۱ کیلوبایت. مصرف: ۱۰۰ واحد خواندن

اسکن کردن

مثال‌های زیر شامل سناریوهایی هستند که اسناد را اسکن می‌کنند یا ورودی‌های فهرست‌بندی شده را نمایش می‌دهند.

اسکن اسناد

  • پرس‌وجویی که ۱۰۰ سند، هر کدام ۱ کیلوبایت، را اسکن می‌کند. مصرف: ۲۵ واحد خواندن

اسکن ایندکس‌ها

هزینه اسکن، بر حسب بایت، صرف نظر از اینکه سند اسکن شده باشد یا فهرست، یکسان است. با این حال، ورودی‌های فهرست اغلب اندازه کوچکتری دارند. در نتیجه، آنها اغلب می‌توانند روشی مقرون به صرفه‌تر برای اسکن داده‌ها ارائه دهند.

  • پرس‌وجویی که ۱۰۰ ورودی فهرست، هر کدام ۱ کیلوبایت را اسکن می‌کند. مصرف: ۲۵ واحد خواندن.
  • پرس‌وجویی که ۱۰۰ ورودی ایندکس، هر کدام ۱۲۸ بایت را اسکن می‌کند. ۴ واحد خواندن مصرف می‌کند.

حداقل اندازه سند یا ورودی فهرست

در شرایط خاص، ممکن است برای پاسخ به یک پرس‌وجو، خواندن محتوای یک سند یا ورودی فهرست ضروری نباشد. این شامل پرس‌وجوهای شمارش ساده مانند شمارش تعداد کل اسناد در یک مجموعه می‌شود. در این شرایط، حداقل هزینه ۳۲ بایت برای هر مورد اسکن شده اعمال می‌شود.

  • تعداد اسناد موجود در یک مجموعه را بشمارید. این پرس و جو ۱۰۰۰ مورد را در مجموعه اسکن می‌کند. مصرف: ۸ واحد خواندن.

ترکیبی از اسکن و خوانش نقطه‌ای

بسیاری از پرس‌وجوها ترکیبی از اسکن و خواندن نقطه‌ای را برای انجام یک عملیات انجام می‌دهند.

  • پرس‌وجویی که ۱۲۸ ورودی فهرست، هر کدام ۲۵۶ بایت، را اسکن می‌کند و یک خواندن نقطه‌ای از ۱۲۸ سند، هر کدام ۴ کیلوبایت، انجام می‌دهد. مصرف: ۱۳۶ واحد خواندن، شامل:
    • ۱۲۸ واحد خواندن برای خواندن نقطه‌ای
    • ۸ واحد خواندن برای اسکن‌های فهرستی

توضیح پرس و جو

توضیح کوئری به شما کمک می‌کند تا بفهمید پایگاه داده چگونه کوئری‌های شما را اجرا می‌کند. جزئیات ارائه شده می‌تواند به شما در بهینه‌سازی کوئری‌هایتان کمک کند.

هزینه‌های زیر هنگام استفاده از Query Explain اعمال می‌شود:

  • توضیح دهید کدام پرس‌وجو پرس‌وجو را اجرا می‌کند: هزینه پرس‌وجو اعمال می‌شود.
  • توضیح پرس‌وجو با استفاده از گزینه فقط طرح. مصرف: ۱ واحد خواندن (حداقل هزینه یک پرس‌وجو)

عملیات نوشتن

عملیات نوشتن (ایجاد، به‌روزرسانی و حذف) بر اساس اندازه اسناد و شاخص‌هایی که در طول عملیات ایجاد، اصلاح یا حذف می‌شوند، محاسبه می‌شوند. عملیات نوشتن، واحدهای نوشتن را مصرف می‌کنند. واحدهای نوشتن بر اساس ترانشه‌های ۱ کیلوبایتی محاسبه می‌شوند.

عملیات نوشتن ساده، مانند به‌روزرسانی بر اساس شناسه سند، فقط هزینه نوشتن را متحمل می‌شوند. عملیات نوشتنی که برای انجام عملیات نیاز به پرس‌وجو دارند، علاوه بر آن، هزینه‌های خواندن مرتبط با پرس‌وجو را نیز متحمل می‌شوند.

به مثال‌های زیر توجه کنید.

ایجاد می‌کند

  • یک سند جدید ۱۰ کیلوبایتی بدون ایندکس ایجاد کنید. مصرف: ۱۰ واحد نوشتن
  • یک سند ۱ کیلوبایتی با ۱ ورودی اندیس ۲۵۶ بایتی روی مجموعه ایجاد می‌کند. ۲ واحد نوشتن مصرف می‌کند.

به‌روزرسانی‌ها

  • یک سند ۱۰ کیلوبایتی را از طریق شناسه سند پیدا کنید و بدون هیچ اندیسی روی مجموعه، آن را به‌روزرسانی کنید. مصرف: ۱۰ واحد نوشتن
  • یک سند ۱ کیلوبایتی را با استفاده از شناسه سند پیدا کنید و ۱ فیلد را با ۱ ورودی شاخص ۲۵۶ بایتی به‌روزرسانی کنید. ۳ واحد نوشتن مصرف می‌کند. توجه: به‌روزرسانی ورودی شاخص در این شرایط ۲ واحد نوشتن مصرف می‌کند - یکی برای حذف و یکی برای ایجاد مجدد ورودی شاخص.
  • یک سند ۱ کیلوبایتی را با استفاده از شناسه سند پیدا کنید و هیچ چیزی را به‌روزرسانی نکنید (بدون تغییر). مصرف: ۱ واحد نوشتن (حداقل هزینه نوشتن)
  • تمام اسناد ۱ کیلوبایتی موجود در یک مجموعه که ۱۰۰۰ سند را اسکن می‌کند، جستجو کنید و یک فیلد جدید ۲۵۶ بایتی بدون اندیس در مجموعه وارد کنید: ۱۰۰۰ واحد خواندن و ۱۰۰۰ واحد نوشتن.

حذف‌ها

  • یک سند ۱ کیلوبایتی را که ۱ اندیس در مجموعه دارد، حذف می‌کند. ۲ واحد نوشتن مصرف می‌کند.
  • یک سند ۱ کیلوبایتی را که هیچ فهرستی در مجموعه ندارد، حذف می‌کند. ۱ واحد نوشتن مصرف می‌کند.

ساخت شاخص

هزینه ساخت شاخص برای ورودی‌های شاخص ایجاد شده یا اصلاح شده در طول عملیات ساخت. این هزینه‌ها هر زمان که تعریف شاخص اضافه یا حذف می‌شود، اعمال می‌شوند. ورودی‌های شاخص به طور یکسان برای نوشتن محاسبه می‌شوند که شامل ۱ واحد نوشتن به ازای هر ۱ کیلوبایت است.

  • یک فهرست جدید برای مجموعه‌ای شامل ۵۰۰ سند ایجاد کنید، ورودی‌های فهرست ایجاد شده هر کدام ۱ کیلوبایت هستند. ۵۰۰ واحد نوشتن مصرف می‌کند.
  • حذف یک فهرست موجود برای مجموعه‌ای حاوی ۵۰۰ سند، ورودی‌های فهرست حذف شده هر کدام ۱ کیلوبایت هستند. ۵۰۰ واحد نوشتن مصرف می‌کند.
،

این صفحه شامل نمونه‌هایی از نحوه محاسبه واحدهای صورتحساب در برخی از رایج‌ترین سناریوها است. توجه داشته باشید که هر پرس‌وجو ممکن است بر اساس عواملی مانند طرح پرس‌وجو، شکل داده‌ها و شاخص‌های موجود، از نظر داده‌های پردازش‌شده متفاوت باشد.

توصیه می‌کنیم از ویژگی توضیح پرس‌وجو (Query Explain) برای درک بهتر هزینه و عملکرد پرس‌وجوهای خاص خود استفاده کنید.

عملیات خواندن

بیشتر عملیات خواندن مستلزم انجام یک خواندن نقطه‌ای از یک سند خاص یا اسکن طیف وسیعی از داده‌ها بر اساس یک شناسه است. عملیات خواندن واحدهای خوانده شده را مصرف می‌کند. به مثال‌های زیر مراجعه کنید.

هزینه‌های جستجوهای تمام متن بین هزینه انجام جستجو در یک فهرست متنی و هزینه بازیابی اسناد تمایز قائل می‌شوند. هزینه انجام جستجو در یک فهرست متنی با پیچیدگی جستجو و میزان داده‌های اسکن شده در فهرست برای یافتن نتایج تعیین می‌شود. عوامل مؤثر بر این هزینه شامل تعداد و ماهیت عبارات جستجو (مثلاً اصطلاحات، عبارات)، اعمال امتیازدهی مرتبط بودن یا نبودن، و تعداد ورودی‌های فهرست که باید بررسی شوند، می‌باشد. هزینه بازیابی اسناد مرتبط بر اساس تعداد و اندازه اسناد بازیابی شده پس از تکمیل مرحله جستجو تعیین می‌شود.

جدول زیر هزینه‌های مرتبط با اجرای جستجوهای متن کامل برای یک کاتالوگ محصولات تجارت الکترونیک برای یک گلخانه را مشخص می‌کند. این مثال مجموعه‌ای از ۲۰۰۰۰۰ لیست محصول را در یک مجموعه فرض می‌کند که هر سند لیست محصول ۲ کیلوبایت و اندازه فهرست جستجوی متن مربوطه تقریباً ۱۰۰ مگابایت است.

پرس و جو مثال کد واحدهای خوانده شده تخمینی مصرف شده به ازای هر پرس و جو هزینه‌های تخمینی (منطقه: ایالات متحده-مرکزی ۱ به دلار آمریکا)
جستجوی یک محصول کمیاب سینی تخت با پشته "آب خشک" که منجر به بازیابی ۳ سند می‌شود.
db.products.find(
  {$text: {$search: '"dry water" stack flat'}}
);

۱۰ واحد خوانده شده در مجموع

بر اساس ۷ واحد برای جستجوی متن کامل و ۳ واحد اضافی برای اسناد بازگردانده شده.

۰.۵۰ دلار به ازای هر میلیون درخواست
جستجوی تمام درختان مرکبات خانگی، منجر به بازیابی ۳۶ سند شد.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

۴۲ واحد خوانده شده در مجموع

بر اساس ۶ واحد برای جستجوی متن کامل و ۳۶ واحد اضافی برای اسناد بازگردانده شده.

۲.۱۰ دلار به ازای هر یک میلیون جستجو
برای گلدان‌های بالکن، محصولاتی با تطابق زیاد را جستجو کنید. نتایج را بر اساس مرتبط بودن مرتب کنید و آنها را به ۵۰ نتیجه برتر جستجو محدود کنید.
db.products.find(
  {$text: {$search: 'balcony planter'}}
).sort({score: {$meta: "textScore"}}).limit(50);

۷۵ واحد خوانده شده در کل

بر اساس ۲۵ واحد برای جستجوی متن کامل و ۵۰ واحد اضافی برای اسناد بازگردانده شده.

۳.۷۵ دلار به ازای هر یک میلیون جستجو

این مثال‌ها نشان می‌دهند که چگونه الگوهای مختلف پرس‌وجو بر هزینه‌ها تأثیر می‌گذارند:

  • عبارت جستجوی «آب خشک» شامل یک عبارت ( "dry water" ) و اصطلاحات اضافی است. جستجوی عبارات پیچیده‌تر است زیرا موتور جستجو باید نزدیکی و ترتیب توکن‌ها را بررسی کند که به 7 واحد خوانده شده برای مرحله جستجو کمک می‌کند. از آنجایی که تعداد بسیار کمی از اسناد مطابقت دارند، هزینه بازیابی سند کم است.
  • عبارت جستجوی «درون‌ساختمانی»، «مرکبات» و «درخت» سه عبارت جداگانه را جستجو می‌کند. اگرچه به ازای هر عبارت کمی پیچیده‌تر از جستجوی عبارتی است، اما همچنان نیاز به جستجوی چندین توکن دارد. هزینه اسکن فهرست جستجو در آن کمی کمتر از مثال «آب خشک» است که ۶ واحد خوانده می‌شود، اما ۳۶ سند برگردانده می‌شود که هزینه کل را افزایش می‌دهد.
  • جستجوی گلدان بالکن با اختلاف قابل توجهی، بالاترین هزینه جستجوی متن کامل را با ۲۵ واحد دارد. این امر عمدتاً به این دلیل است که درخواست می‌کند نتایج بر اساس ارتباط ( .sort({score: {$meta: "textScore"}}) ) بر روی عباراتی که با اسناد زیادی مطابقت دارند، مرتب شوند. برای تعیین ۵۰ نتیجه برتر و مرتبط، موتور جستجو باید تمام تطابق‌های بالقوه برای "balcony" یا "planter" را پیدا کند، امتیاز ارتباط را برای هر کدام محاسبه کند و سپس آنها را مرتب کند. این فرآیند امتیازدهی و مرتب‌سازی در تعداد زیادی از کاندیداها در فهرست، از نظر محاسباتی فشرده است، حتی اگر در نهایت فقط ۵۰ سند بازیابی شود. گستردگی عبارات همراه با سربار امتیازدهی ارتباط، مرحله جستجو را پرهزینه‌تر می‌کند.

پرس‌وجوهای مکانی

هزینه‌های مربوط به پرس‌وجوهای مکانی بر اساس پیچیدگی پرس‌وجو و شرایط خاص و مرتب‌سازی مورد استفاده، و همچنین منابع مورد نیاز برای اسکن تمام داده‌ها در فهرست مکانی مربوطه تعیین می‌شود.

جدول زیر هزینه‌های مرتبط با اجرای پرس‌وجوهای مکانی برای یک برنامه نقشه را مشخص می‌کند. این مثال مجموعه‌ای از ۱،۰۰۰،۰۰۰ سند را فرض می‌کند که نشان‌دهنده نقاط مورد علاقه هستند و هر سند مورد علاقه ۱ کیلوبایت حجم دارد و اندازه شاخص مکانی مربوطه تقریباً ۶۰ مگابایت است.

پرس و جو مثال کد واحدهای خوانده شده تخمینی مصرف شده به ازای هر پرس و جو هزینه‌های تخمینی (منطقه: ایالات متحده-مرکزی ۱ به دلار آمریکا)
تمام نقاط مورد علاقه را در شعاع حداکثر ۱۰ کیلومتری پیدا کنید و ۱۰ مورد مشابه را برگردانید.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 10000
    }}})

در مجموع ۱۶ واحد خوانده شده.

بر اساس ۶ واحد خوانده شده برای پرس و جوی مکانی و ۱۰ واحد اضافی برای اسناد برگشتی.

۰.۸۰ دلار به ازای هر یک میلیون جستجو
تمام نقاط مورد علاقه با حداکثر فاصله ۱۰۰ کیلومتر را پیدا کنید و ۱۰ نقطه مورد علاقه نزدیک را از بین ۱۰۰۰ مورد منطبق، انتخاب کنید.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

در مجموع ۱۹ واحد خوانده شده.

بر اساس ۹ واحد خوانده شده برای پرس و جوی مکانی و ۱۰ واحد اضافی برای اسناد برگشتی.

۰.۹۵ دلار به ازای هر یک میلیون جستجو

این مثال‌ها نشان می‌دهند که چگونه الگوهای مختلف پرس‌وجو بر هزینه‌ها تأثیر می‌گذارند:

  • پرس‌وجوی شعاع ۱۰ کیلومتری : این پرس‌وجو یک منطقه جغرافیایی کوچک‌تر را اسکن می‌کند. از آنجایی که فقط ۱۰ مورد منطبق در این شعاع ۱۰ کیلومتری پیدا می‌کند، موتور پرس‌وجو باید کار کمتری برای شناسایی و مرتب‌سازی این نقاط بر اساس فاصله انجام دهد (همانطور که $near به طور ضمنی انجام می‌دهد). این منجر به هزینه اسکن شاخص کمتر از ۶ واحد خواندن می‌شود.
  • پرس‌وجوی شعاع ۱۰۰ کیلومتری : این پرس‌وجو منطقه بسیار وسیع‌تری را پوشش می‌دهد. پرس‌وجو ۱۰۰۰ مورد منطبق بالقوه را در شعاع ۱۰۰ کیلومتری پیدا می‌کند. برای انجام درخواست ۱۰ نقطه نزدیک‌تر، موتور پرس‌وجو باید فواصل را محاسبه کرده و مجموعه بسیار بزرگتری از کاندیداها (تا ۱۰۰۰ امتیاز) را در شاخص مرتب کند. این کار محاسباتی اضافی برای غربال کردن و رتبه‌بندی نقاط بسیار بیشتر، دلیل بالاتر بودن هزینه پرس‌وجوی مکانی با ۹ واحد خواندن، در مقایسه با پرس‌وجوی ۱۰ کیلومتری است، با وجود اینکه فقط ۱۰ سند را برمی‌گرداند.

نقاط خوانده شده

مثال صورتحساب برای امتیاز به شرح زیر است:

  • خواندن یک سند ۱ کیلوبایتی. مصرف: ۱ واحد خواندن
  • خواندن یک سند ۴ کیلوبایتی. مصرف: ۱ واحد خواندن
  • خواندن یک سند ۱ مگابایتی. مصرف: ۲۵۶ واحد خواندن
  • خواندن نقطه‌ای ۱۰۰ سند، هر کدام ۱ کیلوبایت. مصرف: ۱۰۰ واحد خواندن

اسکن کردن

مثال‌های زیر شامل سناریوهایی هستند که اسناد را اسکن می‌کنند یا ورودی‌های فهرست‌بندی شده را نمایش می‌دهند.

اسکن اسناد

  • پرس‌وجویی که ۱۰۰ سند، هر کدام ۱ کیلوبایت، را اسکن می‌کند. مصرف: ۲۵ واحد خواندن

اسکن ایندکس‌ها

هزینه اسکن، بر حسب بایت، صرف نظر از اینکه سند اسکن شده باشد یا فهرست، یکسان است. با این حال، ورودی‌های فهرست اغلب اندازه کوچکتری دارند. در نتیجه، آنها اغلب می‌توانند روشی مقرون به صرفه‌تر برای اسکن داده‌ها ارائه دهند.

  • پرس‌وجویی که ۱۰۰ ورودی فهرست، هر کدام ۱ کیلوبایت را اسکن می‌کند. مصرف: ۲۵ واحد خواندن.
  • پرس‌وجویی که ۱۰۰ ورودی ایندکس، هر کدام ۱۲۸ بایت را اسکن می‌کند. ۴ واحد خواندن مصرف می‌کند.

حداقل اندازه سند یا ورودی فهرست

در شرایط خاص، ممکن است برای پاسخ به یک پرس‌وجو، خواندن محتوای یک سند یا ورودی فهرست ضروری نباشد. این شامل پرس‌وجوهای شمارش ساده مانند شمارش تعداد کل اسناد در یک مجموعه می‌شود. در این شرایط، حداقل هزینه ۳۲ بایت برای هر مورد اسکن شده اعمال می‌شود.

  • تعداد اسناد موجود در یک مجموعه را بشمارید. این پرس و جو ۱۰۰۰ مورد را در مجموعه اسکن می‌کند. مصرف: ۸ واحد خواندن.

ترکیبی از اسکن و خوانش نقطه‌ای

بسیاری از پرس‌وجوها ترکیبی از اسکن و خواندن نقطه‌ای را برای انجام یک عملیات انجام می‌دهند.

  • پرس‌وجویی که ۱۲۸ ورودی فهرست، هر کدام ۲۵۶ بایت، را اسکن می‌کند و یک خواندن نقطه‌ای از ۱۲۸ سند، هر کدام ۴ کیلوبایت، انجام می‌دهد. مصرف: ۱۳۶ واحد خواندن، شامل:
    • ۱۲۸ واحد خواندن برای خواندن نقطه‌ای
    • ۸ واحد خواندن برای اسکن‌های فهرستی

توضیح پرس و جو

توضیح کوئری به شما کمک می‌کند تا بفهمید پایگاه داده چگونه کوئری‌های شما را اجرا می‌کند. جزئیات ارائه شده می‌تواند به شما در بهینه‌سازی کوئری‌هایتان کمک کند.

هزینه‌های زیر هنگام استفاده از Query Explain اعمال می‌شود:

  • توضیح دهید کدام پرس‌وجو پرس‌وجو را اجرا می‌کند: هزینه پرس‌وجو اعمال می‌شود.
  • توضیح پرس‌وجو با استفاده از گزینه فقط طرح. مصرف: ۱ واحد خواندن (حداقل هزینه یک پرس‌وجو)

عملیات نوشتن

عملیات نوشتن (ایجاد، به‌روزرسانی و حذف) بر اساس اندازه اسناد و شاخص‌هایی که در طول عملیات ایجاد، اصلاح یا حذف می‌شوند، محاسبه می‌شوند. عملیات نوشتن، واحدهای نوشتن را مصرف می‌کنند. واحدهای نوشتن بر اساس ترانشه‌های ۱ کیلوبایتی محاسبه می‌شوند.

عملیات نوشتن ساده، مانند به‌روزرسانی بر اساس شناسه سند، فقط هزینه نوشتن را متحمل می‌شوند. عملیات نوشتنی که برای انجام عملیات نیاز به پرس‌وجو دارند، علاوه بر آن، هزینه‌های خواندن مرتبط با پرس‌وجو را نیز متحمل می‌شوند.

به مثال‌های زیر توجه کنید.

ایجاد می‌کند

  • یک سند جدید ۱۰ کیلوبایتی بدون ایندکس ایجاد کنید. مصرف: ۱۰ واحد نوشتن
  • یک سند ۱ کیلوبایتی با ۱ ورودی اندیس ۲۵۶ بایتی روی مجموعه ایجاد می‌کند. ۲ واحد نوشتن مصرف می‌کند.

به‌روزرسانی‌ها

  • یک سند ۱۰ کیلوبایتی را از طریق شناسه سند پیدا کنید و بدون هیچ اندیسی روی مجموعه، آن را به‌روزرسانی کنید. مصرف: ۱۰ واحد نوشتن
  • یک سند ۱ کیلوبایتی را با استفاده از شناسه سند پیدا کنید و ۱ فیلد را با ۱ ورودی شاخص ۲۵۶ بایتی به‌روزرسانی کنید. ۳ واحد نوشتن مصرف می‌کند. توجه: به‌روزرسانی ورودی شاخص در این شرایط ۲ واحد نوشتن مصرف می‌کند - یکی برای حذف و یکی برای ایجاد مجدد ورودی شاخص.
  • یک سند ۱ کیلوبایتی را با استفاده از شناسه سند پیدا کنید و هیچ چیزی را به‌روزرسانی نکنید (بدون تغییر). مصرف: ۱ واحد نوشتن (حداقل هزینه نوشتن)
  • تمام اسناد ۱ کیلوبایتی موجود در یک مجموعه که ۱۰۰۰ سند را اسکن می‌کند، جستجو کنید و یک فیلد جدید ۲۵۶ بایتی بدون اندیس در مجموعه وارد کنید: ۱۰۰۰ واحد خواندن و ۱۰۰۰ واحد نوشتن.

حذف‌ها

  • یک سند ۱ کیلوبایتی را که ۱ اندیس در مجموعه دارد، حذف می‌کند. ۲ واحد نوشتن مصرف می‌کند.
  • یک سند ۱ کیلوبایتی را که هیچ فهرستی در مجموعه ندارد، حذف می‌کند. ۱ واحد نوشتن مصرف می‌کند.

ساخت شاخص

هزینه ساخت شاخص برای ورودی‌های شاخص ایجاد شده یا اصلاح شده در طول عملیات ساخت. این هزینه‌ها هر زمان که تعریف شاخص اضافه یا حذف می‌شود، اعمال می‌شوند. ورودی‌های شاخص به طور یکسان برای نوشتن محاسبه می‌شوند که شامل ۱ واحد نوشتن به ازای هر ۱ کیلوبایت است.

  • یک فهرست جدید برای مجموعه‌ای شامل ۵۰۰ سند ایجاد کنید، ورودی‌های فهرست ایجاد شده هر کدام ۱ کیلوبایت هستند. ۵۰۰ واحد نوشتن مصرف می‌کند.
  • حذف یک فهرست موجود برای مجموعه‌ای حاوی ۵۰۰ سند، ورودی‌های فهرست حذف شده هر کدام ۱ کیلوبایت هستند. ۵۰۰ واحد نوشتن مصرف می‌کند.
،

این صفحه شامل نمونه‌هایی از نحوه محاسبه واحدهای صورتحساب در برخی از رایج‌ترین سناریوها است. توجه داشته باشید که هر پرس‌وجو ممکن است بر اساس عواملی مانند طرح پرس‌وجو، شکل داده‌ها و شاخص‌های موجود، از نظر داده‌های پردازش‌شده متفاوت باشد.

توصیه می‌کنیم از ویژگی توضیح پرس‌وجو (Query Explain) برای درک بهتر هزینه و عملکرد پرس‌وجوهای خاص خود استفاده کنید.

عملیات خواندن

بیشتر عملیات خواندن مستلزم انجام یک خواندن نقطه‌ای از یک سند خاص یا اسکن طیف وسیعی از داده‌ها بر اساس یک شناسه است. عملیات خواندن واحدهای خوانده شده را مصرف می‌کند. به مثال‌های زیر مراجعه کنید.

هزینه‌های جستجوهای تمام متن بین هزینه انجام جستجو در یک فهرست متنی و هزینه بازیابی اسناد تمایز قائل می‌شوند. هزینه انجام جستجو در یک فهرست متنی با پیچیدگی جستجو و میزان داده‌های اسکن شده در فهرست برای یافتن نتایج تعیین می‌شود. عوامل مؤثر بر این هزینه شامل تعداد و ماهیت عبارات جستجو (مثلاً اصطلاحات، عبارات)، اعمال امتیازدهی مرتبط بودن یا نبودن، و تعداد ورودی‌های فهرست که باید بررسی شوند، می‌باشد. هزینه بازیابی اسناد مرتبط بر اساس تعداد و اندازه اسناد بازیابی شده پس از تکمیل مرحله جستجو تعیین می‌شود.

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.
db.products.find(
  {$text: {$search: '"dry water" stack flat'}}
);

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.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

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.
db.products.find(
  {$text: {$search: 'balcony planter'}}
).sort({score: {$meta: "textScore"}}).limit(50);

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.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 10000
    }}})

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
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

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 $near implicitly 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 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.

ایجاد می‌کند

  • 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.