صادر کردن و وارد کردن داده‌ها

می‌توانید از سرویس واردات و صادرات مدیریت‌شده Cloud Firestore برای بازیابی داده‌های حذف‌شده به‌طور تصادفی و صادر کردن داده‌ها برای پردازش آفلاین استفاده کنید. می‌توانید همه اسناد یا فقط گروه‌های مجموعه خاصی را صادر کنید. به‌همین ترتیب، می‌توانید همه داده‌ها را از یک صادر کردن یا فقط گروه‌های مجموعه خاصی وارد کنید. داده‌های صادرشده از یک پایگاه داده Cloud Firestore را می‌توان به پایگاه داده Cloud Firestore دیگری وارد کرد. همچنین می‌توانید برون‌بردهای Cloud Firestore را در BigQuery بار کنید.

این صفحه نحوه صادر کردن و وارد کردن اسناد Cloud Firestore را بااستفاده از سرویس صادر کردن و وارد کردن مدیریت‌شده و Cloud Storage شرح می‌دهد. سرویس وارد و صادر کردن مدیریت‌شده Cloud Firestore ازطریق ابزار خط فرمان gcloud و میانای برنامه‌سازی کاربردی Cloud Firestore (REST،‏ RPC) دردسترس است.

قبل از شروع

قبل‌از اینکه بتوانید از سرویس صادر کردن و وارد کردن مدیریت‌شده استفاده کنید، باید کارهای زیر را تکمیل کنید:

  1. صدور صورت‌حساب را برای پروژه Google Cloud فعال کنید. فقط پروژه‌های Google Cloud که صورت‌حساب برای آن‌ها فعال شده است می‌توانند از عملکرد صادر کردن و وارد کردن استفاده کنند.
  2. Cloud Storageسبدی برای پروژه‌تان در مکانی نزدیک به مکان پایگاه داده‌تانCloud Firestore ایجاد کنید. نمی‌توانید از سبد «درخواست‌کننده پرداخت می‌کند» یا سبد سریع برای عملیات صادر کردن و وارد کردن استفاده کنید.
  3. مطمئن شوید حسابتان اجازه‌های لازم را برای Cloud Firestore و Cloud Storage داشته باشد. اگر مالک پروژه هستید، حسابتان اجازه‌های لازم را دارد. درغیراین‌صورت، نقش‌های زیر اجازه‌های لازم را برای عملیات صادر و وارد کردن و برای دسترسی به Cloud Storage اعطا می‌کنند:

    • نقش‌های Cloud Firestore: Owner، Cloud Datastore Owner، یا Cloud Datastore Import Export Admin
    • Cloud Storage نقش: Owner یا Storage Admin

اجازه‌های نماینده خدمات

عملیات صادر کردن و وارد کردن از نماینده سرویس Cloud Firestore برای مجاز کردن عملیات Cloud Storage استفاده می‌کند. نماینده سرویس Cloud Firestore از قرارداد نام‌گذاری زیر استفاده می‌کند:

نماینده خدمات Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

برای کسب اطلاعات بیشتر درباره عامل‌های خدمات، به عامل‌های خدمات مراجعه کنید.

نماینده سرویس Cloud Firestore باید به سبد Cloud Storage که در عملیات صادر کردن یا وارد کردن استفاده می‌شود دسترسی داشته باشد. اگر Cloud Storage bucket در همان پروژه Cloud Firestore پایگاه داده شما باشد، سپس Cloud Firestore عامل سرویس می‌تواند به‌طور پیش‌فرض به bucket دسترسی داشته باشد.

اگر دسته Cloud Storage در پروژه دیگری است، باید به عامل سرویس Cloud Firestore دسترسی به دسته Cloud Storage را بدهید.

اختصاص دادن نقش‌ها به عامل سرویس

می‌توانید از ابزار خط فرمان gsutil برای اختصاص دادن یکی از نقش‌های زیر استفاده کنید. برای مثال، برای اختصاص دادن نقش «سرپرست فضای ذخیره‌سازی» به عامل سرویس Cloud Firestore، دستور زیر را اجرا کنید:

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

PROJECT_NUMBER را با شماره پروژه‌تان جایگزین کنید، که برای نام‌گذاری نماینده سرویس Cloud Firestore شما استفاده می‌شود. برای مشاهده نام عامل سرویس، به مشاهده نام عامل سرویس مراجعه کنید.

یا می‌توانید این نقش را بااستفاده از کنسول Google Cloud واگذار کنید.

مشاهده نام نماینده خدمات

