Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Cloud Firestore'da dizinleri yönetin

Cloud Firestore, her sorgu için bir dizin gerektirerek sorgu performansı sağlar. En temel sorgular için gerekli olan dizinler sizin için otomatik olarak oluşturulur . Uygulamanızı kullanırken ve test ederken, Cloud Firestore, uygulamanızın gerektirdiği ek dizinler oluşturmanıza yardımcı olan hata mesajları oluşturur. Bu sayfada, tek alanlı ve bileşik dizinlerinizin nasıl yönetileceği açıklanmaktadır.

Bir hata mesajıyla eksik bir dizin oluşturun

Var olan bir dizinle eşleşmeyen 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.

Oluşturulan Firebase konsoluna olan bağlantıyı izleyin, 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 konsolundaki yangın deposu dizin oluşturma 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'yi tıklayın.
  3. Koleksiyon adını girin ve dizini sıralamak istediğiniz alanları ayarlayın.
  4. Oluştur'u tıklayın.

Sorgunun boyutuna bağlı olarak dizinlerin oluşturulması birkaç dakika sürebilir. Bunları oluşturduktan sonra, dizinlerinizi ve durumlarını Bileşik Dizinler bölümünde görebilirsiniz. Hala inşa ediyorlarsa, 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 bağlam menüsünden Sil'i seçin.
  4. Uyarıdan Sil'i tıklayarak silmek istediğinizi onaylayın.

Firebase CLI 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, 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 komutuyla firebase deploy . 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ı referansına bakın .

Dizin oluşturma süresi

Bir dizin oluşturmak için Cloud Firestore'un dizini ayarlaması ve ardından dizini mevcut verilerle doldurması gerekir. 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 derleme süresi, boş bir veritabanı için bile birkaç dakikadır.

  • Dolgu süresi, yeni dizine ne kadar mevcut verinin ait olduğuna bağlıdır. Dizin tanımıyla eşleşen alan değerleri ne kadar fazlaysa, dizini doldurmak o kadar uzun sürer.

Dizin derlemeleri 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/ , örneğin:

projects/project-id/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

İçin bir operasyon adını belirlerken Ancak, öneki dışarı bırakabilir describe komutu.

Tüm uzun süren işlemleri listeleme

Uzun süre çalışan işlemleri listelemek için gcloud firestore işlem listesi 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

İşlem durumunu kontrol edin

Tüm uzun süren 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üre çalışan bir işlemin durumuna ilişkin bir istek, ayrıca, workEstimated ve workCompleted ölçümlerini 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 , o ana kadar işlenen belge sayısını gösterir. İşlem tamamlandıktan sonra, workCompleted , gerçekte işlenen toplam belge sayısını yansıtır ve bu, workEstimated değerinden farklı olabilir.

İş bölme workCompleted göre workEstimated Kaba bir ilerleme tahmini için tahmin edilmiştir. Tahmin, gecikmiş istatistik toplamaya bağlı olduğu için hatalı olabilir.

Örneğin, burada bir dizin oluşturmanın ilerleme durumu:

{
  "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 ayarlanmazsa, değeri false . Devam eden operasyonlar için done değerin varlığına güvenmeyin.

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. Genellikle 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.