Wdrażanie schematów i łączników Data Connectors oraz zarządzanie nimi

Usługa Firebase Data Connect składa się z 3 głównych komponentów:

  • podstawowa baza danych PostgreSQL ze swoim własnym schematem SQL.
  • Data Connect schemat aplikacji (zadeklarowany w plikach .gql);
  • wtyczek (deklarowanych w plikach .gql).

Schemat SQL jest źródłem informacji o Twoich danych, a schemat Data Connect określa, jak oprogramowanie sprzęgające może wyświetlać te dane. Oprogramowanie sprzęgające deklaruje interfejsy API, których klienci mogą używać do uzyskiwania dostępu do tych danych.

Podczas wdrażania usługi Data Connect za pomocą interfejsu wiersza poleceń musisz najpierw przenieść schemat SQL, a następnie zaktualizować schemat Data Connect i każdy z elementów sprzęgających.

Ważne pojęcia związane z wdrożeniem

Aby w pełni zrozumieć wdrożenie, musisz poznać podstawowe pojęcia dotyczące schematów i złączy.

Wdrożenia schematu

Wdrażanie schematu Data Connect wpływa na schemat SQL bazy danych Cloud SQL. Data Connect ułatwia migrację schematów podczas wdrażania, niezależnie od tego, czy pracujesz z nową bazą danych, czy musisz bez utraty danych dostosować istniejącą bazę danych.

Migracje schematu Data Connect mają 2 różne tryby sprawdzania poprawności schematu: ścisły i zgodny.

  • Walidacja w trybie ścisłym wymaga, aby schemat bazy danych ściśle odpowiadał schematowi aplikacji, zanim będzie można zaktualizować schemat aplikacji. Wszystkie tabele i kolumny, które nie są używane w schemacie Data Connect, zostaną usunięte z bazy danych.

  • Weryfikacja w trybie zgodności wymaga, aby schemat bazy danych był zgodny ze schematem aplikacji, zanim będzie można zaktualizować schemat aplikacji. Dodatkowe zmiany, które powodują usunięcie schematów, tabel lub kolumn, są opcjonalne.

    Zgodność oznacza, że migracje schematu dotyczą tylko tabel i kolumn, do których odwołuje się schemat aplikacji. Elementy w bazie danych, które nie są używane przez schemat aplikacji, pozostają niezmodyfikowane. Dlatego po wdrożeniu baza danych może zawierać nieużywane:

    • Schematy
    • Tabele
    • Kolumny

Wdrożenia oprogramowania sprzęgającego

Zapytania i mutacje Data Connect nie są przesyłane przez kod klienta i wykonywane na serwerze. Zamiast tego po wdrożeniu operacje Data Connect są przechowywane na serwerze, np. Cloud Functions. Oznacza to, że wdrożenie może spowodować problemy u obecnych użytkowników.

Wykonywanie procesu wdrażania

Nad projektem Data Connect możesz pracować zarówno w lokalnym katalogu projektu, jak i w konsoli Firebase.

Zalecane wdrożenie obejmuje:

  1. Wyświetlanie obecnie wdrożonych schematów i łączników za pomocą firebase dataconnect:services:list.
  2. zarządzanie aktualizacjami schematu.
    1. Sprawdź, czy schemat SQL w bazie danych Cloud SQL różni się od lokalnego schematu Data Connect. Aby to zrobić, użyj firebase dataconnect:sql:diff.
    2. W razie potrzeby przeprowadź migrację schematu SQL za pomocą narzędzia dataconnect:sql:migrate.
  3. Wykonywanie wdrożeń schematu i połączeń przez uruchomienie firebase deploy, tylko schematu, tylko połączeń lub kombinacji zasobów.

Wdrażanie zasobów Data Connect i zarządzanie nimi

Przed wdrożeniem warto zweryfikować zasoby produkcyjne.

firebase dataconnect:services:list

Podczas pracy w lokalnym katalogu projektu zwykle używasz polecenia firebase deploy, aby wdrożyć schemat i złącza w produkcji, z interaktywnymi informacjami zwrotnymi.

Flaga --only dataconnect umożliwia oddzielenie wdrożeń Data Connect od innych usług w projekcie.deploy

Normalne wdrażanie

firebase deploy --only dataconnect

Podczas zwykłego wdrażania interfejs wiersza poleceń Firebase próbuje wdrożyć schemat i złącza.

Sprawdzanie, czy nowy schemat nie powoduje przerwania działania dotychczasowych złączy. Podczas wprowadzania zmian powodujących przerwy w działaniu postępuj zgodnie ze sprawdzonymi metodami.

Przed zaktualizowaniem schematu Data Connect sprawdza też, czy schemat SQL został już przeniesiony. Jeśli nie, automatycznie wyświetli Ci instrukcje dotyczące migacji schematów.

--force wdrożenie flagi

firebase deploy --only dataconnect --force

Jeśli nie masz wątpliwości co do poprawności łącznika ani schematu SQL, możesz ponownie uruchomić polecenie z opcją --force, aby je zignorować.

Rozmieszczanie --force nadal sprawdza, czy schemat SQL jest zgodny ze schematem Data Connect, ostrzega o niezgodności i wyświetla odpowiednie komunikaty.

Wdrażanie wybranych zasobów

Aby wdrożyć z bardziej szczegółową kontrolą, użyj flagi --only z argumentem serviceId. Aby wdrożyć tylko zmiany schematu w przypadku konkretnej usługi:

firebase deploy --only dataconnect:serviceId:schema

Możesz też wdrożyć wszystkie zasoby dla określonego łącznika i usługi.