می‌توانید حسابی را که عملیات وارد کردن و صادر کردن شما برای صدور مجوز درخواست‌ها استفاده می‌کند در صفحه وارد کردن/صادر کردن در کنسول Google Cloud مشاهده کنید. همچنین می‌توانید ببینید پایگاه داده‌تان از نماینده سرویس Cloud Firestore استفاده می‌کند یا حساب سرویس قدیمی App Engine.

  1. حساب مجوز را در کنار برچسب اجرای کارهای وارد کردن/صادر کردن به‌عنوان مشاهده کنید.

نماینده سرویس به نقش Storage Admin برای دسته Cloud Storage نیاز دارد تا بتواند از آن برای عملیات صادر کردن یا وارد کردن استفاده کند.

راه‌اندازی gcloud برای پروژه

می‌توانید عملیات وارد کردن و صادر کردن را ازطریق کنسول Google Cloud یا ابزار خط فرمان gcloud شروع کنید. برای استفاده از gcloud، ابزار خط فرمان را راه‌اندازی کنید و از یکی از روش‌های زیر به پروژه‌تان متصل شوید:

صادر کردن داده‌ها

عملیات صادر کردن، اسناد موجود در پایگاه داده شما را در مجموعه‌ای از فایل‌ها در یک Cloud Storage bucket کپی می‌کند. توجه داشته باشید که صادر کردن، عکس آنی دقیق از پایگاه داده نیست که در زمان شروع صادر کردن گرفته شده باشد. ممکن است صادر کردن شامل تغییراتی باشد که درحین اجرای عملیات انجام شده است.

صادر کردن همه اسناد

Google Cloud Console

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.

  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید.

  4. روی برون‌برد کلیک کنید.

  5. روی گزینه صادر کردن کل پایگاه داده کلیک کنید.

  6. در زیر انتخاب مقصد، نام یک Cloud Storage bucket را وارد کنید یا از دکمه مرور برای انتخاب bucket استفاده کنید.

  7. روی برون‌برد کلیک کنید.

کنسول به صفحه وارد کردن/صادر کردن برمی‌گردد. اگر عملیات با موفقیت شروع شود، صفحه ورودی‌ای به صفحه واردات و صادرات اخیر اضافه می‌کند. درصورت ناموفق بودن، صفحه پیام خطایی نمایش می‌دهد.

gcloud

از فرمان firestore export برای صادر کردن همه اسناد در پایگاه داده‌تان استفاده کنید، [BUCKET_NAME] را با نام سبد Cloud Storage خود جایگزین کنید. پرچم --async را اضافه کنید تا از منتظر ماندن ابزار gcloud برای تکمیل عملیات جلوگیری شود.

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

موارد زیر را جایگزین کنید:

  • BUCKET_NAME: با افزودن پیشوند فایل بعداز نام سطل، صادرشده‌هایتان را سازمان‌دهی کنید، برای مثال، BUCKET_NAME/my-exports-folder/export-name. اگر پیشوند فایل ارائه نکنید، سرویس صادر کردن مدیریت‌شده پیشوندی براساس مُهر زمان فعلی ایجاد می‌کند.

  • DATABASE: نام پایگاه داده‌ای که می‌خواهید اسناد را از آن صادر کنید. برای پایگاه داده پیش‌فرض، از --database='(default)' استفاده کنید.

وقتی عملیات صادر کردن را شروع می‌کنید، بستن پایانه باعث لغو عملیات نمی‌شود، لغو عملیات را ببینید.

صادر کردن گروه‌های مجموعه خاص

Google Cloud Console

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.

  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید.

  4. روی برون‌برد کلیک کنید.

  5. روی گزینه صادر کردن یک یا چند گروه مجموعه کلیک کنید. از منو برای انتخاب یک یا چند گروه مجموعه استفاده کنید.

  6. در زیر انتخاب مقصد، نام یک Cloud Storage bucket را وارد کنید یا از دکمه مرور برای انتخاب bucket استفاده کنید.

  7. روی برون‌برد کلیک کنید.

کنسول به صفحه وارد کردن/صادر کردن برمی‌گردد. اگر عملیات با موفقیت شروع شود، صفحه ورودی‌ای به صفحه واردات و صادرات اخیر اضافه می‌کند. درصورت ناموفق بودن، صفحه پیام خطایی نمایش می‌دهد.

gcloud

