欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

Cloud Firestore'daki dizin türleri

Dizinler, bir veritabanının performansında önemli bir faktördür. Bir kitaptaki konuları sayfa numaralarına eşleyen bir kitabın dizini gibi, bir veritabanı dizini de bir veritabanındaki öğeleri veritabanındaki konumlarına eşler. Bir veritabanına sorgu gönderdiğinizde, veritabanı, istediğiniz öğelerin konumlarını hızlı bir şekilde aramak için bir dizin kullanabilir.

Bu sayfada, Cloud Firestore'un kullandığı iki tür dizin açıklanmaktadır: tek alanlı dizinler ve bileşik dizinler .

Her sorgunun arkasında bir dizin

Bir sorgu için dizin yoksa, çoğu veritabanları içerikleri öğe madde tarar; bu, veritabanı büyüdükçe daha da yavaşlayan yavaş bir işlemdir. Cloud Firestore, tüm sorgular için dizinler kullanarak yüksek sorgu performansını garanti eder. Sonuç olarak, sorgu performansı, veritabanındaki öğe sayısına değil, sonuç kümesinin boyutuna bağlıdır.

Daha az dizin yönetimi, daha fazla uygulama geliştirme

Cloud Firestore, dizinleri yönetmek için harcamanız gereken süreyi azaltan özellikler içerir. En temel sorgular için gereken dizinler sizin için otomatik olarak oluşturulur. Uygulamanızı kullanıp test ederken Cloud Firestore, uygulamanızın gerektirdiği ek dizinleri belirlemenize ve oluşturmanıza yardımcı olur.

Dizin türleri

Cloud Firestore, iki tür dizin kullanır: tek alan ve bileşik . Dizine alınan alan sayısının yanı sıra, tek alanlı ve bileşik dizinler bunları nasıl yönettiğinize göre farklılık gösterir.

Tek alan dizinleri

Tek alan dizini, belirli bir alanı içeren bir koleksiyondaki tüm belgelerin sıralanmış bir eşlemesini depolar. Tek alanlı bir dizindeki her giriş, belirli bir alan için bir belgenin değerini ve belgenin veritabanındaki konumunu kaydeder. Cloud Firestore, birçok temel sorguyu gerçekleştirmek için bu dizinleri kullanır. Veritabanınızın otomatik dizin oluşturma ayarlarını ve dizin muafiyetlerini yapılandırarak tek alan dizinlerini yönetirsiniz.

Otomatik indeksleme

Varsayılan olarak Cloud Firestore, bir belgedeki her alan ve bir haritadaki her bir alt alan için otomatik olarak tek alanlı dizinler tutar. Cloud Firestore, tek alanlı dizinler için aşağıdaki varsayılan ayarları kullanır:

  • Her dizi olmayan ve harita olmayan alan için Cloud Firestore, biri artan modda ve diğeri azalan modda olmak üzere iki koleksiyon kapsamı tek alan dizini tanımlar.

  • Cloud Firestore, her harita alanı için, haritadaki dizi olmayan ve harita olmayan her alt alan için bir koleksiyon kapsamı artan dizini ve bir azalan dizin oluşturur.

  • Cloud Firestore, bir belgedeki her dizi alanı için koleksiyon kapsamında dizi içeren bir dizini oluşturur ve sürdürür.

  • Koleksiyon grubu kapsamına sahip tek alan dizinleri varsayılan olarak korunmaz.

Tek alanlı dizin muafiyetleri

Tek alanlı bir dizin muafiyeti oluşturarak bir alanı otomatik dizin oluşturma ayarlarınızdan muaf tutabilirsiniz. Bir dizin oluşturma muafiyeti, veritabanı genelindeki otomatik dizin ayarlarını geçersiz kılar. Bir muafiyet, otomatik dizin oluşturma ayarlarınızın aksi takdirde otomatik dizin oluşturmanın etkinleştireceği tek alanlı bir dizini devre dışı bırakacağı veya devre dışı bırakacağı tek alanlı bir dizini etkinleştirebilir. Muafiyetlerin faydalı olabileceği durumlar için, indeksleme en iyi uygulamalarına bakın.

Bir harita alanı için tek alanlı bir dizin muafiyeti oluşturursanız, haritanın alt alanları bu ayarları devralır. Ancak, belirli alt alanlar için tek alanlı dizin muafiyetleri tanımlayabilirsiniz. Bir alt alan için bir muafiyeti silerseniz, alt alan, varsa üst öğesinin muafiyet ayarlarını veya herhangi bir ebeveyn muafiyeti yoksa veritabanı genelindeki ayarları devralır.

