Fiyatlandırma örnekleri

Bu sayfada, en sık karşılaşılan senaryolardan bazılarında faturalandırma birimlerinin nasıl hesaplandığına dair örnekler yer almaktadır. Her sorgunun, sorgu planı, verilerin şekli ve kullanılabilir dizinler gibi faktörlere bağlı olarak işlenen veriler açısından farklılık gösterebileceğini unutmayın.

Belirli sorgularınızın maliyetini ve performansını daha iyi anlamak için Sorgu Açıklama özelliğini kullanmanızı öneririz.

Okuma işlemleri

Çoğu okuma işlemi, belirli bir dokümanın nokta okumasını yapmayı veya bir tanımlayıcıya göre bir veri aralığını taramayı içerir. Okuma işlemleri, okuma birimlerini tüketir. Aşağıdaki örneklere bakın.

Tam metin arama sorgularının ücretleri, bir metin dizininde arama yapma maliyeti ile dokümanları alma maliyeti arasında ayrım yapılarak belirlenir. Bir metin dizininde arama yapmanın maliyeti, sorgunun karmaşıklığına ve sonuçları bulmak için dizinde taranan veri miktarına göre belirlenir. Bu maliyeti etkileyen faktörler arasında arama terimlerinin sayısı ve yapısı (ör. terimler, ifadeler), alaka düzeyi puanlamasının uygulanıp uygulanmadığı ve incelenmesi gereken dizin girişlerinin sayısı yer alır. İlgili dokümanları alma maliyeti, arama aşaması tamamlandıktan sonra getirilen dokümanların sayısına ve boyutuna göre belirlenir.

Aşağıdaki tabloda, bir fidanlık için e-ticaret ürün kataloğunda tam metin arama sorgularının yürütülmesiyle ilişkili ücretler açıklanmaktadır. Bu örnekte, bir koleksiyonda 200.000 ürün listelemesi olduğu, her ürün listeleme belgesinin 2 KiB olduğu ve yaklaşık 100 MiB boyutunda bir metin arama dizini olduğu varsayılmaktadır.

Sorgu Kod örneği Sorgu Başına Tahmini Okuma Birimi Tüketimi Tahmini Maliyetler (bölge: ABD doları cinsinden us-central1)
3 dokümanın alınmasıyla sonuçlanan, nadir bir "kuru su" istiflenebilir düz tepsi ürünü arama.
db.products.find(
  {$text: {$search: '"dry water" stack flat'}}
);

Toplam 10 okuma birimi

Tam metin araması için 7 birim ve döndürülen belgeler için 3 ek birim temel alınır.

Bir milyon sorgu başına 0,50 ABD doları
Kapalı alandaki tüm narenciye ağaçlarını aradığınızda 36 doküman alınır.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

Toplam 42 okuma birimi

Tam metin araması için 6 birim ve döndürülen belgeler için 36 ek birim temel alınmıştır.

Bir milyon sorgu başına 2,10 ABD doları
Çok sayıda ürün eşleşmesinin olduğu balkon saksılarını arayın. Sonuçları alaka düzeyine göre sıralayın ve ilk 50 arama sonucuyla sınırlayın.
db.products.find(
  {$text: {$search: 'balcony planter'}}
).sort({score: {$meta: "textScore"}}).limit(50);

Toplam 75 okuma birimi

Tam metin araması için 25 birim ve döndürülen belgeler için 50 ek birim temel alınır.

Bir milyon sorgu başına 3,75 ABD doları

Bu örneklerde, farklı sorgu kalıplarının maliyetleri nasıl etkilediği gösterilmektedir:

  • "Kuru su" sorgusu bir ifade ("dry water") ve ek terimler içeriyor. Sorgu motorunun jeton yakınlığını ve sırasını kontrol etmesi gerektiğinden, arama aşamasında 7 okuma birimine katkıda bulunan ifade aramaları daha karmaşıktır. Çok az doküman eşleştiğinden doküman alma maliyeti düşüktür.
  • "Kapalı alan" "narenciye" "ağaç" sorgusu üç ayrı terimi arar. Bir kelime öbeği aramasından terim başına biraz daha az karmaşık olsa da yine de birden fazla jetonun aranmasını gerektirir. "Kuru su" örneğine kıyasla biraz daha düşük bir arama dizini tarama maliyeti (6 okuma birimi) olsa da 36 belge döndürülerek toplam maliyet artırılıyor.
  • Balkon saksısı sorgusu, 25 birimlik tam metin arama maliyetiyle önemli bir farkla en yüksek değere sahiptir. Bunun temel nedeni, sonuçların birçok belgeyle eşleşen terimlerde alaka düzeyine göre (.sort({score: {$meta: "textScore"}})) sıralanmasını istemesidir. En alakalı ilk 50 sonucu belirlemek için sorgu motoru, "balkon" veya "saksı" ile ilgili tüm olası eşleşmeleri bulmalı, her biri için alaka puanı hesaplamalı ve ardından bunları sıralamalıdır. Dizin içindeki çok sayıda aday arasında yapılan bu puanlama ve sıralama işlemi, sonuçta yalnızca 50 belge alınsa da hesaplama açısından yoğun bir süreçtir. Terimlerin genişliği, alaka düzeyi puanlamasının ek yüküyle birleştiğinde arama aşamasını daha maliyetli hale getirir.