برای صادر کردن گروه‌های مجموعه خاص، از پرچم --collection-ids استفاده کنید. این عملیات فقط گروه‌های مجموعه با شناسه‌های ارائه‌شده را صادر می‌کند. گروه مجموعه شامل همه مجموعه‌ها و زیرمجموعه‌هایی است که شناسه مجموعه نهایی آن‌ها همان شناسه گروه مجموعه است.

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] \
--database=[DATABASE]

برای مثال، می‌توانید مجموعه restaurants را در پایگاه داده foo طراحی کنید تا شامل چندین زیرمجموعه مانند ratings، reviews، یا outlets باشد. برای صادر کردن گروه مجموعه reviews، باید به‌طور صریح فهرست شود:

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

اگر به‌جای آن restaurants مشخص شده باشد، اسناد موجود در زیرمجموعه reviews صادر نخواهد شد.

صادر کردن از مُهر زمان PITR

می‌توانید پایگاه داده‌تان را از داده‌های PITR به Cloud Storage صادر کنید. می‌توانید داده‌های PITR را که مُهر زمان آن‌ها مُهر زمان دقیقه کامل در هفت روز گذشته است صادر کنید، اما نه زودتر از earliestVersionTime. اگر داده‌ها دیگر در مُهر زمان مشخص‌شده وجود نداشته باشد، عملیات صادر کردن ناموفق خواهد بود.

عملیات صادر کردن PITR از همه فیلترها، ازجمله صادر کردن همه اسناد و صادر کردن گروه‌های مجموعه خاص، پشتیبانی می‌کند.

قبل‌از صادر کردن داده‌های PITR، به نکات زیر توجه کنید:

  • مُهر زمان را در قالب RFC 3339 مشخص کنید. برای مثال، 2023-05-26T10:20:00.00Z.
  • مطمئن شوید مُهر زمانی که مشخص می‌کنید مُهر زمان دقیقه کامل در هفت روز گذشته باشد، اما زودتر از earliestVersionTime نباشد. اگر داده‌ها دیگر در مُهر زمان مشخص‌شده وجود نداشته باشد، خطایی ایجاد می‌شود.
  • هزینه‌ای بابت صادر کردن ناموفق «بازیابی نقطه‌زمانی» از شما کسر نمی‌شود.

کنسول

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده
  2. پایگاه داده‌ای را از فهرست پایگاه‌های داده انتخاب کنید.
  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید.
  4. روی برون‌برد کلیک کنید.
  5. منبع صادر کردن را پیکربندی کنید تا کل پایگاه داده یا فقط گروه‌های مجموعه خاصی صادر شود.
  6. در بخش انتخاب وضعیت پایگاه داده برای صادر کردن، صادر کردن از نقطه زمانی قبلی را انتخاب کنید.

    زمان عکس آنی را برای استفاده در صادر کردن انتخاب کنید

  7. در بخش مقصد، نام یک دسته را وارد کنید یا از دکمه مرور برای انتخاب یک دسته استفاده کنید.Cloud Storage
  8. روی برون‌برد کلیک کنید.

    کنسول به صفحه وارد کردن/صادر کردن برمی‌گردد. اگر عملیات با موفقیت شروع شود، صفحه ورودی‌ای به صفحه وارد کردن‌ها و صادر کردن‌های اخیر اضافه می‌کند. درصورت ناموفق بودن، صفحه پیام خطایی نمایش می‌دهد.

gcloud

می‌توانید پایگاه داده‌تان را بااستفاده از فرمان gcloud firestore export از داده‌های PITR به Cloud Storage صادر کنید.

پایگاه داده را صادر کنید و پارامتر snapshot-time را برای مُهر زمان بازیابی مشخص کنید. فرمان زیر را برای صادر کردن پایگاه داده به سطل خود اجرا کنید.

gcloud firestore export gs://[BUCKET_NAME_PATH] \
    --snapshot-time=[PITR_TIMESTAMP]

که در آن PITR_TIMESTAMP مُهر زمان PITR با دانه‌بندی دقیقه‌ای است، برای مثال، 2023-05-26T10:20:00.00Z.

پرچم --collection-ids را برای صادر کردن گروه‌های مجموعه خاص اضافه کنید.

وارد کردن داده