Tek alanlı dizin muafiyetleri oluşturmak ve yönetmek için bkz . Cloud Firestore'da Dizinleri Yönetme .

Bileşik dizinler

Bileşik dizin, dizine eklenecek alanların sıralı listesine dayalı olarak bir koleksiyondaki tüm belgelerin sıralanmış bir eşlemesini depolar.

Cloud Firestore, tek alanlı dizinler tarafından halihazırda desteklenmeyen sorguları desteklemek için bileşik dizinler kullanır.

Cloud Firestore, çok sayıda olası alan kombinasyonu nedeniyle tek alanlı dizinlerde olduğu gibi otomatik olarak bileşik dizinler oluşturmaz. Bunun yerine Cloud Firestore, uygulamanızı oluştururken gerekli bileşik dizinleri belirlemenize ve oluşturmanıza yardımcı olur.

Yukarıdaki sorguyu önce gerekli dizini oluşturmadan denerseniz Cloud Firestore, eksik dizini oluşturmak için izleyebileceğiniz bir bağlantı içeren bir hata mesajı verir. Bu, bir dizin tarafından desteklenmeyen bir sorgu denediğinizde gerçekleşir. Konsolu veya Firebase CLI'yi kullanarak bileşik dizinleri manuel olarak da tanımlayabilir ve yönetebilirsiniz. Bileşik dizinler oluşturma ve yönetme hakkında daha fazla bilgi için bkz. Dizinleri Yönetme .

Dizin modları ve sorgu kapsamları

Tek alanlı ve bileşik dizinleri farklı şekilde yapılandırırsınız, ancak her ikisi de dizinleriniz için dizin modları ve sorgu kapsamları yapılandırmanızı gerektirir.

Dizin modları

Bir indeks tanımladığınızda, indekslenen her alan için bir indeks modu seçersiniz. Her alanın dizin modu, o alandaki belirli sorgu yan tümcelerini destekler. Aşağıdaki indeks modlarından birini seçebilirsiniz:

dizin modu Tanım
artan Alandaki < , <= , == , >= , > , != , in ve not-in , sorgu cümleciklerini destekler ve sonuçları bu alan değerine göre artan düzende sıralamayı destekler.
Azalan Alandaki < , <= , == , >= , > , != , in , ve not-in sorgu cümleciklerini destekler ve sonuçları bu alan değerine göre azalan düzende sıralamayı destekler.
dizi-içerir Alandaki array-contains ve array-contains-any sorgu cümlesini destekler.

Sorgu kapsamları

Her dizin, bir koleksiyona veya bir koleksiyon grubuna göre kapsamlandırılır. Bu, dizinin sorgu kapsamı olarak bilinir:

Koleksiyon kapsamı
Cloud Firestore, varsayılan olarak koleksiyon kapsamına sahip dizinler oluşturur. Bu dizinler, tek bir koleksiyondan sonuç döndüren sorguları destekler.

Koleksiyon grubu kapsamı
Bir koleksiyon grubu, aynı koleksiyon kimliğine sahip tüm koleksiyonları içerir. Bir koleksiyon grubundan filtrelenmiş veya sıralanmış sonuçlar döndüren bir koleksiyon grubu sorgusu çalıştırmak için koleksiyon grubu kapsamına sahip ilgili bir dizin oluşturmanız gerekir.

İndeksleme örneği

Cloud Firestore, sizin için otomatik olarak tek alanlı dizinler oluşturarak uygulamanızın en temel veritabanı sorgularını hızla desteklemesini sağlar. Tek alanlı dizinler, alan değerlerine ve < , <= , == , >= , > , ve in karşılaştırıcılarına dayalı basit sorgular gerçekleştirmenize olanak tanır. Dizi alanları için, array-contains ve array-contains-any sorguları gerçekleştirmenize izin verirler.

Örneklemek için, aşağıdaki örnekleri dizin oluşturma açısından inceleyin. Aşağıdaki snippet, bir cities koleksiyonunda birkaç city belgesi oluşturur ve her belge için name , state , country , capital , population ve tags alanlarını ayarlar:

var citiesRef = db.collection("cities");

citiesRef.doc("SF").set({
    name: "San Francisco", state: "CA", country: "USA",
    capital: false, population: 860000,
    regions: ["west_coast", "norcal"] });
