Verileri dışa ve içe aktarma

Yanlışlıkla silinen verileri kurtarmak ve çevrimdışı işleme için verileri dışa aktarmak amacıyla Cloud Firestore yönetilen dışa ve içe aktarma hizmetini kullanabilirsiniz. Tüm dokümanları veya yalnızca belirli koleksiyonları dışa aktarabilirsiniz. Benzer şekilde, dışa aktarılan tüm verileri veya yalnızca belirli koleksiyonları içe aktarabilirsiniz. Bir Cloud Firestore veritabanından dışa aktarılan veriler başka bir Cloud Firestore veritabanına aktarılabilir. Ayrıca, dışa aktarılan dosyaları BigQuery'e yükleyebilirsinizCloud Firestore.

Bu sayfada, yönetilen dışa aktarma ve içe aktarma hizmetini ve Cloud Storage'i kullanarak Cloud Firestore belgelerinin nasıl dışa aktarılacağı ve içe aktarılacağı açıklanmaktadır. Cloud Firestore yönetilen dışa aktarma ve içe aktarma hizmeti, gcloud komut satırı aracı ve Cloud Firestore API (REST, RPC) aracılığıyla kullanılabilir.

Başlamadan önce

Yönetilen dışa aktarma ve içe aktarma hizmetini kullanabilmek için aşağıdaki görevleri tamamlamanız gerekir:

  1. Google Cloud projeniz için faturalandırmayı etkinleştirin. Dışa aktarma ve içe aktarma işlevini yalnızca faturalandırma özelliği etkinleştirilmiş Google Cloud projeler kullanabilir.
  2. Cloud Firestore veritabanı konumunuza yakın bir konumda projeniz için Cloud Storage paketi oluşturun. Dışa aktarma ve içe aktarma işlemleri için istek sahibinin ödediği bir paket kullanamazsınız.
  3. Hesabınızın Cloud Firestore ve Cloud Storage için gerekli izinlere sahip olduğundan emin olun. Proje sahibiyseniz hesabınızda gerekli izinler vardır. Aksi takdirde, aşağıdaki roller dışa aktarma ve içe aktarma işlemleri ile Cloud Storage'ye erişim için gerekli izinleri verir:

Hizmet aracısı izinleri

Dışa aktarma ve içe aktarma işlemleri, Cloud Storage işlemlerine yetki vermek için bir Cloud Firestore hizmet aracısı kullanır. Cloud Firestore hizmet temsilcisi aşağıdaki adlandırma kuralını kullanır:

Cloud Firestore hizmet aracısı
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Hizmet temsilcileri hakkında daha fazla bilgi edinmek için Hizmet temsilcileri başlıklı makaleyi inceleyin.

uyumlu değildir.

Cloud Firestore hizmet aracısı, dışa aktarma veya içe aktarma işleminde kullanılan Cloud Storage paketine erişmelidir. Cloud Storage Paketiniz Cloud Firestore veritabanınızla aynı projedeyse Cloud Firestore hizmet temsilcisi varsayılan olarak pakete erişebilir.

Cloud Storage paketi başka bir projedeyse Cloud Firestore hizmet temsilcisine Cloud Storage paketine erişim izni vermeniz gerekir.

Hizmet temsilcisine rol atama

Aşağıdaki rollerden birini atamak için gsutil komut satırı aracını kullanabilirsiniz. Örneğin, Cloud Firestore hizmet aracısına Depolama Alanı Yöneticisi rolünü atamak için aşağıdakileri çalıştırın:

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

PROJECT_NUMBER yerine proje numaranızı yazın. Bu numara, Cloud Firestore hizmet temsilcinizin adını belirlemek için kullanılır. Hizmet aracısı adını görüntülemek için Hizmet aracısı adını görüntüleme başlıklı makaleyi inceleyin.

Alternatif olarak, bu rolü Google Cloud Console'u kullanarak da atayabilirsiniz.

Hizmet aracısı adını görüntüleme

