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 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.
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:
- Wyświetlanie obecnie wdrożonych schematów i łączników 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 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 cofnięcie zmian, wybierz poprzednią wersję kodu i wdróż ją. Jeśli pierwotne wdrożenie zawierało zmiany, które spowodowały zniszczenie danych, może nie być możliwe pełne odzyskanie 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 schemat lokalny 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 oznacz go jako 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 pola w połączeniach, a następnie wprowadź 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 dokładnie 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ą 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łączeń.
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.