Yalnızca Cloud Firestore Enterprise sürümü için geçerlidir. |
Bu sayfada, dizinlerinizi nasıl yöneteceğiniz açıklanmaktadır. Dizinler hakkında daha fazla bilgi edinmek için Dizinlere genel bakış başlıklı makaleyi inceleyin.
Başlamadan önce
MongoDB uyumluluğu ile Cloud Firestore'da dizin oluşturabilmek için aşağıdaki rollerden birinin size atanmış olması gerekir:
roles/datastore.owner
roles/datastore.indexAdmin
roles/editor
roles/owner
Rol vermek için Tek bir rol verme başlıklı makaleyi inceleyin. Cloud Firestore rolleri ve ilişkili izinler hakkında daha fazla bilgi için Önceden tanımlanmış roller başlıklı makaleyi inceleyin.
Özel roller tanımladıysanız dizin oluşturmak için aşağıdaki izinlerin tümünü atayın:
datastore.indexes.create
datastore.indexes.delete
datastore.indexes.get
datastore.indexes.list
datastore.indexes.update
Dizin oluşturma
Dizin oluşturmak için aşağıdaki adımları uygulayın:
MongoDB API
Dizin oluşturmak için createIndex()
yöntemini kullanın. Örneğin:
-
db.restaurants.createIndex({"cuisine" : 1})
-
db.restaurants.createIndex({"cuisine" : 1}, {sparse: true})
-
db.runCommand()
ile dizin oluşturma da en fazla bir dizinle desteklenir.db.runCommand({"createIndexes":"restaurant", "index": [{"key": {"cuisine":1}, {"name": "cuisine_index"}]})
Aşağıdaki sınırlamalara dikkat edin:
- İstek başına yalnızca bir dizin oluşturabilirsiniz.
db.collection.createIndexes()
desteklenmiyor. - MongoDB API ile dizin oluşturma için denetleme günlüklerinde
google.firestore.admin.v1.FirestoreAdmin.CreateIndex
yöntem adı kullanılır. - Desteklenen dizin seçenekleri için dizinler ve dizin özellikleri başlıklı makaleyi inceleyin.
Firebase konsolu
-
Firebase konsolunda Firestore Database sayfasına gidin.
- Veritabanları listesinden bir veritabanı seçin.
- Dizinler sekmesinde Dizin Oluştur'u tıklayın.
- Koleksiyon kimliği girin.
- Bir veya daha fazla alan yolu ekleyin ve her biri için bir dizin seçeneği belirleyin.
- Alan varlığı seçeneği olarak seyrek olmayan veya seyrek'i belirleyin.
- İsteğe bağlı olarak çok anahtarlı dizin seçeneğini ayarlayabilirsiniz.
- Oluştur'u tıklayın.
- Yeni dizininiz dizinler listesinde gösterilir ve MongoDB uyumluluğu ile Cloud Firestore, dizininizi oluşturmaya başlar. Dizininiz oluşturulduğunda dizinin yanında yeşil bir onay işareti görürsünüz. index oluşturulmazsa olası nedenler için Dizin oluşturma hataları bölümüne bakın.
gcloud CLI
Dizin oluşturmak için gcloud firestore indexes composite create
komutunu kullanın. api-scope
değerini mongodb-compatible-api
olarak ayarlayın.
gcloud firestore indexes composite create \ --database='DATABASE_ID' \ --collection-group=COLLECTION \ --field-config=FIELD_CONFIGURATION \ --query-scope=collection-group \ --density=dense \ --api-scope=mongodb-compatible-api
Aşağıdakini değiştirin:
- DATABASE_ID: Veritabanı kimliği.
- COLLECTION: Koleksiyon adı.
- FIELD_CONFIGURATION: alan yapılandırması. Her alan için
--field-config=field-path=
ekleyin. Örneğin:--field-config=field-path=user-id,order=descending \ --field-config=field-path=score,order=descending
Bu alanları yapılandırma hakkında daha fazla bilgi için
--field-config
başlıklı makaleyi inceleyin.
Seyrek dizin oluşturmak için --density=sparse-any
değerini ayarlayın.
Çok anahtarlı bir dizin oluşturmak için --multikey
işaretini ekleyin.
Benzersiz bir dizin oluşturmak için --unique
işaretini ekleyin.
Terraform
google_firestore_index
kaynağını kullanarak api_scope
değerini MONGODB_COMPATIBLE_API
, query_scope
değerini ise COLLECTION_GROUP
olarak ayarlayın.
resource "google_firestore_index" "index" { database = "DATABASE_ID" collection = "COLLECTION" api_scope = "MONGODB_COMPATIBLE_API" query_scope = "COLLECTION_GROUP" // You can include multiple field blocks fields { field_path = "FIELD_PATH" order = "ORDER" } // Optional multikey = true density = "DENSITY" }
Aşağıdakini değiştirin:
- DATABASE_ID: Seçtiğiniz veritabanının veritabanı kimliği
- COLLECTION: Dizinlenecek koleksiyonun adı
- FIELD_PATH: Dizine eklenecek alanın adı
- ORDER:
ASCENDING
veyaDESCENDING
değerlerinden biri - DENSITY:
SPARSE_ANY
veyaDENSE
değerlerinden biri
Dizin silme
Bir dizini silmek için aşağıdaki adımları tamamlayın:
MongoDB API
Bir dizini silmek için dropIndex()
yöntemini kullanın. Örneğin:
Dizin adını kullanarak dizin silme
db.restaurants.dropIndex("cuisine_index")
Dizin tanımını kullanarak dizin silme
db.restaurants.dropIndex({"cuisine" : 1})
Firebase konsolu
-
Firebase konsolunda Firestore Database sayfasına gidin.
- Veritabanları listesinden bir veritabanı seçin.
- Dizinler sekmesini tıklayın.
- Dizin listesinde, silmek istediğiniz dizin için Diğer düğmesinden Sil'i seçin.
- Dizini Sil'i tıklayın.
gcloud CLI
Dizinin adını bulmak için
gcloud firestore indexes composite list
komutunu kullanın.gcloud firestore indexes composite list \ --database='DATABASE_ID'
DATABASE_ID yerine veritabanı kimliğini yazın.
-
Dizini silmek için
gcloud firestore indexes composite delete
komutunu kullanın.gcloud firestore indexes composite delete INDEX_NAME \ --database='DATABASE_ID'
Aşağıdakini değiştirin:
- INDEX_NAME: bir dizinin adı
- DATABASE_ID: veritabanı kimliği
Dizin oluşturma süresi
Bir dizin oluşturmak için MongoDB uyumlu Cloud Firestore, dizini oluşturmalı ve ardından dizin girişlerini mevcut verilerle doldurmalıdır. Dizin oluşturmak için gereken süre aşağıdakilere göre belirlenir:
Bir dizinin minimum oluşturma süresi, boş bir veritabanı için bile birkaç dakikadır.
Dizin girişlerini doldurmak için gereken süre, yeni dizinde ne kadar mevcut veri olduğuna bağlıdır. Dizin tanımıyla eşleşen alan değerleri ne kadar fazlaysa dizin girişlerinin doldurulması o kadar uzun sürer.
Uzun süreli işlemleri yönetme
Dizin oluşturma işlemleri uzun süreli işlemlerdir. Aşağıdaki bölümlerde, uzun süren dizin işlemleriyle nasıl çalışılacağı açıklanmaktadır.
Dizin oluşturmaya başladıktan sonra MongoDB uyumlu Cloud Firestore, işleme benzersiz bir ad atar. İşlem adlarının önüne projects/PROJECT_ID/databases/DATABASE_ID/operations/
ön eki eklenir.
Örneğin:
projects/PROJECT_ID/databases/DATABASE_ID/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
describe
komutu için işlem adı belirtirken öneki atlayabilirsiniz.
Tüm uzun süreli işlemleri listeleme
Uzun süren 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 sonra birkaç gün boyunca listelenir:
gcloud firestore operations list
İşlem durumunu kontrol etme
Uzun süreli işlemlerin tamamını listelemek yerine tek bir işlemin ayrıntılarını listeleyebilirsiniz:
gcloud firestore operations describe operation-name
Tamamlanma süresini tahmin etme
İşleminiz çalışırken işlemin genel durumu için state
alanının değerini görün.
Uzun süreli bir işlemin durumuyla ilgili istekler, workEstimated
ve workCompleted
metriklerini de döndürür. workEstimated
, bir işlemin işleyeceği tahmini toplam belge sayısını gösterir. workCompleted
Şu ana kadar işlenen doküman sayısını gösterir. İşlem tamamlandıktan sonra,
workCompleted
, workEstimated
değerinden farklı olabilecek, gerçekten işlenen toplam belge sayısını yansıtır.
Bir işlemin ilerleme durumunu tahmin etmek için workCompleted
değerini workEstimated
değerine bölün.
Aşağıda, dizin oluşturma sürecine dair bir örnek verilmiştir:
{ "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 tamamlandığında işlem açıklamasında "done": true
yer alır. İşlemin sonucu için state
alanının değerini görün. Yanıtın done
alanı ayarlanmamışsa işlem tamamlanmamıştır.