Bu bölümde Cloud Firestore Enterprise sürümünde dizine ekleme açıklanmaktadır. Cloud Firestore Enterprise sürümü varsayılan olarak dizin oluşturmaz. Veritabanı performansını artırmak için en sık kullandığınız sorgularla ilgili dizinler oluşturun.
Dizinlerin, veritabanı performansı üzerinde büyük etkisi vardır. Bir sorgu için dizin varsa veritabanı, taranması gereken veri miktarını ve sonuçları sıralamak için gereken işi azaltarak sonuçları verimli bir şekilde döndürebilir. Ancak dizin girişleri, depolama maliyetlerini ve dizine eklenmiş alanlarda yazma işlemi sırasında yapılan iş miktarını artırır.
Sürümler arasındaki farklar
Aşağıdaki tabloda, Cloud Firestore Standard Edition ile Cloud Firestore Enterprise Edition arasındaki başlıca dizine ekleme farklılıklarına genel bir bakış sunulmaktadır.
| Özellik | Cloud Firestore Standard sürümü | Cloud Firestore Enterprise sürümü |
|---|---|---|
| Dizine ekleme şartı | Tüm sorguların yürütülmesi için dizin gerekir. Sorgular genellikle bu şart nedeniyle iyi performans gösterir. | Sorgular için dizin gerekmez. Dizinlenmemiş okumalar mümkündür ve prototip oluşturma önündeki bir engel kaldırılır. |
| Otomatik dizine ekleme | Varsayılan olarak, dokümanlardaki tüm alanlar için otomatik olarak tek alanlı dizinler oluşturulur. | Otomatik dizinler yoktur. Tüm dizinleri manuel olarak yönetmeniz gerekir. |
| Dizin yoğunluğu | Varsayılan olarak seyrek. Bir koleksiyon grubundaki belge yalnızca dizine eklenmiş her alan için bir değer içeriyorsa dizine eklenir. | Varsayılan olarak seyrek olmayan. Koleksiyon grubundaki tüm dokümanlar dizine eklenir.
Değeri olmayan dizine eklenmiş alanlar NULL olarak ayarlanır. Davranış, seyrek dizin seçeneğiyle değiştirilebilir. |
| Desteklenen dizin türleri ve seçenekleri |
|
|
Dizin tanımı ve yapısı
Bir dizin şunlardan oluşur:
- koleksiyon kimliği
- Belirli bir koleksiyondaki alanların listesi
- Her alan için artan veya azalan bir sıra
Dizin, sparse (seyrek) veya unique (benzersiz) seçeneklerini de etkinleştirebilir.
Dizin sıralaması
Her alanın sırası ve sıralama yönü, indeksi benzersiz şekilde tanımlar. Örneğin, aşağıdaki dizinler iki ayrı dizindir ve birbirinin yerine kullanılamaz:
| Toplama | Alanlar |
|---|---|
| şehirler | ülke (artan), nüfus (azalan) |
| şehirler | nüfus (azalan), ülke (artan), |
Bir sorguyu desteklemek için dizin oluştururken alanları sorgunuzdaki sırayla ekleyin.
Dizin yoğunluğu
Dizin girişleri, varsayılan olarak bir koleksiyondaki tüm dokümanlardan gelen verileri depolar. Bu, seyrek olmayan dizin olarak bilinir. Bir doküman, dizinde belirtilen alanlardan herhangi birini içerip içermediğine bakılmaksızın dizine eklenir. Dizin girişleri oluşturulurken mevcut olmayan alanlar NULL değerine sahipmiş gibi kabul edilir. Bu davranışı değiştirmek için dizini seyrek dizin olarak tanımlayabilirsiniz.
Seyrek dizinler
Seyrek dizin, koleksiyondaki yalnızca dizine eklenmiş alanlardan en az biri için değer (null dahil) içeren belgeleri dizine ekler. Seyrek dizin, depolama maliyetlerini azaltır ve performansı artırabilir.
Benzersiz dizinler
Dizin oluşturulan alanlar için benzersiz değerleri zorunlu kılmak üzere benzersiz dizin seçeneğini ayarlayın. Birden fazla alandaki dizinler için her değer kombinasyonu, dizinde benzersiz olmalıdır. Veritabanı, yinelenen değerlere sahip dizin girişleri oluşturmaya çalışan tüm güncelleme ve ekleme işlemlerini reddeder. Dizine eklenen alanların verileri yinelenen değerler içeriyorsa ve benzersiz bir dizin oluşturmaya çalışırsanız dizin oluşturma işlemi, işlem ayrıntılarında hata mesajıyla birlikte başarısız olur.
Benzersiz dizinde bulunmayan alanlar
Benzersiz dizin için alanları eksik olan bir belge eklerseniz dizin, eksik alanlar için null değerlerini ayarlar. Sonuç olarak elde edilen dizin girişi benzersiz olmalıdır. Aksi takdirde işlem başarısız olur.
Örneğin, şu dizinde:
| Toplama | Dizine eklenen alanlar | Sorgu kapsamı |
|---|---|---|
| şehirler | ad (artan) | Toplama |
Koleksiyona {"abbreviation": "LA"} dokümanını eklerseniz benzersiz dizin, name değeri null olarak ayarlanmış bir giriş oluşturur. Ardından {"abbreviation": "NYC"} belgesini eklemeye çalışırsanız benzersiz dizin için ortaya çıkan giriş aynı olduğundan işlem başarısız olur.
Aynı davranış, birden fazla alanı olan benzersiz dizinler için de geçerlidir.
Bir doküman oluşturulurken veya güncellenirken dizine eklenmiş alanlar eksikse null olarak ayarlanır ve sonuçtaki dizin girişi, dizinde benzersiz olmalıdır.
Dizin oluşturma hatalarını giderme
Dizinlerinizi yönetirken dizin oluşturma hatalarıyla karşılaşabilirsiniz. Veritabanı verilerle ilgili bir sorunla karşılaşırsa dizine ekleme işlemi başarısız olabilir. Dizin oluşturma işlemleri aşağıdaki nedenlerle başarısız olabilir:
- Bir dizin sınırına ulaştınız. Örneğin, işlem, belge başına maksimum dizin girişi sayısına ulaşmış olabilir. Dizin oluşturma işlemi başarısız olursa hata mesajı görürsünüz. Bir dizin sınırına ulaşmadıysanız dizinleme işlemini yeniden deneyin.
- Benzersiz dizin seçeneğini ayarladığınızda dizine eklenmiş alanların verileri yinelenen dizin girişleri oluşturur. Devam etmek için verilerdeki yinelenen değer kombinasyonlarını kaldırın.
Sırada ne var?
Dizin oluşturma ve yönetme hakkında bilgi edinin.