citiesRef.doc("LA").set({
    name: "Los Angeles", state: "CA", country: "USA",
    capital: false, population: 3900000,
    regions: ["west_coast", "socal"] });
citiesRef.doc("DC").set({
    name: "Washington, D.C.", state: null, country: "USA",
    capital: true, population: 680000,
    regions: ["east_coast"] });
citiesRef.doc("TOK").set({
    name: "Tokyo", state: null, country: "Japan",
    capital: true, population: 9000000,
    regions: ["kanto", "honshu"] });
citiesRef.doc("BJ").set({
    name: "Beijing", state: null, country: "China",
    capital: true, population: 21500000,
    regions: ["jingjinji", "hebei"] });

Varsayılan otomatik dizin oluşturma ayarlarını varsayarsak, Cloud Firestore, dizi olmayan alan başına bir artan tek alan dizini, dizi olmayan alan başına azalan bir tek alan dizini ve dizi alanı için bir dizi içeren tek alan dizini günceller. Aşağıdaki tablodaki her satır, tek alanlı bir dizindeki bir girişi temsil eder:

Toplamak Alan dizine eklendi Sorgu kapsamı
şehirler ad Toplamak
şehirler durumu Toplamak
şehirler ülke Toplamak
şehirler sermaye Toplamak
şehirler popülasyonu Toplamak
şehirler ad Toplamak
şehirler durumu Toplamak
şehirler ülke Toplamak
şehirler sermaye Toplamak
şehirler nüfus Toplamak
şehirler array-contains bölgeler Toplamak

Tek alan dizinleri tarafından desteklenen sorgular

Otomatik olarak oluşturulan bu tek alanlı dizinleri kullanarak aşağıdaki gibi basit sorgular çalıştırabilirsiniz:

const stateQuery = citiesRef.where("state", "==", "CA");
const populationQuery = citiesRef.where("population", "<", 100000);
const nameQuery = citiesRef.where("name", ">=", "San Francisco");

Ayrıca in eşitlik ( == ) sorgularında da oluşturabilirsiniz:

citiesRef.where('country', 'in', ["USA", "Japan", "China"])

// Compound equality queries
citiesRef.where("state", "==", "CO").where("name", "==", "Denver")
citiesRef.where("country", "==", "USA")
         .where("capital", "==", false)
         .where("state", "==", "CA")
         .where("population", "==", 860000)

Aralık karşılaştırması ( < , <= , > veya >= ) kullanan bir bileşik sorgu çalıştırmanız veya farklı bir alana göre sıralamanız gerekiyorsa, o sorgu için bir bileşik dizin oluşturmanız gerekir.

array-contains dizini, regions dizi alanını sorgulamanıza olanak tanır:

citiesRef.where("regions", "array-contains", "west_coast")
// array-contains-any and array-contains use the same indexes
citiesRef.where("regions", "array-contains-any", ["west_coast", "east_coast"])

Bileşik dizinler tarafından desteklenen sorgular

Cloud Firestore, tek alanlı dizinler tarafından halihazırda desteklenmeyen bileşik sorguları desteklemek için bileşik dizinler kullanır. Örneğin, aşağıdaki sorgular için bir bileşik dizine ihtiyacınız olacaktır:

citiesRef.where("country", "==", "USA").orderBy("population", "asc")
citiesRef.where("country", "==", "USA").where("population", "<", 3800000)
citiesRef.where("country", "==", "USA").where("population", ">", 690000)
// in and == clauses use the same index
citiesRef.where("country", "in", ["USA", "Japan", "China"])
         .where("population", ">", 690000)

Bu sorgular, aşağıdaki bileşik dizini gerektirir. Sorgu country alanı için bir eşitlik ( == veya in ) kullandığından, bu alan için artan veya azalan bir dizin modu kullanabilirsiniz. Varsayılan olarak, eşitsizlik yan tümceleri, eşitsizlik yan tümcesindeki alana dayalı olarak artan bir sıralama düzeni uygular.

Toplamak Alanlar dizine eklendi Sorgu kapsamı
şehirler (veya ) ülke, popülasyon Toplamak

Aynı sorguları azalan bir sıralama düzeniyle çalıştırmak için population için azalan yönde ek bir bileşik dizine ihtiyacınız vardır:

citiesRef.where("country", "==", "USA").orderBy("population", "desc")

citiesRef.where("country", "==", "USA")
         .where("population", "<", 3800000)
         .orderBy("population", "desc")

