Usługa Firebase SQL Connect ma 3 główne komponenty:
- bazę danych PostgreSQL z własnym schematem SQL;
- SQL Connect schemat aplikacji (zadeklarowany w plikach
.gql) - liczbę oprogramowań sprzęgających (zadeklarowanych w plikach
.gqli skonfigurowanych w plikachconnector.yaml).
Schemat SQL jest źródłem informacji o Twoich danych, schemat SQL Connect określa, jak oprogramowanie sprzęgające może widzieć te dane, a oprogramowanie sprzęgające deklaruje interfejsy API, których klienci mogą używać do uzyskiwania dostępu do tych danych.
Gdy wdrożysz usługę SQL Connect za pomocą interfejsu wiersza poleceń, przeprowadzisz migrację schematu SQL, a następnie zaktualizujesz schemat SQL Connect i każde oprogramowanie sprzęgające.
Ważne pojęcia związane z wdrażaniem
Aby w pełni zrozumieć wdrażanie, warto zapoznać się z najważniejszymi pojęciami dotyczącymi schematów i oprogramowania sprzęgającego.
Wdrażanie schematu
Wdrożenie schematu SQL Connect wpływa na schemat SQL bazy danych Cloud SQL. SQL Connect pomaga migrować schematy podczas wdrażania, niezależnie od tego, czy pracujesz z nową bazą danych, czy musisz w sposób nieniszczący dostosować istniejącą bazę danych.
SQL Connect migracje schematu mają 2 różne tryby weryfikacji schematu: ścisły i zgodny.
Weryfikacja w trybie ścisłym wymaga, aby schemat bazy danych dokładnie odpowiadał schematowi aplikacji, zanim będzie można go zaktualizować. Wszystkie tabele lub kolumny, które nie są używane w schemacie SQL Connect zostaną usunięte z bazy danych.
Weryfikacja w trybie zgodnym wymaga, aby schemat bazy danych był zgodny ze schematem aplikacji, zanim będzie można go zaktualizować. Wszelkie dodatkowe zmiany, które powodują usunięcie schematów, tabel lub kolumn, są opcjonalne.
Zgodność oznacza, że migracje schematu wpływają 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ą niezmienione. Dlatego po wdrożeniu baza danych może zawierać nieużywane:
- schematy,
- tabele,
- kolumny.
Wdrażanie oprogramowania sprzęgającego
Zapytania i mutacje SQL Connect nie są przesyłane przez kod klienta i wykonywane na serwerze. Zamiast tego po wdrożeniu te SQL Connect operacje są przechowywane na serwerze, podobnie jak Cloud Functions. Oznacza to, że wdrożenie może spowodować problemy u dotychczasowych użytkowników.
SQL Connect integruje analizę zmian powodujących niezgodność w aktualizacjach oprogramowania sprzęgającego z interfejsem wiersza poleceń Firebase.
Interfejs wiersza poleceń analizuje zmiany w każdym oprogramowaniu sprzęgającym w odniesieniu do schematu i wyświetla zestaw komunikatów oceniających zmiany w oprogramowaniu sprzęgającym, które mogą zmienić zachowanie klienta (komunikaty są na poziomie ostrzeżenia) lub mogą lub spowodują problemy (komunikaty są na poziomie niezgodności) w poprzednich wersjach kodu klienta.
Przykład:
- Zmiany w oprogramowaniu sprzęgającym, które mogą zmienić zachowanie klienta, obejmują usunięcie pola dopuszczającego wartość null z zapytania bez adnotacji schematu
@retired. - Zmiany w oprogramowaniu sprzęgającym, które mogą lub spowodują problemy u klientów, obejmują zmianę zmiennej operacji dopuszczającej wartość null na niedopuszczającą wartości null bez wartości domyślnej lub zmianę typu danych pola na niezgodny (np.
StringnaInt).
Bardziej szczegółową listę scenariuszy na poziomie ostrzeżenia i niezgodności znajdziesz w przewodniku po interfejsie wiersza poleceń.
Postępuj zgodnie z procesem wdrażania
Możesz pracować nad projektem SQL Connect zarówno w lokalnym katalogu projektu , jak i w konsoli Firebase.
Zalecany proces wdrażania obejmuje:
- Wyświetlanie aktualnie wdrożonych schematów i oprogramowania sprzęgającego za pomocą polecenia
firebase dataconnect:services:list. - Zarządzanie aktualizacjami schematu.
- Sprawdź różnice w schemacie SQL między Cloud SQL
bazą danych a lokalnym schematem SQL Connect za pomocą
firebase dataconnect:sql:diff. - W razie potrzeby przeprowadź migrację schematu SQL za pomocą polecenia
dataconnect:sql:migrate.
- Sprawdź różnice w schemacie SQL między Cloud SQL
bazą danych a lokalnym schematem SQL Connect za pomocą
- Przeprowadzanie wdrożeń schematu i połączenia przez uruchomienie polecenia
firebase deployw przypadku samego schematu, samego oprogramowania sprzęgającego lub kombinacji zasobów.
Wdrażanie zasobów SQL Connect i zarządzanie nimi
Przed wdrożeniem warto sprawdzić zasoby produkcyjne.
firebase dataconnect:services:listPodczas pracy w lokalnym katalogu projektu do wdrożenia schematu i oprogramowania sprzęgającego w środowisku produkcyjnym będziesz zwykle używać polecenia firebase deploy z interaktywnymi informacjami zwrotnymi.
Użycie dowolnego deploy polecenia z flagą --only dataconnect umożliwia oddzielenie
SQL Connect wdrożeń od innych usług w projekcie.
Normalne wdrożenie
firebase deploy --only dataconnectW tym normalnym wdrożeniu interfejs wiersza poleceń Firebase próbuje wdrożyć schemat i oprogramowanie sprzęgające.
Sprawdza, czy nowy schemat nie powoduje problemów z żadnym z istniejących oprogramowań sprzęgających. W przypadku zmian powodujących niezgodność postępuj zgodnie ze sprawdzonymi metodami.
Sprawdza też, czy schemat SQL został już zmigrowany, zanim zaktualizuje schemat SQL Connect Jeśli nie, automatycznie wyświetli prośbę o wykonanie niezbędnych czynności w celu migracji schematów.
Wdrożenie z flagą --force
firebase deploy --only dataconnect --forceJeśli weryfikacja oprogramowania sprzęgającego ani schematu SQL nie jest problemem, możesz ponownie uruchomić polecenie z flagą --force, aby je zignorować.
Wdrożenie z flagą --force nadal sprawdza, czy schemat SQL jest zgodny ze schematem
SQL Connect, ostrzega o niezgodności i wyświetla prośbę.
Wdrażanie wybranych zasobów
Aby wdrożyć z większą kontrolą, użyj flagi --only z argumentem serviceId. Aby wdrożyć tylko zmiany schematu w przypadku konkretnej usługi:
firebase deploy --only dataconnect:serviceId:schemaMożesz też wdrożyć wszystkie zasoby dla określonego oprogramowania sprzęgającego i usługi.
firebase deploy --only dataconnect:serviceId:connectorIdNa koniec możesz wdrożyć schemat i wszystkie oprogramowania sprzęgające dla jednej usługi.
firebase deploy --only dataconnect:serviceIdWycofywanie wdrożenia
Aby ręcznie cofnąć wdrożenie, pobierz poprzednią wersję kodu i ją wdróż. Jeśli pierwotne wdrożenie obejmowało zmiany powodujące niezgodność, które powodują usunięcie danych, odzyskanie usuniętych danych może być niemożliwe.
Migrowanie schematów bazy danych
Jeśli szybko tworzysz prototypy, eksperymentujesz ze schematami i wiesz, że zmiany schematu są destrukcyjne, możesz użyć narzędzi SQL Connect do sprawdzenia zmian i nadzorowania sposobu przeprowadzania aktualizacji.
Porównywanie zmian schematu SQL
Możesz sprawdzić zmiany:
firebase dataconnect:sql:diffMożesz przekazać listę usług rozdzielonych przecinkami.
Polecenie porównuje lokalny schemat usługi z bieżącym schematem odpowiedniej Cloud SQL bazy danych. Jeśli wystąpi różnica, wyświetli polecenia SQL, które należy uruchomić, aby ją naprawić.
Stosowanie zmian
Gdy wszystko będzie gotowe do wdrożenia zmian w schemacie
Cloud SQL
instancji, uruchom polecenie firebase dataconnect:sql:migrate. Zostanie wyświetlona prośba o zatwierdzenie zmian.
firebase dataconnect:sql:migrate [serviceId]W środowiskach interaktywnych wyświetlane są instrukcje migracji SQL i prośby o działanie.
Migrowanie w trybie ścisłym lub zgodnym
W nowym projekcie stosowany jest domyślny tryb weryfikacji schematu. Polecenie migrate stosuje wszystkie zmiany schematu bazy danych wymagane przez schemat aplikacji, a następnie wyświetla prośbę o zatwierdzenie opcjonalnych operacji, które powodują usunięcie schematów, tabel lub kolumn, aby schemat bazy danych dokładnie odpowiadał schematowi aplikacji.
To zachowanie możesz dostosować, modyfikując plik dataconnect.yaml.
Usuń komentarz z klucza schemaValidation i zadeklaruj COMPATIBLE, aby podczas migracji stosowane były tylko wymagane zmiany.
schemaValidation: "COMPATIBLE"
Możesz też ustawić zachowanie na STRICT, aby stosowane były wszystkie zmiany schematu, a schemat bazy danych był zgodny ze schematem aplikacji.
schemaValidation: "STRICT"
Więcej informacji znajdziesz w dokumentacji interfejsu wiersza poleceń SQL Connect.
Aktualizowanie oprogramowania sprzęgającego
Gdy uruchomisz polecenie firebase deploy, interfejs wiersza poleceń rozpocznie aktualizację odpowiednich oprogramowań sprzęgających i wyświetli odpowiednie komunikaty oceniające na poziomie ostrzeżenia (mogące wpłynąć na zachowanie klienta) i na poziomie niezgodności (mogące lub na pewno powodujące problemy).
Zarządzanie aktualizacjami oprogramowania sprzęgającego za pomocą interfejsu wiersza poleceń
Interfejs wiersza poleceń działa nieco inaczej w trybie interaktywnym i nieinteraktywnym.
Jak można się spodziewać, w trybie interaktywnym interfejs wiersza poleceń wyświetla prośbę o zaakceptowanie wszystkich komunikatów. Możesz zastąpić i wymusić wdrożenie oprogramowania sprzęgającego za pomocą flagi --force.
# Prompts for acceptance for any warning-level or breaking-level changes prior # to deploying connectors. firebase deploy --only dataconnect# Will deploy connectors without prompting. firebase deploy --only dataconnect --force
W trybie nieinteraktywnym interfejs wiersza poleceń wdroży oprogramowanie sprzęgające, o ile nie ma ocen na poziomie niezgodności. W przeciwnym razie skrypt zostanie zakończony z dziennikiem zmian powodujących niezgodność. Możesz zastąpić i wdrożyć, ustawiając flagę --force.
# Will deploy connectors with warning-level changes. If any breaking changes # are present, the deploy will fail and output any breaking changes firebase deploy --only dataconnect --non-interactive# Will deploy the connectors from the previous step, if the same issues are present. firebase deploy --only dataconnect --non-interactive --force
Więcej informacji znajdziesz w przewodniku po interfejsie wiersza poleceń.
Sprawdzone metody zarządzania schematami i oprogramowaniem sprzęgającym
Firebase zaleca stosowanie w projektach SQL Connect kilku sprawdzonych metod.
Minimalizowanie zmian powodujących niezgodność
- Firebase zaleca przechowywanie plików schematu SQL Connect i oprogramowania sprzęgającego w systemie kontroli wersji.
- Jeśli to możliwe, unikaj zmian powodujących niezgodność. Oto kilka typowych przykładów zmian powodujących niezgodność:
- Usuwanie pola ze schematu.
- Zmienianie pola dopuszczającego wartość null w schemacie na niedopuszczające wartości null (np.
Int->Int!) - Zmienianie nazwy pola w schemacie.
- Jeśli musisz usunąć pole ze schematu, rozważ podzielenie go na kilka wdrożeń, aby zminimalizować wpływ:
- Najpierw usuń wszystkie odwołania do pola w oprogramowaniu sprzęgającym i wdróż zmianę.
- Następnie zaktualizuj aplikacje, aby korzystały z nowo wygenerowanych pakietów SDK.
- Na koniec usuń pole w pliku schematu
.gql, przeprowadź migrację schematu SQL i wdróż ponownie.
Używanie trybu ścisłego podczas pracy z nowymi bazami danych
Jeśli używasz SQL Connect z nową bazą danych i aktywnie
rozwijasz schemat aplikacji oraz chcesz mieć pewność, że schemat bazy danych
jest dokładnie zgodny ze schematem aplikacji, możesz określić
schemaValidation: "STRICT" w pliku dataconnect.yaml.
Dzięki temu zostaną zastosowane również zmiany opcjonalne.
Używanie trybu zgodnego, gdy w bazie danych znajdują się dane produkcyjne
Jeśli wprowadzasz zmiany w bazie danych, która zawiera dane produkcyjne, zalecamy przeprowadzanie migracji schematu w trybie zgodnym, aby nie utracić istniejących danych. Możesz określić schemaValidation: "COMPATIBLE"
w pliku dataconnect.yaml.
W trybie zgodnym w bazie danych stosowane są tylko wymagane zmiany migracji schematu.
- Instrukcje
DROP SCHEMA,DROP TABLEiDROP COLUMNsą uważane za opcjonalne i nie będą generowane w Twoim planie, nawet jeśli schemat bazy danych zawiera schematy, tabele lub kolumny, które nie są zdefiniowane w schemacie aplikacji. - Jeśli tabela bazy danych zawiera kolumnę niedopuszczającą wartości null, która nie jest uwzględniona w schemacie aplikacji, ograniczenie
NOT NULLzostanie usunięte, aby można było nadal dodawać dane do tabeli za pomocą zdefiniowanych oprogramowań sprzęgających.
Co dalej?
- Wdrażanie i zarządzanie kodem klienta opracowanym za pomocą wygenerowanych pakietów SDK opisujemy w przewodnikach po pakietach SDK (Android, iOS, internet i Flutter).
- Więcej informacji o narzędziach do wdrażania znajdziesz w dokumentacji interfejsu wiersza poleceń SQL Connect i dokumentacji pliku konfiguracyjnego SQL Connect.