İçe ve dışa aktarma işlemlerinizin istekleri yetkilendirmek için kullandığı hesabı Google Cloud Console'daki İçe/Dışa Aktarma sayfasından görüntüleyebilirsiniz. Ayrıca, veritabanınızın Cloud Firestorehizmet aracısını mı yoksa eski App Engine hizmet hesabını mı kullandığını da görüntüleyebilirsiniz.

  1. İçe/Dışa Aktarma işleri şu şekilde çalıştırılır: etiketinin yanındaki yetkilendirme hesabını görüntüleyin.

Hizmet temsilcisinin, dışa aktarma veya içe aktarma işlemi için Cloud Storage paketinin kullanılabilmesi amacıyla Storage Admin rolüne sahip olması gerekir.

Projeniz için gcloud'ü ayarlama

İçe aktarma ve dışa aktarma işlemlerini Google Cloud Console veya gcloud komut satırı aracı üzerinden başlatabilirsiniz. gcloud'ü kullanmak için komut satırı aracını ayarlayın ve aşağıdaki yöntemlerden biriyle projenize bağlanın:

Verileri dışa aktarın

Dışa aktarma işlemi, veritabanınızdaki dokümanları bir Cloud Storage paketindeki bir dosya grubuna kopyalar. Dışa aktarma işleminin, dışa aktarma işleminin başlangıç zamanında alınan tam bir veritabanı anlık görüntüsü olmadığını unutmayın. Dışa aktarma işlemi, işlem devam ederken yapılan değişiklikleri içerebilir.

Tüm dokümanları dışa aktarma

Google Cloud Console

  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktarma'yı tıklayın.

  4. Dışa aktar'ı tıklayın.

  5. Veritabanının tamamını dışa aktar seçeneğini tıklayın.

  6. Hedefi Seç'in altında bir Cloud Storage paketinin adını girin veya Göz at düğmesini kullanarak bir paket seçin.

  7. Dışa aktar'ı tıklayın.

Konsol, İçe/Dışa Aktar sayfasına geri döner. İşlem başarıyla başlarsa sayfa, son içe aktarma ve dışa aktarma sayfasına bir giriş ekler. İşlem başarısız olursa sayfada bir hata mesajı gösterilir.

gcloud

Veritabanınıza ait tüm dokümanları dışa aktarmak için firestore export komutunu kullanın. Bu komutta [BUCKET_NAME] değerini Cloud Storage paketinizin adıyla değiştirin. gcloud aracının işlemin tamamlanmasını beklemesini önlemek için --async işaretini ekleyin.

  gcloud firestore export gs://[BUCKET_NAME] \
  --database=[DATABASE]

Aşağıdakini değiştirin:

  • BUCKET_NAME: Paket adının sonuna bir dosya öneki ekleyerek (ör. BUCKET_NAME/my-exports-folder/export-name) dışa aktarma işlemlerinizi düzenleyin. Dosya ön ekiyle ilgili bir bilgi sağlamazsanız yönetilen dışa aktarma hizmeti, mevcut zaman damgasına göre bir ön ek oluşturur.

  • DATABASE: Belgeleri dışa aktarmak istediğiniz veritabanının adı. Varsayılan veritabanı için --database='(default)' değerini kullanın.

Dışa aktarma işlemini başlattıktan sonra terminali kapatmak işlemi iptal etmez. İşlemi iptal etme bölümüne bakın.

Belirli koleksiyonları dışa aktarma

Google Cloud Console

  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktarma'yı tıklayın.

  4. Dışa aktar'ı tıklayın.

  5. Bir veya daha fazla koleksiyon grubunu dışa aktar seçeneğini tıklayın. Bir veya daha fazla koleksiyon grubu seçmek için açılır menüyü kullanın.

  6. Hedefi seçin'in altında bir Cloud Storage paketinin adını girin veya Göz at düğmesini kullanarak bir paket seçin.

  7. Dışa aktar'ı tıklayın.