citiesRef.where("country", "==", "USA")
         .where("population", ">", 690000)
         .orderBy("population", "desc")

citiesRef.where("country", "in", ["USA", "Japan", "China"])
         .where("population", ">", 690000)
         .orderBy("population", "desc")
Toplamak Alanlar dizine eklendi Sorgu kapsamı
şehirler ülke, nüfus Toplamak
şehirler ülke , nüfus Toplamak

Ayrıca, bir array-contains veya array-contains-any bir dizi içerir sorgusunu ek yan tümcelerle birleştirmek için bileşik bir dizin oluşturmanız gerekir.

citiesRef.where("regions", "array-contains", "east_coast")
         .where("capital", "==", true)

// array-contains-any and array-contains use the same index
citiesRef.where("regions", "array-contains-any", ["west_coast", "east_coast"])
         .where("capital", "==", true)
Toplamak Alanlar dizine eklendi Sorgu kapsamı
şehirler dizi içeren etiketler, (veya ) sermaye Toplamak

Koleksiyon grubu dizinleri tarafından desteklenen sorgular

Koleksiyon grubu kapsamına sahip bir dizini göstermek için, bazı city belgelerine bir landmarks alt koleksiyonu eklediğinizi hayal edin:

var citiesRef = db.collection("cities");

citiesRef.doc("SF").collection("landmarks").doc().set({
    name: "Golden Gate Bridge",
    category : "bridge" });
citiesRef.doc("SF").collection("landmarks").doc().set({
    name: "Golden Gate Park",
    category : "park" });

citiesRef.doc("DC").collection("landmarks").doc().set({
    name: "National Gallery of Art",
    category : "museum" });
citiesRef.doc("DC").collection("landmarks").doc().set({
    name: "National Mall",
    category : "park" });

Koleksiyon kapsamıyla birlikte aşağıdaki tek alanlı dizini kullanarak, category alanına dayalı olarak tek bir şehrin landmarks koleksiyonunu sorgulayabilirsiniz:

Toplamak Alanlar dizine eklendi Sorgu kapsamı
görülecek yer (veya ) kategorisi Toplamak
citiesRef.doc("SF").collection("landmarks").where("category", "==", "park")
citiesRef.doc("SF").collection("landmarks").where("category", "in", ["park", "museum"])

Şimdi, tüm şehirlerdeki yer işaretlerini sorgulamakla ilgilendiğinizi hayal edin. Bu sorguyu tüm landmarks koleksiyonlarından oluşan koleksiyon grubunda çalıştırmak için, koleksiyon grubu kapsamına sahip bir landmarks tek alan dizinini etkinleştirmelisiniz:

Toplamak Alanlar dizine eklendi Sorgu kapsamı
görülecek yer (veya ) kategorisi Koleksiyon grubu

Bu dizin etkinleştirildiğinde, landmarks toplama grubunu sorgulayabilirsiniz:

var landmarksGroupRef = db.collectionGroup("landmarks");

landmarksGroupRef.where("category", "==", "park")
landmarksGroupRef.where("category", "in", ["park", "museum"])

Filtrelenmiş veya sıralanmış sonuçlar döndüren bir koleksiyon grubu sorgusu çalıştırmak için, koleksiyon grubu kapsamına sahip ilgili tek alanlı veya bileşik dizini etkinleştirmelisiniz. Sonuçları filtrelemeyen veya sıralamayan koleksiyon grubu sorguları, ek dizin tanımları gerektirmez.

Örneğin, ek bir dizini etkinleştirmeden aşağıdaki koleksiyon grubu sorgusunu çalıştırabilirsiniz:

db.collectionGroup("landmarks").get()

Dizin girişleri

Projenizin yapılandırılmış dizinleri ve bir belgenin yapısı, bir belge için dizin girişlerinin sayısını belirler. Dizin girişleri, dizin girişi sayım sınırına doğru sayılır.

Aşağıdaki örnek, bir belgenin dizin girişlerini gösterir.

Belge

/cities/SF

city_name : "San Francisco"
temperatures : {summer: 67, winter: 55}
neighborhoods : ["Mission", "Downtown", "Marina"]

Tek Alan dizinleri

  • şehir_adı ASC
  • şehir_adı DESC
  • sıcaklıklar.yaz ASC
  • sıcaklıklar.yaz TANIM
  • sıcaklıklar.kış ASC
  • sıcaklıklar.kış DESC
  • mahalleler Dizinin İçeriği (ASC ve DESC)

