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:
- Wyświetlanie obecnie wdrożonych schematów i oprogramowania sprzęgającego za pomocą
firebase dataconnect:services:list
. - zarządzanie aktualizacjami schematu.
- Sprawdź, czy schemat SQL w bazie danych Cloud SQL różni się od lokalnego schematu Data Connect (
firebase dataconnect:sql:diff
). - W razie potrzeby przeprowadź migrację schematu SQL za pomocą narzędzia
dataconnect:sql:migrate
.
- Sprawdź, czy schemat SQL w bazie danych Cloud SQL różni się od lokalnego schematu Data Connect (
- 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
iDROP 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, sieci i Fluttera.
- Więcej informacji o narzędziach do wdrażania znajdziesz w dokumentacji interfejsu wiersza poleceń Data Connect i pliku konfiguracyjnego Data Connect.