وقتی فایل‌های صادرشده را در Cloud Storage داشته باشید، می‌توانید اسناد موجود در آن فایل‌ها را دوباره به پروژه‌تان یا به پروژه دیگری وارد کنید. به نکات زیر درباره عملیات وارد کردن توجه کنید:

  • وقتی داده‌ها را وارد می‌کنید، نمایه‌های لازم بااستفاده از تعاریف نمایه فعلی پایگاه داده‌تان به‌روزرسانی می‌شوند. صادر کردن حاوی تعاریف نمایه نیست.

  • وارد کردن‌ها شناسه سند جدیدی اختصاص نمی‌دهند. واردات از شناسه‌های ثبت‌شده در زمان صادرات استفاده می‌کند. وقتی سندی وارد می‌شود، شناسه آن رزرو می‌شود تا از تداخل شناسه جلوگیری شود. اگر سندی با همان شناسه ازقبل وجود داشته باشد، وارد کردن سند موجود را رونویسی می‌کند.

  • اگر سندی در پایگاه داده شما تحت تأثیر وارد کردن قرار نگیرد، پس‌از وارد کردن در پایگاه داده شما باقی خواهد ماند.

  • عملیات وارد کردن باعث راه‌اندازی Cloud Functions نمی‌شود. شنوندگان عکس آنی به‌روزرسانی‌های مربوط به عملیات وارد کردن را دریافت می‌کنند.

  • نباید سند Cloud Firestore جدیدی را که در فایل‌های خروجی اصلی صادرشده نبوده است اضافه کنید یا سند موجودی را قبل‌از وارد کردن از فایل‌های GCS بردارید. اگر این کار را بکنید، وارد کردن انجام نمی‌شود.

  • نام فایل .overall_export_metadata باید با نام پوشه مادر آن مطابقت داشته باشد:

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

    اگر فایل‌های خروجی صادرشده را جابه‌جا یا کپی می‌کنید، نام فایل PARENT_FOLDER_NAME و .overall_export_metadata را یکسان نگه دارید.

وارد کردن همه اسناد از یک صادرشده

Google Cloud Console

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.

  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید.

  4. روی وارد کردن کلیک کنید.

  5. در فیلد نام فایل، نام فایل .overall_export_metadata را از عملیات صادر کردن تکمیل‌شده وارد کنید. می‌توانید از دکمه مرور برای انتخاب فایل استفاده کنید.

  6. روی وارد کردن کلیک کنید.

کنسول به صفحه وارد کردن/صادر کردن برمی‌گردد. اگر عملیات با موفقیت شروع شود، صفحه ورودی‌ای به صفحه واردات و صادرات اخیر اضافه می‌کند. درصورت ناموفق بودن، صفحه پیام خطایی نمایش می‌دهد.

gcloud

از فرمان firestore import برای وارد کردن اسناد از عملیات صادر کردن قبلی استفاده کنید.

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

موارد زیر را جایگزین کنید:

  • ‫BUCKET_NAME/EXPORT_PREFIX: مکان فایل‌های صادرشده شما.

  • DATABASE: نام پایگاه داده. برای پایگاه داده پیش‌فرض، از --database='(default)' استفاده کنید.

برای مثال:

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

می‌توانید مکان فایل‌های بروندادی را در مرورگر Cloud Storage در کنسول Google Cloud تأیید کنید:

باز کردن مرورگر Cloud Storage

وقتی عملیات وارد کردن را شروع می‌کنید، بستن پایانه باعث لغو عملیات نمی‌شود، لغو کردن عملیات را ببینید.

وارد کردن گروه‌های مجموعه خاص

Google Cloud Console

نمی‌توانید گروه‌های مجموعه خاصی را در کنسول انتخاب کنید. درعوض از gcloud استفاده کنید.

gcloud

برای وارد کردن گروه‌های مجموعه خاص از مجموعه‌ای از فایل‌های صادرشده، از پرچم --collection-ids استفاده کنید. این عملیات فقط گروه‌های مجموعه با شناسه‌های ارائه‌شده را وارد می‌کند. گروه مجموعه شامل همه مجموعه‌ها و زیرمجموعه‌هایی است که شناسه مجموعه نهایی آن‌ها شناسه گروه مجموعه است. نام پایگاه داده را بااستفاده از پرچم --database مشخص کنید. برای پایگاه داده پیش‌فرض، از --database='(default)' استفاده کنید.

فقط صادر کردن گروه‌های مجموعه خاص از وارد کردن گروه‌های مجموعه خاص پشتیبانی می‌کند. نمی‌توانید گروه‌های مجموعه خاصی را از صادر کردن همه اسناد وارد کنید.

  gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \
  --collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] \
  --database=[DATABASE]

وارد کردن صادرشده PITR

برای وارد کردن پایگاه داده صادرشده‌تان، از مراحل وارد کردن همه اسناد استفاده کنید. اگر سندی ازقبل در پایگاه داده شما وجود داشته باشد، رونویسی خواهد شد.