firebase deploy --only dataconnect:serviceId:connectorId

Możesz też wdrożyć schemat i wszystkie łączniki dla jednej usługi.

firebase deploy --only dataconnect:serviceId

Cofanie wdrożenia

Aby wykonać ręczne wycofanie, wybierz poprzednią wersję kodu i wdróż ją. Jeśli pierwotne wdrożenie obejmowało zmiany powodujące zniszczenie, możliwe, że nie uda Ci się w pełni odzyskać usuniętych danych.

Migracja schematów baz danych

Jeśli szybko tworzysz prototypy i eksperymentujesz ze schematami, a zmiany w schemacie są niszczące, możesz zaplanować użycie narzędzi Data Connect do weryfikacji zmian i nadzoru nad ich wprowadzaniem.

Różnice w zmianach schematu SQL

Możesz zweryfikować zmiany:

firebase dataconnect:sql:diff

Możesz podać listę usług oddzielonych przecinkami.

Polecenie porównuje lokalny schemat usługi ze schematem bieżącym odpowiedniej bazy danych Cloud SQL. Jeśli występuje różnica, wypisuje polecenia SQL, które należy wykonać, aby ją skorygować.

Zastosuj zmiany

Gdy wszystko będzie gotowe i będziesz gotowy do wdrożenia zmian w schemacie instancji Cloud SQL, uruchom polecenie firebase dataconnect:sql:migrate. Pojawi się prośba o zatwierdzenie zmian.

firebase dataconnect:sql:migrate [serviceId]

W środowiskach interaktywnych wyświetlają się instrukcje migracji SQL i prompty do działania.

Migracja w trybie ścisłym lub zgodnym

W nowym projekcie obowiązuje domyślny tryb walidacji schematu. Polecenie migrate stosuje wszystkie zmiany schematu bazy danych, które są wymagane przez schemat aplikacji, a potem prosi o zatwierdzenie operacji opcjonalnych, które usuwają schematy, tabele lub kolumny, aby wymusić dokładne dopasowanie schematu bazy danych do schematu aplikacji.

Możesz zmienić to zachowanie, modyfikując plik dataconnect.yaml. Odkomentuj klucz schemaValidation i ogłoś COMPATIBLE, aby podczas migracji były stosowane tylko wymagane zmiany.

schemaValidation: "COMPATIBLE"

Możesz też ustawić zachowanie na STRICT, aby zastosować wszystkie zmiany schematu, a schemat bazy danych był dopasowywany do schematu aplikacji.

schemaValidation: "STRICT"

Więcej informacji znajdziesz w dokumentacji interfejsu wiersza poleceń Data Connect.

Sprawdzone metody zarządzania schematami i złączami

Firebase zaleca stosowanie w projektach Data Connecttych sprawdzonych metod.

Minimalizowanie zmian powodujących niezgodności

  • Firebase zaleca przechowywanie schematu Data Connect i plików złącza w kontroli źródłowej.
  • W miarę możliwości unikaj zmian powodujących niezgodność. Oto kilka typowych przykładów zmian naruszających zasady:
    • Usuwanie pola ze schematu
    • Ustawienie pola, które może być puste, na pole, które nie może być puste (np. Int -> Int!).
    • zmiana nazwy pola w schemacie.
  • Jeśli chcesz usunąć pole ze schematu, rozważ podzielenie go na kilka wdrożeń, aby zminimalizować wpływ zmian:
    • Najpierw usuń wszystkie odwołania do tego pola w swoich sprzęgach i wdróż zmiany.
    • Następnie zaktualizuj aplikacje, aby korzystały z nowo wygenerowanych pakietów SDK.
    • Na koniec usuń to pole w pliku schematu .gql, przeprowadź migrację schematu SQL i jeszcze raz wdróż schemat.

Używanie trybu rygorystycznego podczas pracy z nowymi bazami danych

Jeśli używasz Data Connect z nową bazą danych i aktywnie rozwijasz schemat aplikacji, a chcesz mieć pewność, że schemat bazy danych jest zgodny ze schematem aplikacji, możesz w sekcji dataconnect.yaml podać wartość schemaValidation: "STRICT".

Dzięki temu zostaną też zastosowane zmiany opcjonalne.

Korzystanie z trybu zgodności, gdy w bazie danych masz dane produkcyjne

Jeśli wprowadzasz zmiany w bazie danych zawierającej dane produkcyjne, zalecamy wykonanie migracji schematu w trybie zgodności, aby nie usunąć dotychczasowych danych. Możesz określić schemaValidation: "COMPATIBLE" w sekcji dataconnect.yaml

W trybie zgodności w bazie danych są stosowane tylko wymagane zmiany migracji schematu.

  • DROP SCHEMA, DROP TABLEDROP COLUMN są uważane za opcjonalne instrukcje i nie będą generowane w planie, nawet jeśli schemat bazy danych zawiera schematy, tabele lub kolumny nie zdefiniowane w schemacie aplikacji.
  • Jeśli tabela bazy danych zawiera kolumnę inną niż null, która nie jest uwzględniona w schemacie aplikacji, ograniczenie NOT NULL zostanie usunięte, aby dane mogły być nadal dodawane do tabeli za pomocą zdefiniowanych przez Ciebie złączy.

Co dalej?

  • Wdrażanie kodu klienta utworzonego za pomocą wygenerowanych pakietów SDK i zarządzanie nim omówiono w przewodnikach dotyczących Androida, iOS, sieciFluttera.
  • Więcej informacji o narzędziach do wdrażania znajdziesz w dokumentacji interfejsu wiersza poleceń Data Connect i pliku konfiguracyjnego Data Connect.