Konsol, İçe/Dışa Aktar sayfasına geri döner. İşlem başarıyla başlarsa sayfa, son içe aktarma ve dışa aktarma sayfasına bir giriş ekler. İşlem başarısız olursa sayfada bir hata mesajı gösterilir.

gcloud

Belirli koleksiyon gruplarını dışa aktarmak için --collection-ids işaretini kullanın. İşlem yalnızca belirtilen koleksiyon kimliklerine sahip koleksiyon gruplarını dışa aktarır. Koleksiyon grubu, belirtilen koleksiyon kimliğine sahip tüm koleksiyonları ve alt koleksiyonları (herhangi bir yolda) içerir.

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
--database=[DATABASE]

Örneğin, foo veritabanında ratings, reviews veya outlets gibi birden fazla alt koleksiyon içerecek bir restaurants koleksiyonu tasarlayabilirsiniz. Belirli koleksiyonları (restaurants ve reviews) dışa aktarmak için komutunuz aşağıdaki gibi görünür:

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=restaurants,reviews \
--database='cymbal'

PITR zaman damgasından dışa aktarma

gcloud firestore export komutunu kullanarak veritabanınızı PITR verilerinden Cloud Storage'e aktarabilirsiniz. Zaman damgasının son yedi gün içinde tam dakikalık bir zaman damgası olduğu ancak earliestVersionTime tarihinden önce olmadığı PITR verilerini dışa aktarabilirsiniz. Belirtilen zaman damgasında artık veri yoksa dışa aktarma işlemi başarısız olur.

PITR dışa aktarma işlemi, tüm dokümanların ve belirli koleksiyonların dışa aktarılması da dahil olmak üzere tüm filtreleri destekler.

  1. snapshot-time parametresini istenen kurtarma zaman damgası olarak belirterek veritabanını dışa aktarın.

    gcloud

    Veritabanını paketinize aktarmak için aşağıdaki komutu çalıştırın.

    gcloud firestore export gs://[BUCKET_NAME_PATH] \
        --snapshot-time=[PITR_TIMESTAMP] \
        --collection-ids=[COLLECTION_IDS] \
        --namespace-ids=[NAMESPACE_IDS]
    

    Where,

    • PITR_TIMESTAMP: Dakika ayrıntı düzeyinde bir PITR zaman damgası (ör. 2023-05-26T10:20:00.00Z).

    PITR verilerini dışa aktarmadan önce aşağıdaki noktaları göz önünde bulundurun:

    • Zaman damgasını RFC 3339 biçiminde belirtin. Örneğin, 2020-09-01T23:59:30.234233Z.
    • Belirttiğiniz zaman damgasının, son yedi gün içinde tam dakikalık bir zaman damgası olduğundan ancak earliestVersionTime tarihinden önce olmadığından emin olun. Belirtilen zaman damgasında artık veri yoksa hata oluşur.
    • Başarısız PITR dışa aktarma işlemi için ücretlendirilmezsiniz.

Verileri içe aktarma

Cloud Storage hizmetinde dışa aktardığınız dosyaları, bu dosyalardaki dokümanları projenize veya başka bir projeye içe aktarabilirsiniz. İçe aktarma işlemleriyle ilgili aşağıdaki noktalara dikkat edin:

  • Verileri içe aktardığınızda, gerekli dizinler veritabanınızın mevcut dizin tanımları kullanılarak güncellenir. Dışa aktarma işlemi, dizin tanımları içermez.

  • İçe aktarma işleminde yeni doküman kimlikleri atanmaz. İçe aktarma işlemleri, dışa aktarma sırasında yakalanan kimlikleri kullanır. Bir belge içe aktarılırken kimlik çakışmalarını önlemek için kimliği ayrılır. Aynı kimliğe sahip bir doküman zaten varsa içe aktarma işlemi mevcut dokümanın üzerine yazar.

  • İçe aktarma işlemi, veritabanınızdaki bir dokümanı etkilemezse bu doküman, içe aktarma işleminden sonra veritabanınızda kalır.

  • İçe aktarma işlemleri Cloud Functions'ı tetiklemez. Anlık görüntü işleyiciler, içe aktarma işlemleriyle ilgili güncellemeler alır.

  • .overall_export_metadata dosya adı, üst klasörünün adıyla eşleşmelidir:

    gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/PARENT_FOLDER_NAME/PARENT_FOLDER_NAME.overall_export_metadata

    Dışa aktarma işleminin çıkış dosyalarını taşır veya kopyalarsanız PARENT_FOLDER_NAME ve .overall_export_metadata dosya adlarını aynı tutun.

