Fiyatlandırma örnekleri

Bu sayfada, en yaygın senaryolardan bazılarında faturalandırma birimlerinin nasıl hesaplandığına dair örnekler yer alır. Her sorgunun, sorgu planı, verilerin şekli ve mevcut 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 dayalı olarak bir veri aralığını taramayı gerektirir. Okuma işlemleri, okuma birimlerini tüketir. Aşağıdaki örnekleri inceleyin.

Tam metin arama sorgularının ücretleri, metin dizininde arama yapma maliyeti ile dokümanları alma maliyeti arasında ayrım yapar. 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 bağlıdır.

Aşağıdaki tabloda, bir fidanlığın e-ticaret ürün kataloğu için tam metin arama sorguları yürütmeyle ilişkili ücretler açıklanmaktadır. Bu örnekte, bir koleksiyonda 200.000 ürün listelemesi olduğu, her ürün listeleme dokümanının 2 KiB olduğu ve buna karşılık gelen metin arama dizini boyutunun yaklaşık 100 MiB olduğu varsayılmaktadır.

Sorgu Kod Örneği Sorgu Başına Tüketilen Tahmini Okuma Birimi Sayısı Tahmini Maliyetler (bölge: us-central1, ABD doları cinsinden)
Nadir bulunan "kuru su" istiflenebilir düz tepsi ürünü için yapılan arama sonucunda 3 belge getirilir.
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 dokümanlar için 3 ek birim temel alınmıştır.

Milyon sorgu başına 0,50 ABD doları
Tüm iç mekan narenciye ağaçlarını arayarak 36 dokümanı alır.
db.products.find(
  {$text: {$search: '"indoor" "citrus" "tree"'}}
);

Toplam 42 okuma birimi

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

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 en alakalı 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 dokümanlar için 50 ek birim temel alınmıştır.

Milyon sorgu başına 3,75 ABD doları

Aşağıdaki ö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çerir. Sorgu motorunun jeton yakınlığını ve sırasını kontrol etmesi gerektiğinden kelime öbeği aramaları daha karmaşıktır. Bu da arama aşaması için 7 okuma birimine katkıda bulunur. Eşleşen doküman sayısı çok az olduğundan doküman alma maliyeti düşüktür.
  • "indoor" "citrus" "tree" sorgusu üç ayrı terimi arar. Terim başına karmaşıklığı kelime öbeği aramasına göre biraz daha az olsa da birden fazla jetonun aranmasını gerektirir. "Kuru su" örneğine kıyasla biraz daha düşük bir arama dizini tarama maliyetine (6 okuma birimi) sahiptir ancak 36 doküman döndürülür ve bu da toplam maliyeti artırır.
  • Balkon saksısı sorgusu, 25 birimle en yüksek tam metin arama maliyetine sahiptir. Bunun temel nedeni, birçok dokümanla eşleşen terimlerde sonuçların alaka düzeyine (.sort({score: {$meta: "textScore"}})) göre sıralanmasını istemesidir. Sorgu motoru, en alakalı 50 sonucu belirlemek için "balkon" veya "saksı" ile ilgili tüm potansiyel eşleşmeleri bulmalı, her biri için alaka düzeyi puanı hesaplamalı ve ardından bunları sıralamalıdır. Dizindeki çok sayıda aday arasında yapılan bu puanlama ve sıralama işlemi, sonuçta yalnızca 50 belge alınsa bile hesaplama açısından yoğun bir işlemdir. Terimlerin genişliği ve alaka düzeyi puanlamasının ek yükü, arama aşamasını daha maliyetli hale getirir.

Coğrafi Sorgular

Coğrafi sorgular için ücretler, sorgunun karmaşıklığına, kullanılan belirli koşullara ve sıralamaya, ayrıca ilgili coğrafi dizindeki tüm verileri taramak 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, önemli yerleri temsil eden 1.000.000 dokümandan oluşan bir koleksiyon olduğu, her önemli yer dokümanının 1 KiB olduğu ve buna karşılık gelen coğrafi dizin boyutunun yaklaşık 60 MiB olduğu varsayılmaktadır.

Sorgu Kod Örneği Sorgu Başına Tüketilen Tahmini Okuma Birimi Sayısı Tahmini Maliyetler (bölge: us-central1, ABD doları cinsinden)
En fazla 10 km mesafedeki tüm önemli yerleri bulup 10 eşleşme döndürü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 dokümanlar için 10 ek birim temel alınır.

Milyon sorgu başına 0,80 ABD doları
Maksimum 100 km mesafedeki tüm önemli yerleri bulun ve 1.000 eşleşme arasından en yakın 10 önemli yeri döndürün.
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 dokümanlar için 10 ek birim temel alınır.

Milyon sorgu başına 0,95 ABD doları