Coğrafi sorgular

Coğrafi sorgularla ilgili ücretler, sorgunun karmaşıklığı, kullanılan özel koşullar ve sıralama ile ilgili coğrafi dizindeki tüm verilerin taranması için gereken kaynaklara göre belirlenir.

Aşağıdaki tabloda, bir harita uygulaması için coğrafi sorguların yürütülmesiyle ilişkili ücretler açıklanmaktadır. Bu örnekte, her biri 1 KiB olan ve önemli yerleri temsil eden 1.000.000 dokümanlık bir koleksiyon ve yaklaşık 60 MiB'lik bir coğrafi dizin boyutu olduğu varsayılmaktadır.

Sorgu Kod örneği Sorgu Başına Tahmini Okuma Birimi Tüketimi Tahmini Maliyetler (bölge: ABD doları cinsinden us-central1)
En fazla 10 km içindeki tüm ilgi çekici yerleri bul ve 10 eşleşme döndür.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 10000
    }}})

Toplam 16 okuma birimi.

Coğrafi sorgu için 6 okuma birimi ve döndürülen belgeler için 10 ek birim temel alınmıştır.

Bir milyon sorgu başına 0,80 ABD doları
Maksimum 100 km mesafedeki tüm önemli yerleri bul ve 1.000 eşleşme arasından en yakın ilk 10 önemli yeri döndür.
db.pois.find(
  {location: {
    $near: {
      $geometry: <point>,
      $maxDistance: 100000
    }}}).limit(10)

Toplam 19 okuma birimi.

Coğrafi sorgu için 9 okuma birimi ve döndürülen belgeler için 10 ek birim temel alınmıştır.

Bir milyon sorgu başına 0,95 ABD doları

Bu örneklerde, farklı sorgu kalıplarının maliyetleri nasıl etkilediği gösterilmektedir:

  • 10 km yarıçaplı sorgu: Bu sorgu, daha küçük bir coğrafi alanı tarar. Bu 10 km yarıçap içinde yalnızca 10 eşleşme bulduğundan, sorgu motorunun bu noktaları mesafeye göre tanımlamak ve sıralamak için daha az çalışması gerekir ($near bunu örtülü olarak yapar). Bu durum, 6 okuma birimiyle daha düşük bir dizin tarama maliyetine yol açar.
  • 100 km yarıçaplı sorgu: Bu sorgu çok daha geniş bir alanı kapsar. Sorgu,100 km yarıçap içinde 1.000 olası eşleşme buluyor. En yakın 10 nokta isteğini karşılamak için sorgu motorunun mesafeleri hesaplaması ve dizindeki çok daha büyük bir aday kümesini (1.000 noktaya kadar) sıralaması gerekir. Bu ek hesaplama çalışması, çok daha fazla noktayı eleyip sıralamak için gereken ek hesaplama çalışmasıdır ve bu nedenle coğrafi sorgu maliyeti, 10 km'lik sorguyla karşılaştırıldığında 10 belge döndürmesine rağmen 9 okuma birimiyle daha yüksektir.

Nokta okuma işlemleri

Puan okumaları için örnek faturalandırma:

  • 1 KiB'lik tek bir dokümanın nokta okuması. Tüketim: 1 okuma birimi
  • 4 KiB'lik tek bir dokümanın nokta okuması. Tüketim: 1 okuma birimi
  • 1 MiB boyutundaki tek bir dokümanın nokta okuması. Tüketir: 256 okuma birimi
  • Her biri 1 KiB olan 100 belgenin nokta okuması. Tüketim: 100 okuma birimi

Tarama

Aşağıdaki örneklerde, dokümanları tarayan veya dizin girişlerini tarayan senaryolar yer almaktadır.

Belge Tarama

  • Her biri 1 KiB olan 100 dokümanı tarayan sorgu. Tüketim: 25 okuma birimi

Tarama dizinleri

Bayt cinsinden tarama maliyeti, taranan öğenin doküman veya dizin olmasına bakılmaksızın aynıdır. Ancak dizin girişleri genellikle daha küçüktür. Bu nedenle, verileri taramanın daha uygun maliyetli bir yolunu sunabilirler.

  • Her biri 1 KiB olan 100 dizin girişini tarayan sorgu. Tüketir: 25 okuma birimi.
  • Her biri 128 baytlık 100 dizin girişini tarayan sorgu. Tüketim: 4 okuma birimi.

Minimum belge veya dizin girişi boyutu