مدیریت عملیات صادر کردن و وارد کردن

پس‌از شروع عملیات صادر کردن یا وارد کردن، Cloud Firestore نامی یکتا به عملیات اختصاص می‌دهد. می‌توانید از نام عملیات برای حذف، لغو، یا بررسی وضعیت عملیات استفاده کنید.

نام‌های عملیات با projects/[PROJECT_ID]/databases/(default)/operations/ پیشوندگذاری شده‌اند، برای مثال:

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

اما هنگام مشخص کردن نام عملیات برای فرمان‌های describe، cancel، و delete می‌توانید پیشوند را حذف کنید.

فهرست کردن همه عملیات‌های صادر و وارد کردن

Google Cloud Console

می‌توانید فهرست عملیات صادر کردن و وارد کردن اخیر را در صفحه وارد کردن/صادر کردن کنسول Google Cloud مشاهده کنید.

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.

  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید.

gcloud

از فرمان operations list برای دیدن همه عملیات‌های صادر کردن و وارد کردن درحال اجرا و اخیراً تکمیل‌شده استفاده کنید:

gcloud firestore operations list

بررسی وضعیت عملیات

Google Cloud Console

می‌توانید وضعیت عملیات صادر کردن یا وارد کردن اخیر را در صفحه وارد کردن/صادر کردن کنسول Google Cloud مشاهده کنید.

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.

  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید.

gcloud

از فرمان operations describe برای نمایش وضعیت عملیات صادر کردن یا وارد کردن استفاده کنید.

gcloud firestore operations describe [OPERATION_NAME]

تخمین زمان تکمیل

درخواست برای وضعیت عملیات طولانی‌مدت سنجه‌های workEstimated و workCompleted را برمی‌گرداند. هرکدام از این سنجه‌ها هم به‌صورت تعداد بایت و هم تعداد نهاد برگردانده می‌شود:

  • workEstimated تعداد کل تخمینی بایت‌ها و اسنادی را که یک عملیات پردازش خواهد کرد نشان می‌دهد. Cloud Firestore ممکن است این سنجه را حذف کند اگر نتواند تخمین بزند.

  • workCompleted تعداد بایت‌ها و اسناد پردازش‌شده تاکنون را نشان می‌دهد. پس‌از تکمیل عملیات، این مقدار تعداد کل بایت‌ها و اسنادی را نشان می‌دهد که واقعاً پردازش شده‌اند، که ممکن است بزرگ‌تر از مقدار workEstimated باشد.

برای تخمین تقریبی پیشرفت، workCompleted را بر workEstimated تقسیم کنید. این تخمین ممکن است نادرست باشد، زیرا به جمع‌آوری آمار با تأخیر بستگی دارد.

لغو کردن عملیات

Google Cloud Console

می‌توانید عملیات صادر کردن یا وارد کردن درحال اجرا را در صفحه وارد کردن/صادر کردن کنسول Google Cloud لغو کنید.

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.

  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید. در جدول واردات و صادرات اخیر، عملیات‌هایی که درحال‌حاضر درحال اجرا هستند شامل دکمه لغو در ستون تکمیل‌شده هستند. برای توقف عملیات، روی دکمه لغو کلیک کنید. دکمه به پیام درحال لغو و سپس وقتی عملیات کاملاً متوقف شد به لغوشده تغییر می‌کند.

جدول واردات و صادرات اخیر در کنسول که واردات داده درحال انجام را با گزینه «لغو» برای توقف عملیات نشان می‌دهد.

gcloud

برای متوقف کردن عملیات درحال انجام، از فرمان operations cancel استفاده کنید:

gcloud firestore operations cancel [OPERATION_NAME]

لغو کردن عملیات درحال اجرا باعث واگرد شدن عملیات نمی‌شود. عملیات صادر کردن لغوشده اسنادی را که قبلاً صادر شده‌اند در Cloud Storage باقی می‌گذارد، و عملیات وارد کردن لغوشده به‌روزرسانی‌هایی را که قبلاً در پایگاه داده‌تان انجام شده است در جای خود باقی می‌گذارد. نمی‌توانید صادر کردن نیمه‌کاره را وارد کنید.

حذف کردن عملیات

از فرمان gcloud firestore operations delete برای برداشتن عملیاتی از فهرست عملیات اخیر استفاده کنید. این فرمان فایل‌های صادرشده از Cloud Storage را حذف نخواهد کرد.