Aşağıdaki örneklerde, farklı sorgu kalıplarının maliyetleri nasıl etkilediği gösterilmektedir:

  • 10 km yarıçap sorgusu: Bu sorgu daha küçük bir coğrafi alanı tarar. Sorgu motoru, bu 10 km'lik yarıçap içinde yalnızca 10 eşleşme bulduğundan, bu noktaları tanımlamak ve mesafeye göre sıralamak için daha az işlem yapması gerekir ($near işlevinin dolaylı olarak yaptığı gibi). Bu, 6 okuma birimiyle daha düşük bir dizin tarama maliyeti sağlar.
  • 100 km Yarıçap Sorgusu: Bu sorgu çok daha geniş bir alanı kapsar. Sorgu,100 km'lik yarıçap içinde 1.000 potansiyel eşleşme bulur. Sorgu motoru, en yakın 10 noktayı bulma isteğini yerine getirmek için dizindeki çok daha büyük bir aday kümesi (1.000 noktaya kadar) içindeki mesafeleri hesaplamalı ve sıralamalıdır. Çok daha fazla noktayı eleyip sıralamak için yapılan bu ek hesaplama işlemi, coğrafi sorgu maliyetinin 10 km'lik sorguya kıyasla daha yüksek (9 okuma birimi) olmasına neden olur. Bu sorgu da yalnızca 10 doküman döndürür.

Nokta okumaları

Nokta okuma için örnek faturalandırma:

  • Tek bir 1 KiB belgenin nokta okuması. Tüketim: 1 okuma birimi
  • Tek bir 4 KiB belgenin nokta okuması. Tüketim: 1 okuma birimi
  • Tek bir 1 MiB belgenin nokta okuması. Tüketim: 256 okuma birimi
  • Her biri 1 KiB olan 100 belgenin nokta okuma işlemi. Tüketim: 100 okuma birimi

Tarama

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

Belgeleri Tarama

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

Dizinler taranıyor

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, genellikle verileri taramak için daha uygun maliyetli bir yöntem sunabilirler.

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

Minimum doküman veya dizin girişi boyutu

Bazı durumlarda, bir sorguyu karşılamak için bir dokümanın veya dizin girişinin içeriğini okumak gerekmeyebilir. Bu, bir koleksiyondaki toplam belge sayısını sayma gibi basit sayım sorgularını içerir. Bu gibi durumlarda, taranan öğe başına minimum 32 baytlık bir maliyet uygulanır.

  • Bir koleksiyondaki belge sayısını hesaplama Sorgu, koleksiyondaki 1.000 öğeyi tarar. 8 okuma birimi tüketir.

Tarama ve nokta okumalarının kombinasyonu

Birçok sorgu, bir işlemi gerçekleştirmek için tarama ve nokta okuma işlemlerini bir arada kullanır.

  • 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. Şu bileşenlerden 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, 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 özelliğini kullanırken aşağıdaki maliyetler geçerlidir:

  • Sorguyu yürüten Query Explain: Sorgu maliyeti geçerlidir.
  • Yalnızca plan kullanma seçeneğiyle Query Explain. Tüketim: 1 okuma birimi (bir 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şlemlerinde yalnızca yazma maliyeti uygulanır. İşlemi gerçekleştirmek için sorgu gerektiren yazma işlemlerinde, sorguyla ilişkili okuma maliyetleri de eklenir.

Aşağıdaki örnekleri inceleyin.

Oluşturur

  • Dizini olmayan 10 KiB'lık yeni bir doküman oluşturun. Tüketim: 10 yazma birimi
  • Koleksiyonda 256 baytlık 1 dizin girişi içeren 1 KiB'lık bir doküman oluşturun. Tüketilen yazma birimi: 2

Güncellemeler

  • Belge kimliğine göre 10 KiB'lık bir belge bulun ve koleksiyonda dizin olmadan güncelleyin. Tüketim: 10 yazma birimi
  • Belge kimliğine göre 1 KiB'lık bir belgeyi bulma ve 256 baytlık 1 dizin girişiyle 1 alanı güncelleme. Kullanılan: 3 yazma birimi. Not: Bu durumda bir dizin girişini güncellemek için 2 yazma birimi kullanılı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'lık bir doküman bulma ve hiçbir şeyi güncellememe (değişiklik yok). 1 yazma birimi (minimum yazma maliyeti) tüketir.
  • Bir koleksiyondaki 1 KiB boyutundaki tüm dokümanları sorgulama (1.000 doküman taranır) ve koleksiyona dizini olmayan yeni bir 256 baytlık alan ekleme: 1.000 okuma birimi ve 1.000 yazma birimi.

Silme işlemleri

  • Koleksiyonda 1 dizini olan 1 KiB'lık bir dokümanı silme. Kullanılan: 2 yazma birimi
  • Koleksiyonda dizini olmayan 1 KiB'lık bir dokümanı silme Tüketim: 1 yazma birimi

Dizin derlemeleri

Dizin derlemeleri, derleme 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, yazma işlemleriyle aynı şekilde faturalandırılır ve 1 KiB başına 1 yazma birimi ücreti alını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 doküman içeren bir koleksiyonun mevcut dizinini silme. Silinen dizin girişlerinin her biri 1 KiB'dir. 500 yazma birimi tüketir.