یک سرویس Firebase Data Connect سه جزء اصلی دارد:
- یک پایگاه داده زیربنایی PostgreSQL با طرحواره SQL خاص خود
- یک طرح برنامه کاربردی Data Connect (اعلام شده در فایل های
.gql
شما) - تعدادی رابط (اعلام شده در فایل های
.gql
شما).
طرحواره SQL منبع حقیقت برای داده های شما است، طرح Data Connect نحوه مشاهده اتصال دهنده های شما این داده ها است، و رابط ها API هایی را که مشتریان شما می توانند برای دسترسی به آن داده ها استفاده کنند، اعلام می کنند.
هنگامی که سرویس Data Connect خود را با CLI اجرا می کنید، طرح SQL خود را منتقل می کنید، سپس طرح Data Connect خود را به روز می کنید، سپس هر یک از اتصال دهنده های خود را به روز می کنید.
مفاهیم مهم استقرار
برای درک کامل استقرار، توجه به مفاهیم کلیدی در مورد طرحواره ها و رابط ها مهم است.
استقرار طرحواره
استقرار یک طرحواره Data Connect بر روی طرح SQL برای پایگاه داده Cloud SQL شما تأثیر می گذارد. Data Connect به شما کمک می کند طرحواره های خود را در حین استقرار مهاجرت دهید ، چه با یک پایگاه داده جدید کار کنید یا نیاز به تطبیق غیر مخرب یک پایگاه داده موجود داشته باشید.
انتقال طرحواره Data Connect دو حالت اعتبارسنجی طرحواره متفاوت دارد: سخت و سازگار .
اعتبار سنجی حالت دقیق مستلزم آن است که طرح پایگاه داده دقیقاً با طرح برنامه مطابقت داشته باشد قبل از اینکه طرحواره برنامه به روز شود. هر جدول یا ستونی که در طرحواره Data Connect شما استفاده نمی شود از پایگاه داده حذف می شود.
اعتبار سنجی حالت سازگار مستلزم آن است که طرح پایگاه داده قبل از اینکه طرحواره برنامه به روز شود با طرح برنامه سازگار باشد. هرگونه تغییر اضافی که طرحواره ها، جداول یا ستون ها را رها کند اختیاری است.
سازگار به این معنی است که مهاجرت های طرحواره فقط بر جداول و ستون های ارجاع شده در طرح برنامه شما تأثیر می گذارد. عناصر موجود در پایگاه داده شما که توسط طرح برنامه شما استفاده نمی شوند، بدون تغییر باقی می مانند. بنابراین، پس از استقرار، پایگاه داده شما ممکن است حاوی موارد زیر باشد:
- طرحواره ها
- جداول
- ستون ها
استقرار اتصال دهنده ها
جستجوها و جهش های Data Connect توسط کد مشتری ارسال نمی شوند و روی سرور اجرا می شوند. در عوض، هنگام استقرار، این عملیات Data Connect مانند Cloud Functions در سرور ذخیره میشوند. این بدان معنی است که استقرار ممکن است کاربران موجود را از بین ببرد.
گردش کار استقرار را دنبال کنید
شما می توانید روی یک پروژه Data Connect هم در یک فهرست پروژه محلی و هم در کنسول Firebase کار کنید.
یک جریان استقرار توصیه شده شامل:
- فهرست کردن طرحوارهها و رابطهای مستقر در حال حاضر با
firebase dataconnect:services:list
. - مدیریت هر گونه به روز رسانی طرحواره
- تفاوت های طرحواره SQL را بین پایگاه داده Cloud SQL و طرحواره محلی Data Connect با
firebase dataconnect:sql:diff
بررسی کنید. - در صورت نیاز، مهاجرت طرحواره SQL را با
dataconnect:sql:migrate
انجام دهید.
- تفاوت های طرحواره SQL را بین پایگاه داده Cloud SQL و طرحواره محلی Data Connect با
- اجرای طرحواره و استقرار اتصال با اجرای
firebase deploy
، فقط برای طرح شما، فقط اتصال دهنده ها یا ترکیبی از منابع.
منابع Data Connect مستقر و مدیریت کنید
این ایده خوبی است که منابع تولید را قبل از اجرای استقرار بررسی کنید.
firebase dataconnect:services:list
هنگامی که در یک فهرست پروژه محلی کار می کنید، معمولاً از دستور firebase deploy
برای استقرار طرح و اتصالات خود در تولید، با بازخورد تعاملی استفاده می کنید.
با استفاده از هر دستور deploy
، پرچم --only dataconnect
به شما امکان می دهد تا استقرارهای Data Connect را از سایر محصولات در پروژه خود جدا کنید.
استقرار عادی
firebase deploy --only dataconnect
در این استقرار عادی، Firebase CLI تلاش میکند تا طرح و اتصالات شما را مستقر کند.
تأیید می کند که طرح جدید هیچ کانکتور موجود را قطع نمی کند. هنگام ایجاد تغییرات اساسی، بهترین شیوه ها را دنبال کنید.
همچنین تأیید می کند که طرح SQL قبلاً قبل از به روز رسانی طرح Data Connect منتقل شده است. در غیر این صورت، به طور خودکار از شما خواسته میشود تا مراحل لازم را برای انتقال طرحوارهها انجام دهید.
--force
استقرار اجباری پرچم
firebase deploy --only dataconnect --force
اگر اعتبار سنجی کانکتور یا طرحواره SQL نگران کننده نیست، می توانید دستور را با --force
دوباره اجرا کنید تا آنها را نادیده بگیرید.
--force
deploy همچنان بررسی می کند که آیا طرح SQL با طرح Data Connect مطابقت دارد یا خیر، در مورد ناسازگاری هشدار می دهد و درخواست می کند.
منابع انتخاب شده را مستقر کنید
برای استقرار با کنترل دانه ای بیشتر، از پرچم --only
با آرگومان serviceId
استفاده کنید. برای استقرار فقط تغییرات طرحواره برای یک سرویس خاص:
firebase deploy --only dataconnect:serviceId:schema
همچنین می توانید تمام منابع را برای یک رابط و سرویس مشخص مستقر کنید.
firebase deploy --only dataconnect:serviceId:connectorId
در نهایت، میتوانید طرح و همه رابطها را برای یک سرویس منفرد مستقر کنید.
firebase deploy --only dataconnect:serviceId
یک استقرار را به عقب برگردانید
برای انجام یک بازگشت دستی، نسخه قبلی کد خود را بررسی کرده و آن را اجرا کنید. اگر استقرار اولیه شامل تغییرات مخربی بود، ممکن است نتوانید اطلاعات حذف شده را به طور کامل بازیابی کنید.
انتقال طرحواره های پایگاه داده
اگر به سرعت در حال نمونهسازی اولیه هستید، طرحوارهها را آزمایش میکنید و میدانید که تغییرات طرح شما مخرب هستند، میتوانید با استفاده از ابزار Data Connect برای تأیید تغییرات و نظارت بر نحوه انجام بهروزرسانیها برنامهریزی کنید.
تغییرات طرحواره SQL متفاوت
می توانید تغییرات را تأیید کنید:
firebase dataconnect:sql:diff
شما می توانید لیستی از خدمات را که با کاما جدا شده اند ارسال کنید.
این دستور طرح محلی یک سرویس را با طرح فعلی پایگاه داده مربوطه Cloud SQL مقایسه می کند. اگر تفاوتی وجود داشته باشد، دستورات SQL را که برای رفع این تفاوت اجرا می شوند چاپ می کند
اعمال تغییرات
هنگامی که راضی و آماده اعمال تغییرات در نمونه طرحواره Cloud SQL هستید، فرمان firebase dataconnect:sql:migrate
را صادر کنید. از شما خواسته می شود که تغییرات را تأیید کنید.
firebase dataconnect:sql:migrate [serviceId]
در محیط های تعاملی، دستورات مهاجرت SQL و دستورات عمل نمایش داده می شوند.
مهاجرت در حالت سخت یا سازگار
در یک پروژه کاملاً جدید، حالت پیشفرض اعتبارسنجی طرحواره اعمال میشود. رفتار فرمان migrate
به این صورت است که تمام تغییرات در طرح پایگاه داده که توسط طرح برنامه شما مورد نیاز است را اعمال می کند، سپس از شما می خواهد تا عملیات اختیاری را تأیید کنید که طرحواره ها، جداول یا ستون ها را رها می کند تا شمای پایگاه داده شما را مجبور کند که دقیقاً با طرح برنامه شما مطابقت داشته باشد.
می توانید این رفتار را با تغییر فایل dataconnect.yaml
خود تنظیم کنید. کلید schemaValidation
را برداشته و COMPATIBLE
را اعلام کنید تا فقط تغییرات مورد نیاز در مهاجرت اعمال شود.
schemaValidation: "COMPATIBLE"
یا رفتار را روی STRICT
تنظیم کنید تا تمام تغییرات طرحواره اعمال شود و طرح پایگاه داده شما مجبور شود با طرح برنامه شما مطابقت داشته باشد.
schemaValidation: "STRICT"
برای اطلاعات بیشتر به مرجع Data Connect CLI مراجعه کنید.
بهترین روش ها برای مدیریت طرحواره ها و رابط ها
Firebase برخی از اقدامات را توصیه می کند که در پروژه های Data Connect خود رعایت کنید.
تغییرات شکستن را به حداقل برسانید
- Firebase توصیه می کند که طرحواره Data Connect و فایل های رابط خود را در کنترل منبع نگه دارید.
- در صورت امکان از شکستن تغییرات خودداری کنید. برخی از نمونههای متداول تغییرات شکسته عبارتند از:
- حذف یک فیلد از طرح شما
- ایجاد یک فیلد nullable در طرح شما غیر قابل تهی کردن (یعنی
Int
->Int!
) - تغییر نام یک فیلد در طرحواره
- اگر نیاز به حذف یک فیلد از طرحواره خود دارید، آن را به چند استقرار تقسیم کنید تا تأثیر را به حداقل برسانید:
- ابتدا، هر گونه ارجاع به فیلد را در کانکتورهای خود حذف کنید و تغییر را اجرا کنید.
- در مرحله بعد، برنامه های خود را برای استفاده از SDK های جدید تولید شده به روز کنید.
- در نهایت، فیلد را در فایل
.gql
schema خود حذف کنید، طرح SQL خود را انتقال دهید و یک بار دیگر آن را مستقر کنید.
هنگام کار با پایگاه داده های جدید از حالت سختگیرانه استفاده کنید
اگر از Data Connect با یک پایگاه داده جدید استفاده می کنید و به طور فعال طرح برنامه کاربردی خود را توسعه می دهید، و می خواهید مطمئن شوید که طرح پایگاه داده شما دقیقاً مطابق با طرح برنامه کاربردی شما است، می توانید schemaValidation: "STRICT"
در dataconnect.yaml
خود مشخص کنید.
این اطمینان حاصل می کند که تغییرات اختیاری نیز اعمال می شود.
هنگامی که داده های تولید در پایگاه داده خود دارید از حالت سازگار استفاده کنید
اگر در حال ایجاد تغییراتی در پایگاه دادهای هستید که حاوی دادههای تولیدی است، توصیه میکنیم برای اطمینان از حذف نشدن دادههای موجود، مهاجرتهای طرحواره خود را در حالت سازگار اجرا کنید. شما می توانید schemaValidation: "COMPATIBLE"
را در dataconnect.yaml
خود مشخص کنید
در حالت سازگار، تنها تغییرات مورد نیاز مهاجرت طرحواره در پایگاه داده شما اعمال می شود.
-
DROP SCHEMA
،DROP TABLE
وDROP COLUMN
عبارتهای اختیاری در نظر گرفته میشوند و برای طرح شما ایجاد نمیشوند، حتی اگر طرح پایگاه داده شما حاوی طرحوارهها، جداول یا ستونهایی باشد که در طرح برنامه شما تعریف نشده باشند. - اگر جدول پایگاه داده شما حاوی یک ستون غیر تهی است که در طرح برنامه شما گنجانده نشده است، محدودیت
NOT NULL
حذف می شود، بنابراین داده ها همچنان می توانند با اتصال دهنده های تعریف شده به جدول اضافه شوند.
بعدش چی؟
- استقرار و مدیریت کد مشتری که با SDKهای تولید شده ایجاد می کنید در راهنماهای Android ، iOS ، وب و Flutter پوشش داده شده است.
- برای اطلاعات بیشتر درباره ابزار استقرار، مرجع Data Connect CLI و مرجع فایل پیکربندی Data Connect را بررسی کنید.