Cloud Firestore, her sorgu için bir dizin gerektirerek sorgu performansını garanti eder. En temel sorgular için gerekli indeksler sizin için otomatik olarak oluşturulur . Uygulamanızı kullandıkça ve test ettikçe Cloud Firestore, uygulamanızın gerektirdiği ek dizinleri oluşturmanıza yardımcı olan hata mesajları oluşturur. Bu sayfada, tek alanlı ve bileşik dizinlerinizi nasıl yöneteceğiniz açıklanmaktadır.
Bir hata mesajı aracılığıyla eksik bir dizin oluşturun
Varolan bir dizinle eşleşmeyen bir aralık yan tümcesiyle bir bileşik sorgu denerseniz, bir hata alırsınız. Hata mesajı, Firebase konsolunda eksik dizini oluşturmak için doğrudan bir bağlantı içerir.
Oluşturulan Firebase konsolu bağlantısını takip edin, otomatik olarak doldurulan bilgileri inceleyin ve Oluştur 'u tıklayın.
Firebase konsolunu kullanın
Firebase konsolundan manuel olarak yeni bir dizin oluşturmak için:
- Firebase konsolunun Cloud Firestore bölümüne gidin.
- Dizinler sekmesine gidin ve Dizin Ekle'yi tıklayın.
- Koleksiyon adını girin ve dizini sıralamak istediğiniz alanları ayarlayın.
- Oluştur'u tıklayın.
Dizinlerin oluşturulması, sorgunun boyutuna bağlı olarak birkaç dakika sürebilir. Oluşturduktan sonra, Bileşik Dizinler bölümünde dizinlerinizi ve durumlarını görebilirsiniz. Hâlâ inşa ediyorlarsa Firebase konsolunda bir bina durum çubuğu bulunur.
Dizinleri kaldır
Bir dizini silmek için:
- Firebase konsolunun Cloud Firestore bölümüne gidin.
- Dizinler sekmesini tıklayın.
- Silmek istediğiniz dizinin üzerine gelin ve içerik menüsünden Sil'i seçin.
- Uyarıdan Sil'i tıklayarak silmek istediğinizi onaylayın.
Firebase CLI'yi kullanın
Dizinleri Firebase CLI ile de dağıtabilirsiniz. Başlamak için proje dizininizde firebase init firestore
çalıştırın. Kurulum sırasında Firebase CLI, varsayılan dizinleri doğru biçimde içeren bir JSON dosyası oluşturur. Daha fazla dizin eklemek için dosyayı düzenleyin ve onu firebase deploy
komutuyla konuşlandırın. Yalnızca dizinleri dağıtmak istiyorsanız --only firestore:indexes
bayrağını ekleyin. Firebase konsolunu kullanarak dizinlerde düzenlemeler yaparsanız, yerel dizinler dosyanızı da güncellediğinizden emin olun. JSON dizin tanımı başvurusuna bakın.
Dizin oluşturma süresi
Bir dizin oluşturmak için Cloud Firestore'un dizini kurması ve ardından dizini mevcut verilerle doldurması gerekir. Dizin oluşturma süresi, kurulum süresi ile dolgu süresinin toplamıdır:
Dizin oluşturmak birkaç dakika sürer. Bir dizin için minimum oluşturma süresi, boş bir veritabanı için bile birkaç dakikadır.
Doldurma süresi, mevcut verilerin ne kadarının yeni dizine ait olduğuna bağlıdır. Dizin tanımıyla eşleşen daha fazla alan değeri, dizini doldurmak için daha uzun sürer.
Dizin oluşturma işlemleri uzun süren işlemlerdir .
Bir dizin oluşturmaya başladıktan sonra Cloud Firestore, işleme benzersiz bir ad atar. İşlem adlarının önüne, projects/[PROJECT_ID]/databases/(default)/operations/
eklenir, örneğin:
projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
Ancak, describe
komutu için bir işlem adı belirlerken öneki atlayabilirsiniz.
Uzun süredir devam eden tüm işlemleri listeleme
Uzun süredir devam eden işlemleri listelemek için gcloud firestore Operations list komutunu kullanın. Bu komut, devam eden ve yakın zamanda tamamlanan işlemleri listeler. İşlemler tamamlandıktan birkaç gün sonra listelenir:
gcloud firestore operations list
Çalışma durumunu kontrol edin
Uzun süredir devam eden tüm işlemleri listelemek yerine, tek bir işlemin ayrıntılarını listeleyebilirsiniz:
gcloud firestore operations describe operation-name
Tamamlanma süresinin tahmin edilmesi
İşleminiz çalışırken, işlemin genel durumu için state
alanının değerine bakın.
Uzun süredir devam eden bir işlemin durumu için yapılan istek, workEstimated
ve workCompleted
metriklerini de döndürür. Bu metrikler belge sayısı için döndürülür. workEstimated
, bir işlemin işleyeceği tahmini toplam belge sayısını gösterir. workCompleted
, şu ana kadar işlenen belge sayısını gösterir. İşlem tamamlandıktan sonra workCompleted
, gerçekte işlenen ve workEstimated
değerinden farklı olabilecek toplam belge sayısını yansıtır.
Kaba bir ilerleme tahmini için workEstimated
workCompleted
bölün. Gecikmeli istatistik toplamaya bağlı olduğu için tahmin yanlış olabilir.
Örneğin, bir dizin oluşturmanın ilerleme durumu şöyledir:
{ "operations": [ { "name": "projects/project-id/operations/AyAyMDBiM2U5NTgwZDAtZGIyYi0zYjc0LTIzYWEtZjg1ZGdWFmZWQHEjF0c2Flc3UtcmV4ZWRuaS1uaW1kYRUKSBI", "metadata": { "@type": "type.googleapis.com/google.firestore.admin.v1.IndexOperationMetadata", "common": { "operationType": "CREATE_INDEX", "startTime": "2020-06-23T16:52:25.697539Z", "state": "PROCESSING" }, "progressDocuments": { "workCompleted": "219327", "workEstimated": "2198182" } }, }, ...
Bir işlem yapıldığında, işlem açıklaması "done": true
değerini içerecektir. İşlemin sonucu için state
alanının değerine bakın. done
alanı yanıtta ayarlanmamışsa değeri false
olur. Devam eden işlemler için done
değerinin varlığına bağlı kalmayın.
Dizin oluşturma hataları
Bileşik dizinleri ve tek alanlı dizin muafiyetlerini yönetirken dizin oluşturma hatalarıyla karşılaşabilirsiniz. Cloud Firestore, dizine eklediği verilerle ilgili bir sorunla karşılaşırsa bir dizin oluşturma işlemi başarısız olabilir. En yaygın olarak, bu, bir dizin sınırına ulaştığınız anlamına gelir. Örneğin, işlem, belge başına maksimum dizin girişi sayısına ulaşmış olabilir.
Dizin oluşturma başarısız olursa konsolda hata mesajını görürsünüz. Herhangi bir dizin sınırına ulaşmadığınızı doğruladıktan sonra, dizin işleminizi yeniden deneyin.