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:

  • Bazowa baza danych PostgreSQL z 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.

Po wdrożeniu usługi Data Connect za pomocą interfejsu wiersza poleceń przeniesiesz schemat SQL, a następnie zaktualizujesz schemat Data Connect, a potem każde oprogramowanie sprzęgające.

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

Aby w pełni zrozumieć wdrożenie, warto poznać kluczowe pojęcia związane ze schematami i oprogramowaniem sprzęgającym.

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 weryfikacji schematu: ścisły i zgodny.

  • Walidacja w trybie ścisłym wymaga, aby schemat bazy danych ściśle pasował do schematu 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.

    Zgodne oznacza, że migracje schematu mają wpływ tylko na tabele i kolumny, 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 typu 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.

Zalecany proces wdrażania obejmuje:

  1. Wyświetlanie obecnie wdrożonych schematów i oprogramowania sprzęgającego 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 (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 wersji produkcyjnej, 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.

Sprawdza on, czy nowy schemat nie uszkadza żadnego istniejącego oprogramowania sprzęgającego. 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.

Wdróż wybrane zasoby

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 cofnięcie zmian, 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.

To polecenie porównuje schemat lokalny usługi z bieżącym schematem odpowiedniej bazy danych Cloud SQL. Jeśli wystąpi 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 powoduje zastosowanie wszystkich zmian schematu bazy danych wymaganych przez schemat aplikacji, a następnie prośba o zatwierdzenie opcjonalnych operacji, które usuwają schematy, tabele lub kolumny, w celu wymuszenia dokładnego dopasowania schematu bazy danych do schematu aplikacji.

Możesz to zmienić, edytują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ć działanie na STRICT, aby zastosować wszystkie zmiany schematu i wymuszać dopasowanie schematu bazy danych 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 musisz usunąć pole ze schematu, możesz podzielić je na kilka wdrożeń, aby zminimalizować wpływ:
    • 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 TABLE i DROP COLUMN są uznawane za instrukcje opcjonalne i nie będą generowane na potrzeby Twojego planu, nawet jeśli schemat bazy danych zawiera schematy, tabele lub kolumny, które nie zostały 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.