Bileşik dizinler

  • city_name ASC, mahalleler ARRAY
  • city_name DESC, mahalleler ARRAY

Dizin girişleri

Bu dizin oluşturma yapılandırması, belge için aşağıdaki 18 dizin girişiyle sonuçlanır:

dizin Dizine eklenen veriler
Tek alanlı dizin girişleri
şehir_adı ASC city_name: "San Francisco"
şehir_adı DESC city_name: "San Francisco"
sıcaklıklar.yaz ASC sıcaklıklar.yaz: 67
sıcaklıklar.yaz TANIM sıcaklıklar.yaz: 67
sıcaklıklar.kış ASC sıcaklıklar.kış: 55
sıcaklıklar.kış DESC sıcaklıklar.kış: 55
mahalleler Dizi ASC İçeriyor mahalleler: "Misyon"
mahalleler Dizi DESC İçeriyor mahalleler: "Misyon"
mahalleler Dizi ASC İçeriyor mahalleler: "Şehir merkezi"
mahalleler Dizi DESC İçeriyor mahalleler: "Şehir merkezi"
mahalleler Dizi ASC İçeriyor mahalleler: "Marina"
mahalleler Dizi DESC İçeriyor mahalleler: "Marina"
Bileşik dizin girişleri
city_name ASC, mahalleler ARRAY city_name: "San Francisco", mahalleler: "Misyon"
city_name ASC, mahalleler ARRAY city_name: "San Francisco", mahalleler: "Şehir merkezi"
city_name ASC, mahalleler ARRAY city_name: "San Francisco", mahalleler: "Marina"
city_name DESC, mahalleler ARRAY city_name: "San Francisco", mahalleler: "Misyon"
city_name DESC, mahalleler ARRAY city_name: "San Francisco", mahalleler: "Şehir merkezi"
city_name DESC, mahalleler ARRAY city_name: "San Francisco", mahalleler: "Marina"

Endeksler ve fiyatlandırma

Dizinler, uygulamanızın depolama maliyetlerine katkıda bulunur. Dizinler için depolama boyutunun nasıl hesaplandığı hakkında daha fazla bilgi için bkz. Dizin giriş boyutu .

Dizin birleştirmeden yararlanma

Cloud Firestore, her sorgu için bir dizin kullansa da, sorgu başına mutlaka bir dizin gerektirmez. Birden çok eşitlik ( == ) yan tümcesi ve isteğe bağlı olarak bir orderBy yan tümcesi içeren sorgular için Cloud Firestore, mevcut dizinleri yeniden kullanabilir. Cloud Firestore, daha büyük eşitlik sorguları için gereken bileşik dizinleri oluşturmak için basit eşitlik filtreleri için dizinleri birleştirebilir.

Dizin birleştirmeden yararlanabileceğiniz durumları belirleyerek dizin oluşturma maliyetlerini azaltabilirsiniz. Örneğin, bir restoran derecelendirme uygulaması için bir restaurants koleksiyonu hayal edin:

  • restoranları

    • hamburger kekik

      name : "Burger Thyme"
      category : "burgers"
      city : "San Francisco"
      editors_pick : true
      star_rating : 4

Şimdi, bu uygulamanın aşağıdakilere benzer sorgular kullandığını hayal edin. Uygulamanın, her zaman artan star_rating göre sıralama yaparken category , city ve editors_pick için eşitlik maddeleri kombinasyonlarını kullandığına dikkat edin:

db.collection("restaurants").where("category", "==", "burgers")
                            .orderBy("star_rating")

db.collection("restaurants").where("city", "==", "San Francisco")
                            .orderBy("star_rating")

db.collection("restaurants").where("category", "==", "burgers")
                            .where("city", "==", "San Francisco")
                            .orderBy("star_rating")

db.collection("restaurants").where("category", "==", "burgers")
                            .where("city", "==" "San Francisco")
                            .where("editors_pick", "==", true )
                            .orderBy("star_rating")

Her sorgu için bir dizin oluşturabilirsiniz:

Toplamak Alanlar dizine eklendi Sorgu kapsamı
restoranlar kategorisi, star_rating Toplamak
restoranlar city, star_rating Toplamak
restoranlar kategorisi, city, star_rating Toplamak
restoranlar kategorisi, city, editors_pick, star_rating Toplamak

Daha iyi bir çözüm olarak, Cloud Firestore'un eşitlik maddeleri için dizinleri birleştirme yeteneğinden yararlanarak dizin sayısını azaltabilirsiniz:

