برای انتقال دادهها از پایگاه داده نسخه استاندارد Firestore به پایگاه داده نسخه سازمانی Firestore، توصیه میکنیم از یکی از گزینههای زیر استفاده کنید:
ویژگیهای واردات و صادرات . فایلهای داده حاصل از عملیات واردات با هر دو نسخه Enterprise و Standard سازگار هستند.
الگوی Dataflow
firestore-to-firestore. سرویس Dataflow به شما امکان میدهد خطوط لوله داده بسازید و الگویfirestore-to-firestoreیک خط لوله دستهای بین پایگاههای داده Cloud Firestore ایجاد میکند.
ایمپورت و اکسپورت گزینه سادهتری برای اجرا با گزینههای پیکربندی کمتر است.
قالب Dataflow قابل تنظیمتر است. میتوانید کد قالب را برای انجام مهاجرتهای جزئی یا تبدیل دادهها گسترش دهید. همچنین میتوانید تعداد و اندازه workerها را کنترل کنید.
هر دو گزینه از مهاجرت بین پروژهها و مناطق مختلف پشتیبانی میکنند.
انتقال دادهها با export و import
برای انتقال دادهها با عملیات صادرات و واردات، به بخش صادرات و واردات دادهها مراجعه کنید. برای انتقال دادهها به یک پایگاه داده در پروژه دیگر، به بخش انتقال دادهها بین پروژهها مراجعه کنید.
انتقال دادهها با الگوی Dataflow
برای انتقال دادهها با الگوی firestore-to-firestore Dataflow از دستورالعملهای زیر استفاده کنید.
قبل از اینکه شروع کنی
قبل از شروع انتقال دادهها، مطمئن شوید که بازیابی نقطهای در زمان (PITR) در پایگاه داده منبع فعال شده است. کار Dataflow از PITR برای خواندن دادهها در یک برچسب زمانی PITR استفاده میکند. اگر PITR غیرفعال باشد، اگر کار بیش از یک ساعت طول بکشد، با شکست مواجه میشود.
نقشهای مورد نیاز که در بخش بعدی توضیح داده شده است را اختصاص دهید.
نقشهای مورد نیاز
برای انتقال دادهها از یک پایگاه داده به پایگاه داده دیگر، نقشهای زیر را اختصاص دهید. همچنین ممکن است بتوانید مجوزهای لازم را از طریق نقشهای سفارشی یا سایر نقشهای از پیش تعریف شده دریافت کنید:
- برای دریافت مجوزهایی که برای ایجاد یک پایگاه داده جدید و دسترسی به دادههای Cloud Firestore نیاز دارید، از مدیر خود بخواهید که نقش مدیریت هویت و دسترسی (IAM) Cloud Datastore Owner (
roles/datastore.owner) را در پروژه شما به شما اعطا کند. برای اینکه به کار Dataflow دسترسی خواندن و نوشتن به پایگاههای داده Cloud Firestore خود را بدهید، حساب سرویس کارگر Dataflow را اختصاص دهید (برای مثال،
PROJECT_NUMBER -compute@) نقش IAM کاربر Cloud Datastore (roles/datastore.user) در پروژه شما.برای اطلاعات بیشتر در مورد امنیت Dataflow ، به بخش امنیت و مجوزهای Dataflow مراجعه کنید.
برای اطلاعات بیشتر در مورد اعطای نقشهای IAM، به مدیریت دسترسی به پروژهها، پوشهها و سازمانها مراجعه کنید.
۱. یک پایگاه داده جدید نسخه Firestore Enterprise ایجاد کنید
برای انتقال دادهها از یک پایگاه داده نسخه استاندارد به یک پایگاه داده نسخه سازمانی، ابتدا باید پایگاه داده مقصد نسخه سازمانی را ایجاد کنید. به بخش ایجاد پایگاه داده مراجعه کنید.
۲. الگوی Dataflow firestore-to-firestore را اجرا کنید
کار Dataflow خود را با الگوی firestore-to-firestore پیکربندی و اجرا کنید. این الگوها از مهاجرت کل پایگاه داده یا فقط گروههای مجموعه مشخص شده پشتیبانی میکنند.
محدودیتها
محدودیتهای زیر را برای الگوی Dataflow firestore-to-firestore در نظر بگیرید:
- پایگاه داده منبع باید یک پایگاه داده نسخه استاندارد باشد.
- این مهاجرت، دادهها را در یک زمان خواندن خاص میخواند. پیشنهاد میکنیم بازیابی نقطهای در زمان (PITR) را در پایگاه داده منبع فعال کنید. اگر PITR فعال نباشد، دادهها پس از یک ساعت منقضی میشوند و این ممکن است زمان کافی برای تکمیل مهاجرت دادهها نباشد. PITR مدت زمان نگهداری دادهها را تا هفت روز افزایش میدهد.
- ایندکسها منتقل نمیشوند.
وظیفه Dataflow پیکربندیهای پایگاه داده مانند سیاستهای TTL، پشتیبانگیری، PITR و کلیدهای رمزگذاری مدیریتشده توسط مشتری (CMEK) را منتقل نمیکند.
شما باید این تنظیمات را در پایگاه داده جدید پیکربندی کنید. برای بهبود سرعت مهاجرت دادهها، تا پس از مهاجرت صبر کنید تا TTL، پشتیبانگیریها و PITR را در پایگاه داده مقصد پیکربندی کنید.
مثالهای زیر نحوه اجرای الگو را با استفاده از Google Cloud CLI نشان میدهند.
انتقال تمام دادهها
برای انتقال تمام دادهها، از دستور زیر استفاده کنید:
gcloud dataflow flex-template run "JOB_NAME" \ --project "PROJECT" \ --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Firestore_to_Firestore \ --region REGION_NAME \ --parameters "sourceProjectId=SOURCE_PROJECT_ID" \ --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \ --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \ --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \ --parameters "readTime=READ_TIME"
موارد زیر را جایگزین کنید:
-
JOB_NAME: نامی برای شغل. -
PROJECT: شناسه پروژه Google Cloud شما. -
REGION_NAME: مکان Google Cloud که میخواهید کار Dataflow را در آن اجرا کنید. از مکانی استفاده کنید که نزدیک پایگاههای داده شما باشد. VERSION: نسخه قالبی که میخواهید استفاده کنید. میتوانید از مقادیر زیر استفاده کنید:-
latestبرای استفاده از آخرین نسخه الگو، که در پوشه والد بدون تاریخ در bucket موجود است— gs://dataflow-templates- REGION_NAME /latest/ - نام نسخه، مانند
2023-09-12-00_RC00، برای استفاده از یک نسخه خاص از الگو، که میتواند به صورت تو در تو در پوشه والد مربوطه در سطل - gs://dataflow-templates- REGION_NAME / - یافت شود.
-
SOURCE_PROJECT_ID: شناسه پروژه منبع Google Cloud که شامل پایگاه داده نسخه استاندارد Firestore است.SOURCE_DATABASE_ID: شناسه پایگاه داده منبع Cloud Firestore .DESTINATION_PROJECT_ID: شناسه پروژه مقصد Google Cloud برای پایگاه داده جدید Cloud Firestore .DESTINATION_DATABASE_ID: شناسه پایگاه داده Cloud Firestore مقصد.READ_TIME: مهر زمانی برای خواندن دادهها از پایگاه داده منبع. روی یک مهر زمانی با فرمت RFC 3339، بر اساس جزئیات دقیق مانند2026-05-15T16:31:00.00Zتنظیم میشود.اولین مهر زمانی معتبر به تنظیمات بازیابی نقطهای (PITR) شما بستگی دارد. به بخش «دریافت اولین زمان نسخه» مراجعه کنید.
گروههای مجموعه مشخص شده را مهاجرت دهید
برای انتقال فقط گروههای خاص از مجموعه، از دستور زیر استفاده کنید:
gcloud dataflow jobs run "JOB_NAME" \ --project "PROJECT" \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Firestore_to_Firestore \ --region REGION_NAME \ --parameters "sourceProjectId=SOURCE_PROJECT_ID" \ --parameters "sourceDatabaseId=SOURCE_DATABASE_ID" \ --parameters "collectionGroupIds=COLLECTION_GROUP_IDS" \ --parameters "destinationProjectId=DESTINATION_PROJECT_ID" \ --parameters "destinationDatabaseId=DESTINATION_DATABASE_ID" \ --parameters "readTime=READ_TIME"
موارد زیر را جایگزین کنید:
-
JOB_NAME: نامی برای شغل. -
PROJECT: شناسه پروژه Google Cloud شما. -
REGION_NAME: مکان Google Cloud که میخواهید کار Dataflow را در آن اجرا کنید. از مکانی استفاده کنید که نزدیک پایگاههای داده شما باشد. VERSION: نسخه قالبی که میخواهید استفاده کنید. میتوانید از مقادیر زیر استفاده کنید:-
latestبرای استفاده از آخرین نسخه الگو، که در پوشه والد بدون تاریخ در bucket موجود است— gs://dataflow-templates- REGION_NAME /latest/ - نام نسخه، مانند
2023-09-12-00_RC00، برای استفاده از یک نسخه خاص از الگو، که میتواند به صورت تو در تو در پوشه والد مربوطه در سطل - gs://dataflow-templates- REGION_NAME / - یافت شود.
-
SOURCE_PROJECT_ID: شناسه پروژه منبع Google Cloud که شامل پایگاه داده نسخه استاندارد Firestore است.SOURCE_DATABASE_ID: شناسه پایگاه داده منبع Cloud Firestore .COLLECTION_GROUP_IDS: فهرستی از شناسههای گروههای مجموعه که با کاما از هم جدا شدهاند تا منتقل شوند.زیرمجموعهها به صورت بازگشتی اضافه نمیشوند. برای مثال، اگر گروه مجموعه
usersرا مشخص کنید، مهاجرت شامل زیرمجموعهmessagesدر/users/userid/messagesنمیشود، مگر اینکه گروه مجموعهmessagesرا نیز مشخص کنید.DESTINATION_PROJECT_ID: شناسه پروژه مقصد Google Cloud برای پایگاه داده جدید Cloud Firestore .DESTINATION_DATABASE_ID: شناسه پایگاه داده Cloud Firestore مقصد.READ_TIME: مهر زمانی برای خواندن دادهها از پایگاه داده منبع. روی یک مهر زمانی با فرمت RFC 3339، بر اساس جزئیات دقیق مانند2026-05-15T16:31:00.00Zتنظیم میشود.اولین مهر زمانی معتبر به تنظیمات بازیابی نقطهای (PITR) شما بستگی دارد. به بخش «دریافت اولین زمان نسخه» مراجعه کنید.
۳. پیکربندی پایگاه داده
کار firestore-to-firestore فقط دادهها را منتقل میکند. ایندکسها و سایر تنظیمات پایگاه داده منتقل نمیشوند . علاوه بر انتقال دادهها، پیکربندی موارد زیر را در پایگاه داده جدید در نظر بگیرید:
ایندکسها : پایگاههای داده نسخه Firestore Enterprise برای اجرای کوئریها الزاماً به ایندکس نیاز ندارند و بهطور پیشفرض ایندکسهای خودکار ایجاد نمیکنند. برای ایجاد ایندکس برای کوئریهای خود به موارد زیر مراجعه کنید:
- نمای کلی فهرست نسخه سازمانی فایراستور .
- بهینهسازی عملکرد پرسوجو با استفاده از ایندکسها
- شما میتوانید از رابط خط فرمان Firebase CLI) برای اکسپورت کردن ایندکسها و استقرار آنها در پایگاه داده جدید استفاده کنید.
- از ابزار Query Insights برای شناسایی کوئریهایی که میتوانید با استفاده از یک ایندکس بهینهسازی کنید، استفاده کنید.
TTL : ایجاد سیاستهای TTL .
پشتیبانگیری : پشتیبانگیریها را تنظیم کنید .
PITR : فعال کردن PITR .
پس از پیکربندی پایگاه داده، میتوانید آزمایش برنامه خود را با پایگاه داده جدید ادامه دهید. برای مهاجرت کامل، برنامههای خود را برای استفاده از پایگاه داده جدید بهروزرسانی کنید.
عیبیابی
برای پایگاههای داده بزرگ، اگر کار بخواهد دادههای زیادی را به طور همزمان بخواند، ممکن است با شکست مواجه شود. برای رفع این مشکل:
مقدار
maxNumWorkersرا افزایش دهید.
قدم بعدی چیست؟
- درباره پرسوجو کردن دادهها با عملیات Pipeline اطلاعات کسب کنید.
- آشنایی با نحوه بهینهسازی کوئریها در نسخه سازمانی فایراستور
- درک کنید که چگونه یک پایگاه داده نسخه Enterprise مقیاسپذیر میشود .