Check out what’s new from Firebase at Google I/O 2022. Learn more

Cloud Firestore'da dizinleri yönetin

Cloud Firestore, her sorgu için bir dizin gerektirerek sorgu performansı sağlar. 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 oluşturmanıza yardımcı olan hata mesajları oluşturur. Bu sayfa, tek alan ve bileşik dizinlerinizi nasıl yöneteceğinizi açıklar.

Bir hata mesajı yoluyla eksik bir dizin oluşturun

Varolan bir dizine eşlenmeyen bir aralık yan tümcesine sahip 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.

Firebase konsolu için oluşturulan bağlantıyı izleyin, otomatik olarak doldurulan bilgileri gözden geçirin ve Oluştur 'u tıklayın.

Firebase konsolunu kullanın

Firebase konsolundan manuel olarak yeni bir dizin oluşturmak için:

firebase konsolundaki firestore indeksleme arayüzünün görüntüsü

  1. Firebase konsolunun Cloud Firestore bölümüne gidin.
  2. Dizinler sekmesine gidin ve Dizin Ekle öğesini tıklayın.
  3. Koleksiyon adını girin ve dizini sıralamak istediğiniz alanları ayarlayın.
  4. Oluştur'u tıklayın.

Dizinlerin oluşturulması, sorgunun boyutuna bağlı olarak birkaç dakika sürebilir. Bunları oluşturduktan sonra Composite Indexes bölümünden indexlerinizi ve durumlarını görebilirsiniz. Hâlâ inşa halindelerse Firebase konsolunda bir bina durum çubuğu bulunur.

Dizinleri kaldır

Bir dizini silmek için:

  1. Firebase konsolunun Cloud Firestore bölümüne gidin.
  2. Dizinler sekmesini tıklayın.
  3. Silmek istediğiniz dizinin üzerine gelin ve içerik menüsünden Sil'i seçin.
  4. Uyarıdan Sil'i tıklayarak silmek istediğinizi onaylayın.

Firebase CLI'yi kullanın

Firebase CLI ile dizinleri de dağıtabilirsiniz. Başlamak için proje dizininizde firebase init firestore çalıştırın. Kurulum sırasında Firebase CLI, doğru biçimde varsayılan dizinlere sahip bir JSON dosyası oluşturur. Daha fazla dizin eklemek için dosyayı düzenleyin ve firebase deploy . Yalnızca dizinleri dağıtmak istiyorsanız --only firestore:indexes bayrağını ekleyin. Firebase konsolunu kullanarak dizinlerde düzenlemeler yapıyorsanız, yerel dizinler dosyanızı da güncellediğinizden emin olun. JSON dizin tanımı referansına bakın.

Dizin oluşturma süresi

Bir dizin oluşturmak için Cloud Firestore, dizini ayarlamalı ve ardından dizini mevcut verilerle doldurmalıdır. Dizin oluşturma süresi, kurulum süresi ve doldurma süresinin toplamıdır:

  • Bir 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, yeni dizine ne kadar mevcut verinin 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üreli işlemlerdir .

Bir dizin oluşturma işlemini başlattı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 dışarıda bırakabilirsiniz.

Uzun süren tüm işlemleri listeleme

Uzun süredir devam eden işlemleri listelemek için gcloud firestore işlemleri listesi komutunu kullanın. Bu komut, devam eden ve yakın zamanda tamamlanan işlemleri listeler. İşlemler tamamlandıktan sonra birkaç gün için listelenir:

gcloud firestore operations list

İşlem durumunu kontrol edin

Uzun süren tüm işlemleri listelemek yerine tek bir işlemin detayları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 bir istek, ayrıca workEstimated ve workCompleted metriklerini 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 , o 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.

workCompleted göre workEstimated Kaba bir ilerleme tahmini için tahmini. Tahmin, gecikmiş istatistik toplamaya bağlı olduğundan yanlış olabilir.

Örneğin, bir dizin oluşturma işleminin ilerleme durumu şu şekildedir:

{
  "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 içerecektir. İşlemin sonucu için state alanının değerine bakın. Yanıtta done alanı ayarlanmadıysa, değeri false olur. Devam eden işlemler için done değerin varlığına bağlı olmayı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 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 indeks limitine ulaşmadığınızı doğruladıktan sonra indeksleme işleminizi yeniden deneyin.