Um serviço Firebase Data Connect tem três componentes principais:
- Um banco de dados do PostgreSQL com o próprio esquema SQL
- um esquema de aplicativo Data Connect (declarado nos arquivos
.gql
) - vários conectores (declarados nos arquivos
.gql
).
O esquema SQL é a fonte de verdade dos seus dados. O esquema Data Connect é como os conectores podem acessar esses dados, e os conectores declaram as APIs que os clientes podem usar para acessar esses dados.
Ao implantar o serviço Data Connect com a CLI, você vai migrar o esquema SQL, atualizar o esquema Data Connect e, em seguida, atualizar cada um dos conectores.
Conceitos importantes de implantação
Para entender completamente a implantação, é importante observar os principais conceitos sobre esquemas e conectores.
Implantações de esquemas
A implantação de um esquema Data Connect afeta o esquema SQL do seu banco de dados do Cloud SQL. O Data Connect ajuda a migrar seus esquemas durante a implantação, seja para trabalhar com um novo banco de dados ou para adaptar um banco de dados existente sem causar danos.
As migrações de esquema Data Connect têm dois modos diferentes de validação de esquema: strict e compatible.
A validação do modo restrito exige que o esquema do banco de dados exatamente corresponda ao esquema do aplicativo antes que o esquema do aplicativo possa ser atualizado. Todas as tabelas ou colunas que não forem usadas no esquema Data Connect serão excluídas do banco de dados.
A validação do modo compatível exige que o esquema do banco de dados seja compatível com o esquema do aplicativo antes que o esquema do aplicativo possa ser atualizado. Qualquer outra mudança que excluir esquemas, tabelas ou colunas é opcional.
Compatível significa que as migrações de esquema afetam apenas as tabelas e colunas referenciadas no esquema do aplicativo. Os elementos no banco de dados que não são usados pelo esquema do aplicativo não são modificados. Portanto, após a implantação, o banco de dados pode conter os seguintes itens não utilizados:
- Esquemas
- Tabelas
- Colunas
Implantações de conectores
As consultas e mutações Data Connect não são enviadas pelo código do cliente e executadas no servidor. Em vez disso, quando implantadas, essas operações Data Connect são armazenadas no servidor, como Cloud Functions. Isso significa que a implantação pode interromper os usuários atuais.
Seguir o fluxo de trabalho de implantação
É possível trabalhar em um projeto Data Connect em um diretório de projeto local e no console do Firebase.
Um fluxo de implantação recomendado envolve:
- Listar os esquemas e conectores implantados atualmente com
firebase dataconnect:services:list
. - Gerenciar atualizações de esquema.
- Verifique as diferenças de esquema SQL entre o banco de dados do Cloud SQL e o esquema local do Data Connect com
firebase dataconnect:sql:diff
. - Se necessário, realize a migração do esquema SQL com
dataconnect:sql:migrate
.
- Verifique as diferenças de esquema SQL entre o banco de dados do Cloud SQL e o esquema local do Data Connect com
- Realize implantações de esquema e conexão executando
firebase deploy
, para apenas o esquema, apenas os conectores ou combinações de recursos.
Implantar e gerenciar recursos do Data Connect
É recomendável verificar os recursos de produção antes de realizar implantações.
firebase dataconnect:services:list
Ao trabalhar em um diretório de projeto local, geralmente você usa o comando firebase deploy
para implantar o esquema e os conectores na produção, com feedback interativo.
Usando qualquer comando deploy
, a flag --only dataconnect
permite separar as implantações de Data Connect de outros produtos no seu projeto.
Implantação normal
firebase deploy --only dataconnect
Nessa implantação normal, a CLI Firebase tenta implantar o esquema e os conectores.
Ele valida que o novo esquema não quebra nenhum conector existente. Siga as práticas recomendadas ao fazer mudanças importantes.
Ele também verifica se o esquema SQL já foi migrado antes de atualizar o esquema Data Connect. Caso contrário, o processo vai solicitar automaticamente as etapas necessárias para migrar os esquemas.
Implantação da flag --force
firebase deploy --only dataconnect --force
Se nem o conector nem as validações do esquema SQL forem um problema, você poderá
executar o comando novamente com --force
para ignorá-las.
O deployment de --force
ainda verifica se o esquema SQL corresponde ao
esquema Data Connect, alerta sobre incompatibilidade e solicita.
Implantar os recursos selecionados
Para implantar com um controle mais granular, use a flag --only
com o
argumento serviceId
. Para implantar apenas as mudanças de esquema de um serviço específico:
firebase deploy --only dataconnect:serviceId:schema
Também é possível implantar todos os recursos para um conector e serviço especificados.
firebase deploy --only dataconnect:serviceId:connectorId
Por fim, é possível implantar o esquema e todos os conectores para um único serviço.
firebase deploy --only dataconnect:serviceId
Reverter uma implantação
Para fazer um rollback manual, confira uma versão anterior do código e implante-a. Se a implantação original incluiu mudanças prejudiciais, talvez não seja possível recuperar totalmente os dados excluídos.
Migrar esquemas de banco de dados
Se você estiver criando protótipos rapidamente, experimentando esquemas e sabendo que as mudanças no esquema são destrutivas, planeje usar ferramentas Data Connect para verificar as mudanças e supervisionar como as atualizações são realizadas.
Comparar mudanças de esquema SQL
É possível verificar as mudanças:
firebase dataconnect:sql:diff
É possível transmitir uma lista de serviços separada por vírgulas.
O comando compara o esquema local de um serviço com o esquema atual do banco de dados do Cloud SQL correspondente. Se houver uma diferença, ele vai mostrar os comandos SQL que seriam executados para corrigir essa diferença.
Aplique as alterações
Quando você estiver satisfeito e pronto para implantar as alterações na instância do esquema do Cloud SQL, emita o comando firebase dataconnect:sql:migrate
. Você vai receber uma solicitação para aprovar as mudanças.
firebase dataconnect:sql:migrate [serviceId]
Em ambientes interativos, instruções de migração SQL e solicitações de ação são exibidas.
Migrar no modo estrito ou compatível
Em um projeto novo, o modo de validação de esquema padrão
é aplicado. O comportamento do comando migrate
é aplicar todas as mudanças de esquema de banco de dados
necessárias ao esquema do aplicativo e solicitar que você aprove
operações opcionais que excluem esquemas, tabelas ou colunas para forçar o esquema do banco de dados
a corresponder exatamente ao esquema do aplicativo.
Para ajustar esse comportamento, modifique o arquivo dataconnect.yaml
.
Remova o comentário da chave schemaValidation
e declare COMPATIBLE
para que apenas
as mudanças necessárias sejam aplicadas nas migrações.
schemaValidation: "COMPATIBLE"
Ou defina o comportamento como STRICT
para que todas as mudanças de esquema sejam aplicadas e o
esquema do banco de dados seja forçado a corresponder ao esquema do aplicativo.
schemaValidation: "STRICT"
Consulte a referência da CLI Data Connect para mais informações.
Práticas recomendadas para gerenciar esquemas e conectores
O Firebase recomenda algumas práticas a serem seguidas nos projetos Data Connect.
Minimizar mudanças importantes
- O Firebase recomenda manter os arquivos de conector e esquema Data Connect no controle de origem.
- Evite mudanças drásticas sempre que possível. Alguns exemplos comuns de mudanças
importantes incluem:
- Como remover um campo do esquema
- Tornar um campo anulável no esquema não anulável (por exemplo,
Int
->Int!
) - Renomear um campo no esquema.
- Se você precisar remover um campo do esquema, considere dividi-lo
em algumas implantações para minimizar o impacto:
- Primeiro, remova todas as referências ao campo nos conectores e implante a mudança.
- Em seguida, atualize seus apps para usar os SDKs recém-gerados.
- Por fim, remova o campo no arquivo
.gql
do esquema, migre o esquema SQL e implante mais uma vez.
Usar o modo estrito ao trabalhar com novos bancos de dados
Se você estiver usando Data Connect com um novo banco de dados e estiver desenvolvendo
ativamente o esquema do aplicativo, e quiser garantir que o esquema do banco de dados
continue exatamente de acordo com o esquema do aplicativo, especifique
schemaValidation: "STRICT"
no dataconnect.yaml
.
Isso garante que as mudanças opcionais também sejam aplicadas.
Use o modo compatível quando tiver dados de produção no banco de dados
Se você estiver fazendo alterações em um banco de dados que contém dados de produção, recomendamos
que execute as migrações de esquema no modo compatível para garantir
que os dados atuais não sejam excluídos. Você pode especificar schemaValidation: "COMPATIBLE"
no dataconnect.yaml
.
No modo compatível, apenas as mudanças de migração de esquema necessárias são aplicadas ao seu banco de dados.
DROP SCHEMA
,DROP TABLE
eDROP COLUMN
são considerados comandos opcionais e não serão gerados para seu plano, mesmo que o esquema do banco de dados contenha esquemas, tabelas ou colunas não definidos no esquema do aplicativo.- Se a tabela do banco de dados tiver uma coluna não nula que não esteja incluída no esquema do aplicativo, a restrição
NOT NULL
será removida para que os dados ainda possam ser adicionados à tabela com os conectores definidos.
A seguir
- O provisionamento e o gerenciamento do código do cliente desenvolvido com SDKs gerados são abordados nos guias para Android, iOS, Web e Flutter.
- Para mais informações sobre as ferramentas de implantação, consulte a referência da CLI Data Connect e a referência do arquivo de configuração Data Connect.