Dışa aktarılan bir dokümandan tüm dokümanları içe aktarma

Google Cloud Console

  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktarma'yı tıklayın.

  4. İçe aktar'ı tıklayın.

  5. Dosya adı alanına, tamamlanmış bir dışa aktarma işleminden alınan bir .overall_export_metadata dosyasının adını girin. Dosyayı seçmenize yardımcı olması için Göz at düğmesini kullanabilirsiniz.

  6. İçe aktar'ı tıklayın.

Konsol, İçe/Dışa Aktar sayfasına geri döner. İşlem başarıyla başlarsa sayfa, son içe aktarma ve dışa aktarma sayfasına bir giriş ekler. İşlem başarısız olursa sayfada bir hata mesajı gösterilir.

gcloud

Önceki bir dışa aktarma işleminden belgeleri içe aktarmak için firestore import komutunu kullanın.

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]

Aşağıdakini değiştirin:

  • BUCKET_NAME/EXPORT_PREFIX: dışa aktarma dosyalarınızın konumu.

  • DATABASE: veritabanının adı. Varsayılan veritabanı için --database='(default)' değerini kullanın.

Örneğin:

gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'

Dışa aktarılan dosyalarınızın yerini Google Cloud Console'daki Cloud Storage tarayıcıda onaylayabilirsiniz:

Cloud Storage tarayıcısını aç

Bir içe aktarma işlemini başlattıktan sonra terminali kapatmak işlemi iptal etmez. İşlemi iptal etme bölümüne bakın.

Belirli koleksiyonları içe aktarma

Google Cloud Console

Konsolda belirli koleksiyonları seçemezsiniz. Bunun yerine gcloud politikasını kullanın.

gcloud

Belirli koleksiyon gruplarını bir dışa aktarma dosyasından içe aktarmak için --collection-ids işaretini kullanın. İşlem yalnızca belirtilen koleksiyon kimliklerine sahip koleksiyon gruplarını içe aktarır. Koleksiyon grubu, belirtilen koleksiyon kimliğine sahip tüm koleksiyonları ve alt koleksiyonları (herhangi bir yolda) içerir. --database işaretçisini kullanarak veritabanı adını belirtin. Varsayılan veritabanı için --database='(default)' değerini kullanın.

Yalnızca belirli koleksiyon gruplarının dışa aktarılması, belirli koleksiyon gruplarının içe aktarılmasını destekler. Tüm dokümanların dışa aktarılmasından belirli koleksiyonları içe aktaramazsınız.

  gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \
  --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
  --database=[DATABASE]

PITR dışa aktarma işlemini içe aktarma

Dışa aktarılan veritabanınızı içe aktarmak için Tüm dokümanları içe aktar başlıklı makaledeki adımları uygulayın. Veritabanında zaten mevcut olan belgelerin üzerine yazılır.

Dışa aktarma ve içe aktarma işlemlerini yönetme

Bir dışa aktarma veya içe aktarma işlemi başlattıktan sonra Cloud Firestore, işleme benzersiz bir ad atar. İşlemi silmek, iptal etmek veya durumunu kontrol etmek için işlem adını kullanabilirsiniz.

İşlem adlarının önüne projects/[PROJECT_ID]/databases/(default)/operations/ ön eki eklenir. Örneğin:

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

Ancak describe, cancel ve delete komutları için bir işlem adı belirtirken öneki çıkarabilirsiniz.

Tüm dışa aktarma ve içe aktarma işlemlerini listeleme

Google Cloud Console