Bazı durumlarda, bir sorguyu karşılamak için bir belgenin veya dizin girişinin içeriğini okumak gerekli olmayabilir. Bu, bir koleksiyondaki toplam doküman sayısını hesaplama gibi basit sayı sorgularını içerir. Bu durumlarda, taranan her öğe için minimum 32 bayt maliyet uygulanır.

  • Bir koleksiyondaki doküman sayısını öğrenme Sorgu, koleksiyondaki 1.000 öğeyi tarar. Tüketim: 8 okuma birimi.

Tarama ve nokta okumalarının kombinasyonu

Birçok sorgu, bir işlemi karşılamak için tarama ve nokta okuma işlemlerinin bir kombinasyonunu gerçekleştirir.

  • Her biri 256 bayt olan 128 dizin girişini tarayan ve her biri 4 KiB olan 128 dokümanın nokta okumasını gerçekleştiren sorgu. Şunlardan oluşan 136 okuma birimi tüketir:
    • Nokta okumaları için 128 okuma birimi
    • Dizin taramaları için 8 okuma birimi

Sorgu Açıklaması

Query Explain (Sorgu Açıklama), veritabanının sorgularınızı nasıl yürüttüğünü anlamanıza yardımcı olur. Sağlanan ayrıntılar, sorgularınızı optimize etmenize yardımcı olabilir.

Sorgu Açıklama'yı kullanırken aşağıdaki maliyetler geçerlidir:

  • Sorguyu yürüten Query Explain: Sorgu maliyeti uygulanır.
  • Yalnızca planı kullanarak sorguyu açıklama. Tüketim: 1 okuma birimi (sorgunun minimum maliyeti)

Yazma işlemleri

Yazma işlemleri (oluşturma, güncelleme ve silme) işlem sırasında oluşturulan, değiştirilen veya silinen dokümanların ve dizinlerin boyutuna göre ücretlendirilir. Yazma işlemleri, yazma birimlerini tüketir. Yazma birimleri 1 KiB'lik dilimler halinde hesaplanır.

Doküman kimliğine göre güncelleme gibi basit yazma işlemleri yalnızca yazma maliyetine neden olur. İşlemin karşılanması için sorgu gerektiren yazma işlemleri, sorguyla ilişkili okuma maliyetlerine de neden olur.

Aşağıdaki örneklere bakın.

Oluşturur

  • Dizin içermeyen 10 KiB boyutunda yeni bir doküman oluşturun. Tüketim: 10 yazma birimi
  • Koleksiyonda 256 baytlık 1 dizin girişi içeren 1 KiB'lik bir doküman oluşturun. Tüketir: 2 yazma birimi

Güncellemeler

  • 10 KiB boyutundaki bir dokümanı doküman kimliğine göre bulun ve koleksiyonda dizin olmadan güncelleyin. Tüketim: 10 yazma birimi
  • Belge kimliğine göre 1 KiB boyutunda bir belge bulun ve 1 alanı 256 baytlık 1 dizin girişiyle güncelleyin. Tüketim: 3 yazma birimi. Not: Bu durumda bir dizin girişinin güncellenmesi 2 yazma birimi kullanır. Bunlardan biri dizin girişini silmek, diğeri ise yeniden oluşturmak için kullanılır.
  • Doküman kimliğine göre 1 KiB boyutunda bir doküman bulun ve hiçbir şeyi güncellemeyin (değişiklik yok). Tüketir: 1 yazma birimi (minimum yazma maliyetleri)
  • Bir koleksiyondaki 1 KB'lık tüm dokümanları sorgulayın. Bu işlemde 1.000 doküman taranır ve koleksiyonda dizin içermeyen 256 baytlık yeni bir alan eklenir: 1.000 okuma birimi ve 1.000 yazma birimi.

Silme işlemleri

  • Koleksiyonda 1 dizini olan 1 KB'lık bir dokümanı silme Tüketir: 2 yazma birimi
  • Koleksiyonda dizinleri olmayan 1 KiB'lik bir dokümanı silme Tüketir: 1 yazma birimi

Dizin derlemeleri

Dizin oluşturma işlemleri, oluşturma işlemi sırasında oluşturulan veya değiştirilen dizin girişleri için ücretlendirilir. Bu maliyetler, bir dizin tanımı eklendiğinde veya kaldırıldığında ortaya çıkar. Dizin girişleri, 1 KiB başına 1 yazma birimiyle sonuçlanan yazma işlemleriyle aynı şekilde faturalandırılır.

  • 500 doküman içeren bir koleksiyon için yeni bir dizin oluşturun. Oluşturulan dizin girişlerinin her biri 1 KiB'dir. 500 yazma birimi tüketir.
  • 500 belge içeren bir koleksiyonun mevcut dizinini silme: Silinen dizin girişlerinin her biri 1 KiB'tır. 500 yazma birimi tüketir.