gcloud firestore operations delete [OPERATION_NAME]

صورت‌حساب و قیمت‌گذاری برای عملیات صادر کردن و وارد کردن

قبل‌از استفاده از سرویس صادر کردن و وارد کردن مدیریت‌شده، باید صورت‌حساب را برای پروژه Google Cloud فعال کنید.

هزینه عملیات صادر کردن و وارد کردن برای خواندن و نوشتن سند با نرخ‌های فهرست‌شده در قیمت‌گذاری Cloud Firestore محاسبه می‌شود. عملیات صادر کردن به‌ازای هر سند صادرشده، یک عملیات خواندن را متحمل می‌شود. عملیات وارد کردن به‌ازای هر سند واردشده یک عملیات نوشتن ایجاد می‌کند.

فایل‌های خروجی ذخیره‌شده در Cloud Storage جزو هزینه‌های ذخیره‌سازی داده Cloud Storage شما محسوب می‌شود.

عملیات صادر کردن یا وارد کردن تا زمانی که تکمیل نشود، هشدارهای بودجه Google Cloud شما را راه‌اندازی نخواهد کرد. عملیات صادر کردن و وارد کردن بر میزان استفاده نشان‌داده‌شده در بخش استفاده کنسول تأثیری نخواهد داشت.

مشاهده هزینه‌های صادرات و واردات

عملیات صادر کردن و وارد کردن، برچسب goog-firestoremanaged:exportimport را به عملیات صورت‌حساب‌شده اعمال می‌کند. در صفحه گزارش‌های Cloud Billing، می‌توانید از این برچسب برای مشاهده هزینه‌های مربوط به عملیات وارد کردن و صادر کردن استفاده کنید:

از منو فیلترها به برچسب goog-firestoremanaged دسترسی پیدا کنید.

صادر کردن به BigQuery

می‌توانید داده‌ها را از صادر کردن Cloud Firestore در BigQuery بار کنید، اما فقط درصورتی‌که فیلتر collection-ids را مشخص کرده باشید. به بار کردن داده‌ها از برون‌بردهای Cloud Firestore مراجعه کنید.

‫BigQuery محدودیت ستون

BigQuery حد مجاز ۱۰٬۰۰۰ ستون برای هر جدول را اعمال می‌کند. Cloud Firestore عملیات صادر کردن یک طرح‌واره جدول BigQuery برای هر گروه مجموعه تولید می‌کند. در این طرحواره، هر نام فیلد منحصربه‌فرد در گروه مجموعه به ستون طرحواره تبدیل می‌شود. اگر طرح‌واره BigQuery گروه مجموعه از ۱۰٬۰۰۰ ستون فراتر رود، Cloud Firestore عملیات صادر کردن تلاش می‌کند با درنظر گرفتن فیلدهای نقشه به‌عنوان بایت، زیر حد ستون باقی بماند. اگر این تبدیل تعداد ستون‌ها را به کمتر از ۱۰٬۰۰۰ برساند، می‌توانید داده‌ها را در BigQuery بار کنید، اما نمی‌توانید زیرفیلدها را در فیلدهای نقشه پُرسمان کنید. اگر تعداد ستون‌ها همچنان از ۱۰٬۰۰۰ بیشتر باشد، عملیات صادر کردن طرح‌واره BigQuery برای گروه مجموعه تولید نمی‌کند و نمی‌توانید داده‌های آن را در BigQuery بار کنید.

قالب صادر کردن و فایل‌های فراداده

خروجی صادر کردن مدیریت‌شده از قالب گزارش LevelDB استفاده می‌کند.

فایل‌های فراداده

عملیات صادر کردن برای هر گروه مجموعه‌ای که مشخص می‌کنید، فایل فراداده ایجاد می‌کند. فایل‌های فراداده معمولاً با نام ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata هستند.

فایل‌های فراداده میان‌گیرهای پروتکل هستند و می‌توانید آن‌ها را با کامپایلر پروتکل protoc رمزگشایی کنید. برای مثال، می‌توانید فایل فراداده را رمزگشایی کنید تا گروه‌های مجموعه را که فایل‌های صادرشده حاوی آن‌ها هستند تعیین کنید:

protoc --decode_raw < export0.export_metadata

انتقال نماینده سرویس

Cloud Firestore برای مجاز کردن عملیات وارد کردن و صادر کردن، به‌جای استفاده از حساب خدمات App Engine، از عامل خدمات Cloud Firestore استفاده می‌کند. عامل سرویس و حساب سرویس از قراردادهای نام‌گذاری زیر استفاده می‌کنند:

نماینده خدمات Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Cloud Firestore قبلاً از حساب سرویس پیش‌فرض App Engine به‌جای عامل سرویس Cloud Firestore استفاده می‌کرد. اگر پایگاه داده شما همچنان از حساب سرویس App Engine برای وارد کردن یا صادر کردن داده‌ها استفاده می‌کند، توصیه می‌کنیم دستورالعمل‌های این بخش را برای انتقال به استفاده از عامل سرویس Cloud Firestore دنبال کنید.

حساب سرویس App Engine
PROJECT_ID@appspot.gserviceaccount.com

عامل سرویس Cloud Firestore ترجیح داده می‌شود چون مختص Cloud Firestore است. حساب سرویس App Engine توسط بیش‌از یک سرویس هم‌رسانی شده است.

مشاهده حساب مجوز

می‌توانید ببینید عملیات وارد کردن و صادر کردن شما از کدام حساب برای مجاز کردن درخواست‌ها از صفحه وارد کردن/صادر کردن در کنسول Google Cloud استفاده می‌کند. همچنین می‌توانید ببینید آیا پایگاه داده‌تان ازقبل از عامل سرویس Cloud Firestore استفاده می‌کند یا نه.

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.
  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید.

  4. حساب مجوز را در کنار برچسب اجرای کارهای وارد کردن/صادر کردن به‌عنوان مشاهده کنید.

اگر پروژه شما از عامل سرویس Cloud Firestore استفاده نمی‌کند، می‌توانید بااستفاده از یکی از این روش‌ها به عامل سرویس Cloud Firestore منتقل شوید:

اولین تکنیک از این تکنیک‌ها ترجیح داده می‌شود زیرا دامنه تأثیر را به یک پروژه Cloud Firestore محدود می‌کند. روش دوم ترجیح داده نمی‌شود زیرا اجازه‌های دسته Cloud Storage موجود را منتقل نمی‌کند. بااین‌حال، این برنامه از انطباق امنیتی در سطح سازمان برخوردار است.

با بررسی و به‌روزرسانی اجازه‌های دسته Cloud Storage، انتقال دهید

فرایند انتقال دو مرحله دارد:

  1. اجازه‌های دسته Cloud Storage را به‌روز کنید. برای جزئیات، بخش زیر را ببینید.
  2. انتقال به عامل سرویس Cloud Firestore را تأیید کنید.

اجازه‌های دسته عامل سرویس

برای هرگونه عملیات صادر کردن یا وارد کردن که از دسته Cloud Storage در پروژه دیگری استفاده می‌کند، باید به نماینده سرویس Cloud Firestore اجازه‌های آن دسته را اعطا کنید. برای مثال، عملیاتی که داده‌ها را به پروژه دیگری منتقل می‌کند باید به دسته‌ای در آن پروژه دیگر دسترسی داشته باشد. درغیراین‌صورت، این عملیات پس‌از انتقال به نماینده سرویس Cloud Firestore ناموفق خواهد بود.

گردش‌های کار واردات و صادرات که در همان پروژه باقی می‌مانند نیازی به تغییر در اجازه‌ها ندارند. عامل سرویس Cloud Firestore به‌طور پیش‌فرض می‌تواند به دسته‌های موجود در همان پروژه دسترسی داشته باشد.

اجازه‌های دسته‌های Cloud Storage را از پروژه‌های دیگر به‌روز کنید تا به نماینده سرویس service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com دسترسی داده شود. نقش Firestore Service Agent را به عامل سرویس اعطا کنید.

نقش Firestore Service Agent اجازه‌های خواندن و نوشتن را برای مخزن Cloud Storage اعطا می‌کند. اگر لازم است فقط اجازه‌های خواندن یا فقط نوشتن را اعطا کنید، از نقش سفارشی استفاده کنید.

فرایند انتقال شرح‌داده‌شده در بخش زیر به شما کمک می‌کند دسته‌های Cloud Storage را که ممکن است به به‌روزرسانی اجازه نیاز داشته باشند شناسایی کنید.

انتقال پروژه به «عامل سرویس Firestore»