Google Cloud Console'un İçe/Dışa Aktarma sayfasında son dışa aktarma ve içe aktarma işlemlerinin listesini görüntüleyebilirsiniz.

  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktarma'yı tıklayın.

gcloud

Çalışan ve yakın zamanda tamamlanan tüm dışa aktarma ve içe aktarma işlemlerini görmek için operations list komutunu kullanın:

gcloud firestore operations list

İşlem durumunu kontrol etme

Google Cloud Console

Yakın zamanda yapılan bir dışa aktarma veya içe aktarma işleminin durumunu Google Cloud Console'un İçe Aktarma/Dışa Aktarma sayfasında görüntüleyebilirsiniz.

  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktarma'yı tıklayın.

gcloud

Bir dışa aktarma veya içe aktarma işleminin durumunu göstermek için operations describe komutunu kullanın.

gcloud firestore operations describe [OPERATION_NAME]

Tamamlanma süresini tahmin etme

Uzun süren bir işlemin durumuyla ilgili istek, workEstimated ve workCompleted metriklerini döndürür. Bu metriklerin her biri hem bayt sayısı hem de öğe sayısı olarak döndürülür:

  • workEstimated, bir işlemin işleyeceği tahmini toplam bayt ve doküman sayısını gösterir. Cloud Firestore, tahminde bulunamazsa bu metriği atlayabilir.

  • workCompleted, şu ana kadar işlenen bayt ve doküman sayısını gösterir. İşlem tamamlandıktan sonra bu değer, gerçekte işlenen toplam bayt ve belge sayısını gösterir. Bu değer, workEstimated değerinden daha büyük olabilir.

Yaklaşık bir ilerleme tahmini için workCompleted değerini workEstimated değerine bölün. Gecikmeli istatistik toplama işlemine bağlı olduğu için bu tahmin yanlış olabilir.

İşlemi iptal etme

Google Cloud Console

Google Cloud Console'un İçe/Dışa Aktarma sayfasından, devam eden bir dışa aktarma veya içe aktarma işlemini iptal edebilirsiniz.

  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.

  3. Gezinme menüsünde İçe/Dışa Aktarma'yı tıklayın.

Son içe aktarma ve dışa aktarma işlemleri tablosunda, şu anda çalışan işlemler için Tamamlandı sütununda bir İptal düğmesi bulunur. İşlemi durdurmak için İptal düğmesini tıklayın. İşlem tamamen durduğunda düğme İptal ediliyor mesajına, ardından İptal edildi mesajına dönüşür.

Devam eden bir veri içe aktarma işlemini gösteren ve işlemi durdurmak için İptal seçeneği sunan konsoldaki son içe aktarma ve dışa aktarma tablosu.

gcloud

Devam eden bir işlemi durdurmak için operations cancel komutunu kullanın:

gcloud firestore operations cancel [OPERATION_NAME]

Çalışan bir işlem iptal edildiğinde işlem geri alınmaz. İptal edilen bir dışa aktarma işlemi, daha önce dışa aktarılan dokümanları Cloud Storage içinde bırakır. İptal edilen bir içe aktarma işlemi ise veritabanınızda daha önce yapılan güncellemeleri olduğu gibi bırakır. Kısmen tamamlanmış bir dışa aktarma işlemini içe aktaramazsınız.

İşlemleri silme

Bir işlemi son işlemler listesinden kaldırmak için gcloud firestore operations delete komutunu kullanın. Bu komut, Cloud Storage'teki dışa aktarma dosyalarını silmez.

gcloud firestore operations delete [OPERATION_NAME]

Dışa ve içe aktarma işlemleri için faturalandırma ve fiyatlandırma

Yönetilen dışa aktarma ve içe aktarma hizmetini kullanmadan önce Google Cloud projeniz için faturalandırmayı etkinleştirmeniz gerekir.

