استقرار و مدیریت طرحواره ها و اتصال دهنده های Data Connect

یک سرویس 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 کار کنید.

یک جریان استقرار توصیه شده شامل:

  1. فهرست کردن طرح‌واره‌ها و رابط‌های مستقر در حال حاضر با firebase dataconnect:services:list .
  2. مدیریت هر گونه به روز رسانی طرحواره
    1. تفاوت های طرحواره SQL را بین پایگاه داده Cloud SQL و طرحواره محلی Data Connect با firebase dataconnect:sql:diff بررسی کنید.
    2. در صورت نیاز، مهاجرت طرحواره SQL را با dataconnect:sql:migrate انجام دهید.
  3. اجرای طرحواره و استقرار اتصال با اجرای 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 حذف می شود، بنابراین داده ها همچنان می توانند با اتصال دهنده های تعریف شده به جدول اضافه شوند.

بعدش چی؟