Toplamak Alanlar dizine eklendi Sorgu kapsamı
restoranlar kategorisi, star_rating Toplamak
restoranlar city, star_rating Toplamak
restoranlar editors_pick, star_rating Toplamak

Bu dizin kümesi yalnızca daha küçük olmakla kalmaz, aynı zamanda ek bir sorguyu da destekler:

db.collection("restaurants").where("editors_pick", "==", true)
                            .orderBy("star_rating")

Dizine ekleme sınırları

Dizinler için aşağıdaki sınırlar geçerlidir. Tüm kotalar ve sınırlar için bkz. Kotalar ve Sınırlar .

sınır Detaylar
Bir veritabanı için maksimum bileşik dizin sayısı 200
Bir veritabanı için maksimum tek alanlı yapılandırma sayısı

200

Toplam 200 alan düzeyinde yapılandırmaya izin verilir. Bir alan konfigürasyonu, aynı alan için birden fazla konfigürasyon içerebilir. Örneğin, tek alanlı dizin oluşturma muafiyeti ve aynı alandaki bir TTL ilkesi, sınıra doğru bir alan yapılandırması olarak sayılır.

Her belge için maksimum dizin girişi sayısı

40.000

Dizin girişlerinin sayısı, bir belge için aşağıdakilerin toplamıdır:

  • Tek alanlı dizin girişlerinin sayısı
  • Bileşik dizin girişlerinin sayısı

Cloud Firestore'un bir belgeyi ve bir dizi dizini dizin girişlerine nasıl dönüştürdüğünü görmek için bu dizin girişi sayısı örneğine bakın.

Bileşik dizindeki maksimum alan sayısı 100
Bir dizin girişinin maksimum boyutu

7.5 KiB

Cloud Firestore'un dizin girişi boyutunu nasıl hesapladığını görmek için bkz. dizin girişi boyutu .

Bir belgenin dizin girişlerinin boyutlarının maksimum toplamı

8 MiB

Toplam boyut, bir belge için aşağıdakilerin toplamıdır:

  • Bir belgenin tek alanlı dizin girişlerinin boyutunun toplamı
  • Bir belgenin bileşik dizin girişlerinin boyutunun toplamı
  • Dizine alınmış alan değerinin maksimum boyutu

    1500 bayt

    1500 baytın üzerindeki alan değerleri kısaltılır. Kesilmiş alan değerlerini içeren sorgular tutarsız sonuçlar döndürebilir.

    En iyi uygulamaları dizine ekleme

    Çoğu uygulamada, dizinlerinizi yönetmek için otomatik dizin oluşturmaya ve hata mesajı bağlantılarına güvenebilirsiniz. Ancak, aşağıdaki durumlarda tek alanlı muafiyetler eklemek isteyebilirsiniz:

    Dava Tanım
    Büyük dize alanları

    Sorgulama için kullanmadığınız, genellikle uzun dize değerleri içeren bir dize alanınız varsa, alanı dizine eklemekten muaf tutarak depolama maliyetlerini azaltabilirsiniz.

    Sıralı değerlere sahip belgeler içeren bir koleksiyona yüksek yazma oranları

    Bir koleksiyondaki belgeler arasında zaman damgası gibi sırayla artan veya azalan bir alanı dizine eklerseniz, koleksiyona maksimum yazma hızı saniyede 500 yazma olur. Ardışık değerlere sahip alana dayalı sorgulama yapmazsanız, bu sınırı atlamak için alanı indekslemeden muaf tutabilirsiniz.

    Örneğin, yüksek yazma hızına sahip bir IoT kullanım durumunda, zaman damgası alanına sahip belgeler içeren bir koleksiyon, saniyede 500 yazma sınırına yaklaşabilir.

    TTL alanları

    TTL (yaşam süresi) ilkeleri kullanıyorsanız, TTL alanının bir zaman damgası olması gerektiğini unutmayın. TTL alanlarında dizin oluşturma varsayılan olarak etkindir ve daha yüksek trafik hızlarında performansı etkileyebilir. En iyi uygulama olarak, TTL alanlarınız için tek alan muafiyetleri ekleyin.

    Büyük dizi veya harita alanları

    Büyük dizi veya harita alanları, belge başına 40.000 dizin girişi sınırına yaklaşabilir. Büyük bir dizi veya harita alanına dayalı olarak sorgulama yapmıyorsanız, onu indekslemeden muaf tutmalısınız.