Dışa aktarma ve içe aktarma işlemlerinden, belge okuma ve yazma işlemleri için Cloud Firestore fiyatlandırmasında listelenen ücretler alınır. Dışa aktarma işlemleri, dışa aktarılan her doküman için bir okuma işlemi gerçekleştirir. İçe aktarma işlemleri, içe aktarılan her belge için bir yazma işlemi gerçekleştirir.

Cloud Storage'te depolanan çıkış dosyaları, Cloud Storage veri depolama maliyetlerinize dahil edilir.

Dışa aktarma ve içe aktarma işlemlerinin maliyeti, harcama sınırınıza dahil değildir. Dışa aktarma veya içe aktarma işlemleri tamamlanana kadar Google Cloud bütçe uyarılarınız tetiklenmez. Benzer şekilde, dışa aktarma veya içe aktarma işlemi sırasında yapılan okuma ve yazma işlemleri, işlem tamamlandıktan sonra günlük kotanıza uygulanır. Dışa aktarma ve içe aktarma işlemleri, konsolun kullanım bölümünde gösterilen kullanımı etkilemez.

Dışa aktarma ve içe aktarma maliyetlerini görüntüleme

Dışa ve içe aktarma işlemleri, faturalandırılan işlemlere goog-firestoremanaged:exportimport etiketini uygular. Cloud Faturalandırma raporları sayfasında, içe ve dışa aktarma işlemleriyle ilgili maliyetleri görüntülemek için şu etiketi kullanabilirsiniz:

Filtreler menüsünden goog-firestoremanaged etiketine erişin.

BigQuery'ye aktarın

Cloud Firestore dışa aktarma işleminden BigQuery'a veri yükleyebilirsiniz ancak yalnızca bir collection-ids filtresi belirttiyseniz. Cloud Firestore dışa aktarma işlemlerinden veri yükleme başlıklı makaleyi inceleyin.

BigQuery sütun sınırı

BigQuery,tablo başına 10.000 sütun sınırı uygular. Cloud Firestore dışa aktarma işlemleri, her koleksiyon grubu için bir BigQuery tablo şeması oluşturur. Bu şemada, koleksiyon grubundaki her benzersiz alan adı bir şema sütunu olur.

Bir koleksiyon grubunun BigQuery şeması 10.000 sütunu aşarsa Cloud Firestore dışa aktarma işlemi, harita alanlarını bayt olarak değerlendirerek sütun sınırının altında kalmayı dener. Bu dönüşüm, sütun sayısını 10.000'in altına düşürürse verileri BigQuery alanına yükleyebilirsiniz ancak harita alanlarında alt alanları sorgulayamazsınız. Sütun sayısı yine de 10.000'i aşıyorsa dışa aktarma işlemi, koleksiyon grubu için bir BigQuery şeması oluşturmaz ve verilerini BigQuery'e yükleyemezsiniz.

Biçim ve meta veri dosyalarını dışa aktarma

Yönetilen dışa aktarma işleminin çıkışı LevelDB günlük biçimini kullanır.

Meta veri dosyaları

Dışa aktarma işlemi, belirttiğiniz her koleksiyon grubu için bir meta veri dosyası oluşturur. Meta veri dosyaları genellikle ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata olarak adlandırılır.

Meta veri dosyaları protokol arabellekleridir ve protoc protokol derleyicisi ile kodlarını çözebilirsiniz. Örneğin, dışa aktarma dosyalarının içerdiği koleksiyon gruplarını belirlemek için bir meta veri dosyasının kodunu çözebilirsiniz:

protoc --decode_raw < export0.export_metadata

Hizmet aracısı taşıma

Cloud Firestore, App Engine hizmet hesabını kullanmak yerine içe aktarma ve dışa aktarma işlemlerini yetkilendirmek için Cloud Firestore hizmet aracısı kullanır. Hizmet aracısı ve hizmet hesabı aşağıdaki adlandırma kurallarına uyar:

Cloud Firestore hizmet aracısı
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Cloud Firestore daha önce Cloud Firestore hizmet temsilcisi yerine App Engine varsayılan hizmet hesabını kullanıyordu. Veritabanınıza veri aktarmak veya aktarmak için hâlâ App Engine hizmet hesabını kullanıyorsanız Cloud Firestore hizmet aracısını kullanmaya geçmek için bu bölümdeki talimatları uygulamanızı öneririz.