مراحل زیر را برای انتقال از حساب سرویس App Engine به نماینده سرویس Cloud Firestore تکمیل کنید. پس‌از تکمیل، انتقال را نمی‌توان واگرد کرد.

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.
  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید.

  4. اگر پروژه‌تان هنوز به نماینده سرویس Cloud Firestore منتقل نشده است، برنمایی را می‌بینید که انتقال را شرح می‌دهد و دکمه بررسی وضعیت دسته را می‌بینید. مرحله بعدی به شما کمک می‌کند خطاهای احتمالی مربوط به اجازه را شناسایی و برطرف کنید.

    روی بررسی وضعیت Bucket کلیک کنید.

    منویی با گزینه تکمیل انتقال و فهرستی از Cloud Storage سطل نشان داده می‌شود. ممکن است چند دقیقه طول بکشد تا بارگیری فهرست تمام شود.

    این فهرست شامل دسته‌هایی است که اخیراً در عملیات وارد کردن و صادر کردن استفاده شده‌اند، اما درحال‌حاضر به عامل سرویس Cloud Firestore اجازه خواندن و نوشتن نمی‌دهند.

  5. نام اصلی عامل سرویس Cloud Firestore پروژه‌تان را یادداشت کنید. نام نماینده سرویس در زیر برچسب نماینده سرویس برای اعطای دسترسی نشان داده می‌شود.
  6. برای هر سطل در فهرست که از آن برای عملیات وارد کردن یا صادر کردن در آینده استفاده خواهید کرد، مراحل زیر را تکمیل کنید:

    1. در ردیف جدول این دسته، روی اصلاح کلیک کنید. با این کار، صفحه اجازه‌های آن سطل در زبانه جدیدی باز می‌شود.

    2. روی افزودن کلیک کنید.
    3. در فیلد اصول جدید، نام Cloud Firestore عامل سرویس خود را وارد کنید.
    4. در فیلد انتخاب نقش، عامل‌های سرویس > عامل سرویس Firestore را انتخاب کنید.
    5. روی ذخیره کردن کلیک کنید.
    6. به برگه حاوی صفحه «وارد کردن/صادر کردن» Cloud Firestore برگردید.
    7. این مراحل را برای سایر دسته‌ها در فهرست تکرار کنید. حتماً همه صفحه‌های فهرست را مشاهده کنید.
  7. روی انتقال به Firestore Service Agent کلیک کنید. اگر هنوز دسته‌هایی دارید که بررسی اجازه آن‌ها ناموفق بوده است، باید با کلیک کردن روی انتقال، انتقال را تأیید کنید.

    وقتی انتقال تکمیل شود، هشداری به شما اطلاع می‌دهد. انتقال واگردشدنی نیست.

مشاهده وضعیت انتقال

برای درستی‌سنجی کردن وضعیت انتقال پروژه:

  1. در کنسول Google Cloud، به صفحه پایگاه‌های داده بروید.

    رفتن به پایگاه‌های داده

  2. پایگاه داده موردنیاز را از فهرست پایگاه‌های داده انتخاب کنید.
  3. در منوِ پیمایش، روی وارد کردن/صادر کردن کلیک کنید.

  4. در کنار برچسب Import/Export jobs run as، به‌دنبال اصلی بگردید.

    اگر مدیر اصلی service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com است، پروژه‌تان قبلاً به عامل سرویس Cloud Firestore منتقل شده است. انتقال واگردشدنی نیست.

    اگر پروژه منتقل نشده باشد، برنمایی در بالای صفحه با دکمه بررسی وضعیت Bucket نشان داده می‌شود. برای تکمیل انتقال، انتقال به عامل سرویس Firestore را ببینید.

افزودن محدودیت خط‌مشی سراسری سازمان

  • محدودیت زیر را در خط‌مشی سازمانتان تنظیم کنید:

    Require Firestore Service Agent for import/export (firestore.requireP4SAforImportExport).

    این محدودیت مستلزم آن است که عملیات واردات و صادرات از نماینده سرویس Cloud Firestore برای صدور مجوز درخواست‌ها استفاده کند. برای تنظیم این محدودیت، به ایجاد و مدیریت خط‌مشی‌های سازمان مراجعه کنید.

اعمال این محدودیت خط‌مشی سازمانی به‌طور خودکار اجازه‌های دسته Cloud Storageمناسب را برای عامل سرویس Cloud Firestore اعطا نمی‌کند.

اگر این محدودیت باعث ایجاد خطاهای اجازه برای هریک از گردش‌های کاری وارد کردن یا صادر کردن می‌شود، می‌توانید آن را غیرفعال کنید تا به استفاده از حساب سرویس پیش‌فرض برگردید. پس‌از بررسی و به‌روزرسانی Cloud Storage اجازه‌های مجموعه، می‌توانید محدودیت را دوباره فعال کنید.