از سرویس حذف انبوه مدیریتشده برای حذف دادهها از پایگاه داده خود استفاده کنید. این ویژگی از حذف در برابر یک یا چند گروه مجموعه پشتیبانی میکند.
این صفحه نحوه حذف اسناد به صورت دسته جمعی با استفاده از سرویس حذف دسته جمعی مدیریت شده را شرح میدهد. سرویس حذف دسته جمعی مدیریت شده Cloud Firestore از طریق ابزار خط فرمان gcloud و API REST Cloud Firestore در دسترس است.
قبل از اینکه شروع کنی
قبل از اینکه بتوانید از سرویس حذف دستهای مدیریتشده استفاده کنید، باید مراحل زیر را انجام دهید:
- فعال کردن صورتحساب برای پروژه Google Cloud شما. فقط پروژههای Google Cloud که صورتحساب آنها فعال است میتوانند از قابلیت حذف دسته جمعی استفاده کنند.
مطمئن شوید که حساب کاربری شما مجوزهای لازم برای Cloud Firestore را دارد. اگر شما صاحب پروژه هستید، حساب کاربری شما مجوزهای لازم را دارد. در غیر این صورت، نقشهای زیر مجوزهای لازم را برای عملیات حذف دستهای اعطا میکنند:
- نقشهای Cloud Firestore :
Owner،Cloud Datastore OwnerیاCloud Datastore Bulk Admin
- نقشهای Cloud Firestore :
راهاندازی gcloud برای پروژه شما
شما میتوانید عملیات حذف دستهای را از طریق کنسول گوگل کلود یا ابزار خط فرمان gcloud آغاز کنید. برای استفاده از gcloud ، ابزار خط فرمان را تنظیم کرده و از طریق یکی از روشهای زیر به پروژه خود متصل شوید:
با استفاده از Cloud Shell از کنسول Google Cloud
gcloudدسترسی پیدا کنید.مطمئن شوید که
gcloudبرای پروژه صحیح پیکربندی شده است:gcloud config set project [PROJECT_ID]
حذف دسته جمعی دادهها
عملیات حذف دستهای ابتدا تمام اسناد مربوطه را در پایگاه داده شما پیدا کرده و آنها را به صورت دستهای حذف میکند. شما همچنان میتوانید این اسناد را جستجو یا بخوانید، در حالی که نتایج ممکن است بسته به پیشرفت انجام شده متفاوت باشد. حذف دستهای هیچ سندی را که پس از شروع عملیات اضافه یا تغییر داده شده است، حذف نمیکند.
حذف گروهی گروههای خاص از مجموعه
جیکلاود
برای حذف گروهی گروههای خاص از مجموعه، از پرچم --collection-ids استفاده کنید. این عملیات فقط گروههای مجموعه با شناسههای داده شده را حذف میکند. یک گروه مجموعه شامل تمام اسناد و اسناد تو در تو (در هر مسیری) با گروههای مجموعه مشخص شده است.
gcloud firestore bulk-delete \ --collection-ids=[COLLECTION_GROUP_ID_1_OR_KIND_1],[COLLECTION_GROUP_ID_2_OR_KIND_2],[SUBCOLLECTION_GROUP_ID_1_OR_KIND_3] \ --database=[DATABASE]
restaurants از پایگاه داده cymbal هستند. در زیر هر سند رستوران، چندین زیرمجموعه تودرتو مانند ratings ، reviews و outlets وجود دارد. برای حذف گروهی گروههای مجموعه restaurants و reviews ، دستور شما به شکل زیر خواهد بود:gcloud firestore bulk-delete \ --collection-ids=restaurants,reviews \ --database='cymbal'
مدیریت عملیات حذف دسته جمعی
پس از شروع عملیات حذف دستهای، Cloud Firestore به عملیات یک نام منحصر به فرد اختصاص میدهد. میتوانید از نام عملیات برای حذف، لغو یا بررسی وضعیت عملیات استفاده کنید.
نام عملیاتها با پیشوند projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/ شروع میشوند، برای مثال:
projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg
با این حال، میتوانید هنگام مشخص کردن نام عملیات برای دستورات describe ، cancel و delete پیشوند را حذف کنید.
فهرست کردن تمام عملیات حذف دسته جمعی
جیکلاود
برای مشاهدهی تمام عملیاتهای در حال اجرا و عملیاتهای اخیراً تکمیلشده، از جمله عملیاتهای حذف دستهای، از دستور operations list استفاده کنید:
gcloud firestore operations list
بررسی وضعیت عملیات
جیکلاود
برای نمایش وضعیت عملیات حذف دستهای، از دستور operations describe استفاده کنید.
gcloud firestore operations describe [OPERATION_NAME]
تخمین زمان تکمیل
درخواست وضعیت یک عملیات طولانیمدت، معیارهای workEstimated و workCompleted را برمیگرداند. هر یک از این معیارها هم بر حسب تعداد بایتها و هم بر حسب تعداد اسناد برگردانده میشوند:
workEstimatedتعداد کل تخمینی بایتها و اسنادی را که یک عملیات پردازش خواهد کرد، نشان میدهد. اگر Cloud Firestore نتواند تخمینی ارائه دهد، ممکن است این معیار را حذف کند.workCompletedتعداد بایتها و اسناد حذف شده تاکنون را نشان میدهد. پس از اتمام عملیات، مقدار آن تعداد کل بایتها و اسنادی را که واقعاً پردازش شدهاند نشان میدهد که ممکن است بزرگتر از مقدارworkEstimatedباشد.
تقسیم workCompleted بر اساس workEstimated برای یک تخمین پیشرفت تقریبی. این تخمین ممکن است دقیق نباشد، زیرا به جمعآوری آمار با تأخیر بستگی دارد.
لغو یک عملیات
جیکلاود
برای متوقف کردن عملیاتی که در حال انجام است، از دستور operations cancel استفاده کنید:
gcloud firestore operations cancel [OPERATION_NAME]
لغو یک عملیات در حال اجرا، آن را خنثی نمیکند. عملیات حذف دستهای لغو شده، اسناد حذف شده را بازیابی نمیکند.
حذف یک عملیات
از دستور gcloud firestore operations delete برای حذف یک عملیات تکمیل شده از لیست عملیاتهای اخیر استفاده کنید. برای لغو یک عملیات در حال اجرا، از عملیات لغو قبلی استفاده کنید.
gcloud firestore operations delete [OPERATION_NAME]
صدور صورتحساب و قیمتگذاری برای عملیات حذف انبوه
قبل از استفاده از سرویس حذف انبوه مدیریتشده، لازم است که پرداخت هزینه را برای پروژه Google Cloud خود فعال کنید.
عملیات حذف انبوه برای خواندن و حذف اسناد با نرخهای ذکر شده در قیمتگذاری Cloud Firestore هزینه دریافت میکند. عملیات حذف انبوه شامل یک خواندن ورودی فهرست به ازای هر سند یافت شده و یک عملیات حذف به ازای هر سند حذف شده است. برای خواندن حداکثر ۱۰۰۰ ورودی فهرست، یک عملیات خواندن از شما هزینه دریافت میشود. به عنوان مثال، برای یک عملیات حذف انبوه که ۱۵۰۰ سند را حذف میکند، ۲ بار خواندن سند و ۱۵۰۰ بار حذف سند از شما هزینه دریافت میشود.توجه داشته باشید که Cloud Firestore هزینه را بر اساس کار انجام شده دریافت میکند. اگر عملیات لغو شود یا به دلیل خطای کاربر با شکست مواجه شود، هزینه پیشرفت کار از شما دریافت خواهد شد. Cloud Firestore برای اسنادی که در نهایت حذف نمیشوند، مانند اسنادی که پس از شروع عملیات حذف اصلاح میشوند، هزینهای برای خواندن یا حذف دریافت نمیکند. هزینه در روز اتمام عملیات محاسبه خواهد شد.
عملیات حذف انبوه تا پس از اتمام، هشدارهای بودجه Google Cloud شما را فعال نمیکند. به طور مشابه، خواندنها و حذفهای انجام شده در طول عملیات حذف انبوه، پس از اتمام عملیات، بر میزان استفاده از ردیف رایگان شما اعمال میشوند. عملیات حذف انبوه بر میزان استفاده نشان داده شده در بخش استفاده از کنسول تأثیری ندارد.
مشاهده هزینههای حذف دسته جمعی
عملیات حذف دسته جمعی، برچسب goog-firestoremanaged:bulkdelete را برای عملیات دارای صورتحساب اعمال میکند. در صفحه گزارشهای Cloud Billing ، میتوانید از این برچسب برای مشاهده هزینههای مربوط به عملیات حذف دسته جمعی استفاده کنید.
بهترین شیوهها
از پرش از روی دادههای حذفشده که ممکن است سرعت پرسوجوها را کاهش دهد، خودداری کنید .