App Engine hizmet hesabı
PROJECT_ID@appspot.gserviceaccount.com

Cloud Firestore hizmet temsilcisi, Cloud Firestore'a özel olduğu için tercih edilir. App Engine hizmet hesabı birden fazla hizmet tarafından paylaşılıyor.

uyumlu değildir.

Yetkilendirme hesabını görüntüleme

İçe ve dışa aktarma işlemlerinizin istekleri yetkilendirmek için hangi hesabı kullandığını Google Cloud Console'daki İçe/Dışa Aktarma sayfasından görüntüleyebilirsiniz. Ayrıca, veritabanınızın Cloud Firestore hizmet aracısını kullanıp kullanmadığını da görüntüleyebilirsiniz.

  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.
  3. Gezinme menüsünde İçe/Dışa Aktarma'yı tıklayın.

  4. İçe/Dışa Aktarma işleri şu şekilde çalıştırılır: etiketinin yanındaki yetkilendirme hesabını görüntüleyin.

Projenizde Cloud Firestore hizmet aracısı kullanılmıyorsa aşağıdaki tekniklerden birini kullanarak Cloud Firestore hizmet aracısına geçiş yapabilirsiniz:

Bu tekniklerden ilki, etki kapsamını tek bir Cloud Firestore projesine yerelleştirdiği için tercih edilir. Mevcut Cloud Storage paket izinlerini taşımadığı için ikinci teknik tercih edilmez. Ancak kuruluş düzeyinde güvenlik uyumluluğu sunar.

Cloud Storage paket izinlerini kontrol edip güncelleyerek taşıma

Taşıma işlemi iki adımdan oluşur:

  1. Cloud Storage paket izinlerini güncelleyin. Ayrıntılar için aşağıdaki bölüme bakın.
  2. Cloud Firestore hizmet temsilcisine taşıma işlemini onaylayın.

Hizmet aracısı paket izinleri

Başka bir projede Cloud Storage paketi kullanan tüm dışa aktarma veya içe aktarma işlemleri için Cloud Firestore hizmet temsilcisine ilgili paket için izin vermeniz gerekir. Örneğin, verileri başka bir projeye taşıyan işlemlerin, söz konusu projedeki bir pakete erişmesi gerekir. Aksi takdirde, bu işlemler Cloud Firestore hizmet aracısına taşındıktan sonra başarısız olur.

Aynı projede kalan iş akışlarının içe ve dışa aktarılması için izinlerde değişiklik yapılması gerekmez. Cloud Firestore hizmet aracısı varsayılan olarak aynı projedeki paketlere erişebilir.

service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com hizmet temsilcisine erişim vermek için diğer projelerdeki Cloud Storage paketlerinin izinlerini güncelleyin. Hizmet temsilcisine Firestore Service Agent rolünü verin.

Firestore Service Agent rolü, Cloud Storage paketi için okuma ve yazma izinleri verir. Yalnızca okuma veya yalnızca yazma izni vermeniz gerekiyorsa özel rol kullanın.

Aşağıdaki bölümde açıklanan taşıma işlemi, izin güncellemeleri gerektirebilecek Cloud Storage bucket'ları belirlemenize yardımcı olur.

Bir projeyi Firestore Hizmet Aracısı'na taşıma

App Engine hizmet hesabından Cloud Firestore hizmet aracısına geçmek için aşağıdaki adımları tamamlayın. Taşıma işlemi tamamlandıktan sonra geri alınamaz.

  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.
  3. Gezinme menüsünde İçe/Dışa Aktarma'yı tıklayın.

  4. Projeniz henüz Cloud Firestore hizmet temsilcisine taşınmadıysa taşıma işlemini açıklayan bir banner ve Paket durumunu kontrol et düğmesi görürsünüz. Sonraki adım, olası izin hatalarını tespit etmenize ve düzeltmenize yardımcı olur.

    Paket durumunu kontrol et'i tıklayın.

    Taşıma işlemini tamamlama seçeneğini ve Cloud Storage paketlerinin listesini içeren bir menü açılır. Listenin yüklenmesi birkaç dakika sürebilir.

    Bu liste, yakın zamanda içe ve dışa aktarma işlemlerinde kullanılan ancak şu anda Cloud Firestore hizmet temsilcisine okuma ve yazma izni vermeyen paketleri içerir.

  5. Projenizin Cloud Firestore hizmet temsilcisinin asıl adını not edin. Hizmet aracısı adı, Erişim verilecek hizmet aracısı etiketinin altında görünür.
  6. Listede, gelecekteki içe veya dışa aktarma işlemleri için kullanacağınız tüm paketler için aşağıdaki adımları uygulayın:

    1. Bu paketin tablo satırında Düzelt'i tıklayın. Bu işlem, ilgili paketin izinler sayfasını yeni bir sekmede açar.

    2. Ekle'yi tıklayın.
    3. Yeni yöneticiler alanına Cloud Firestore hizmet temsilcinizin adını girin.
    4. Rol seçin alanında Hizmet Temsilcileri > Firestore Hizmet Temsilcisi'ni seçin.
    5. Kaydet'i tıklayın.
    6. Cloud Firestore İçe/Dışa Aktarma sayfasının bulunduğu sekmeye dönün.
    7. Listedeki diğer paketler için bu adımları tekrarlayın. Listenin tüm sayfalarını görüntülediğinizden emin olun.
  7. Firestore Hizmet Temsilcisi'ne taşı'yı tıklayın. İzin kontrollerinin başarısız olduğu paketleriniz varsa Taşı'yı tıklayarak taşıma işlemini onaylamanız gerekir.

    Taşıma işleminiz tamamlandığında bir uyarı alırsınız. Taşıma işlemi geri alınamaz.

Taşıma durumunu görüntüleme

Projenizin taşıma durumunu doğrulamak için:

  1. Google Cloud Console'da Veritabanları sayfasına gidin.

    Veritabanları'na gidin

  2. Veritabanları listesinden gerekli veritabanını seçin.
  3. Gezinme menüsünde İçe/Dışa Aktarma'yı tıklayın.

  4. İçe/dışa aktarma işleri şu şekilde çalıştırılır: etiketinin yanındaki yöneticiyi bulun.

    Temsilci service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com ise projeniz Cloud Firestore hizmet temsilcisine taşınmış demektir. Taşıma işlemi geri alınamaz.

    Proje taşınmadıysa sayfanın üst kısmında Depo Durumunu Kontrol Et düğmesini içeren bir banner gösterilir. Taşıma işlemini tamamlamak için Firestore hizmet temsilcisine taşıma başlıklı makaleyi inceleyin.

Kuruluş genelinde politika kısıtlaması ekleme

  • Kuruluşunuzun politikasında aşağıdaki kısıtlamayı ayarlayın:

    İçe/dışa aktarma için Firestore Hizmet Aracısı'nı zorunlu kıl (firestore.requireP4SAforImportExport).

    Bu kısıtlama, içe ve dışa aktarma işlemlerinin istekleri yetkilendirmek için Cloud Firestore hizmet aracısını kullanmasını gerektirir. Bu kısıtlamayı ayarlamak için Kuruluş politikası oluşturma ve yönetme başlıklı makaleyi inceleyin.

Bu kuruluş politikası kısıtlaması uygulandığında, Cloud Firestore hizmet aracısına otomatik olarak uygun Cloud Storage paket izinleri verilmez.

Kısıtlama, içe aktarma veya dışa aktarma iş akışları için izin hataları oluşturuyorsa varsayılan hizmet hesabını kullanmaya geri dönmek için kısıtlamayı devre dışı bırakabilirsiniz. Cloud Storage paket izinlerini kontrol edip güncelledikten sonra kısıtlamayı tekrar etkinleştirebilirsiniz.