Firebase Database: você deve escolher Realtime DB ou Cloud Firestore?

Firebase é um serviço de nuvem NoSQL, oferecido como parte das ofertas de banco de dados do Google Cloud Platform. É baseado em um modelo de documento e pode ser usado para armazenar e sincronizar dados em tempo real com escala horizontal. Você pode usar o Firebase para aplicativos multiusuário, como aplicativos móveis, aplicativos sem servidor e aplicativos offline.

Além da funcionalidade NoSQL padrão, o Firebase inclui recursos para autenticação, relatórios de falhas, mensagens, monitoramento de desempenho e análises. O Firebase pode ser acessado por meio de SDK e API, com suporte para Unity e C ++. Você pode integrá-lo a uma ampla variedade de serviços e utilitários, incluindo implantações do Kubernetes, BigQuery, Google Marketing Platform, Data Studio, JIRA e Slack.

Neste artigo, você aprenderá:

  • Opções do Firebase Database
    • Realtime Database
    • Cloud Firestore
  • Realtime Database x Cloud Firestore
    • Modelo de dados ou estrutura de dados
    • Consultando no banco de dados
    • Gravando os dados ou transações
    • Considerações de Segurança
    • Confiabilidade e Desempenho

Opções de Bases de Dados do Firebase

No serviço Firebase, você tem duas arquiteturas e modelos de dados para escolher – Realtime Database e Cloud Firestore.

Realtime Database

O Realtime Database é um banco de dados que usa documentos JSON para armazenar pares de chave-valor. Inclui recursos para sincronização de dados usando web sockets e sincronização assíncrona para suporte a dispositivos offline. O SDK do banco de dados oferece suporte para aplicativos da web, Android e iOS.

Ao usar o Realtime Database, você deve escrever o código do aplicativo no cliente que está usando e lidar com a lógica no aplicativo cliente. Isso significa que você deve duplicar o código para aplicativos em várias plataformas. Como alternativa, você pode usar o Firebase Cloud Functions para lidar com solicitações, mas isso afeta sua capacidade de usar muitos recursos do SDK.

Além disso, ao escrever sua lógica de cliente, você é responsável pela validação dos dados. O Realtime Database não o restringe por tipo de dados, portanto, cabe a você impor a digitação conforme necessário para a lógica de seu aplicativo.

Cloud Firestore

O Cloud Firestore é uma versão mais recente do banco de dados que usa coleções de documentos para armazenar dados. Cada documento em uma coleção pode conter subcoleções ou campos de dados. Essa estrutura permite que você armazene dados semelhantes a tabelas e linhas, expandindo a compatibilidade do banco de dados.

No Cloud Firestore, os dados são digitados. Os tipos disponíveis incluem booleanos, objetos, matrizes, números, strings e valores nulos. Você também tem acesso a geopontos, carimbos de data / hora e referências superficiais a documentos. Esses tipos permitem que você gerencie a integridade dos dados e busque bugs baseados em tipo com mais facilidade.

Ao definir seus documentos, você pode usar referências para evitar a desnormalização de dados, reduzindo o número de cópias duplicadas necessárias. Além disso, embora não seja possível consultar coleções, você pode usar referências para buscar cópias locais de dados.

Realtime Database x Cloud Firestore: qual você deve escolher?

Ao selecionar entre as opções do Firebase, lembre-se dos seguintes fatores. Além disso, lembre-se de que ambos estão disponíveis em um nível gratuito, portanto, é possível demonstrar as duas opções.

Modelo de dados ou estrutura de dados

No Realtime Database, você só pode armazenar dados como uma árvore de documentos. Isso torna difícil organizar os dados, especialmente em escala. Por isso, o Realtime Database é melhor para dados simples.

Em contraste, as coleções do Cloud Firestore tornam relativamente fácil armazenar dados hierárquicos. Essas coleções permitem aninhar objetos e exigem menos desnormalização do que o Realtime Database. Isso torna o Cloud Firestore mais adequado para dados complexos. Por exemplo, você pode usá-lo para armazenar e gerenciar mais facilmente a infraestrutura como código para suas implantações de DevOps.

Consultas no banco de dados

As consultas no Realtime Database são limitadas a uma operação por vez. Você pode filtrar ou classificar, mas não os dois em uma única consulta. Além disso, todas as consultas feitas retornam toda a sua subárvore porque as consultas são profundas por padrão. Isso pode tornar a consulta lenta.

No Cloud Firestore, você pode realizar consultas indexadas que permitem realizar filtragem e classificação composta. Isso permite que você consulte as subcoleções. Freqüentemente, também significa que o desempenho da consulta é melhor, pois é baseado no conjunto de resultados, e não no tamanho do conjunto de dados.

Gravando os dados ou transações

No Realtime Database, você pode realizar operações de gravação individualmente. As transações são atômicas, mas apenas em subárvores específicas. Fora da subárvore, você precisa configurar retornos de chamada de conclusão por meio do SDK.

Com o Cloud Firestore, você pode usar transações atômicas e operações de gravação. Você pode operações em lote e as transações são permitidas de qualquer parte do seu banco de dados. Isso significa que você não precisa usar retornos de chamada de conclusão, a transação será repetida automaticamente até o sucesso.

Considerações de Segurança

A autorização e a validação são definidas por meio de regras em cascata no Realtime Database. Essa limitação requer que você defina regras para validação e autorização individualmente. Além disso, sua provisão de segurança é limitada às regras de segurança do Firebase que você cria.

Com o Cloud Firestore, você pode usar regras de segurança do Firebase e gerenciamento de identidade e acesso por meio de SDKs de servidor. O Firebase também inclui validação automática de dados sem cascata, embora você possa aplicar a cascata manualmente. A desvantagem disso é que as consultas podem falhar se os usuários não tiverem acesso a todos os dados dos resultados.

Confiabilidade e Desempenho

Os bancos de dados em tempo real são limitados a uma única região de disponibilidade. Isso oferece latência muito baixa e é melhor para a sincronização de estado frequente. Além disso, para dimensionar no Realtime Database, você precisa implementar fragmentação.

Em contraste, você pode usar o Cloud Firestore em várias regiões com escalabilidade global automática. Você tem a opção de usá-lo regional ou multirregionalmente com dados duplicados automaticamente para disponibilidade.

Conclusão

O Firebase oferece dois serviços de banco de dados que são Realtime Database e Cloud Firestore.

O Realtime Database usa documentos JSON para armazenar pares de valores-chave, sincronizar dados por meio de WebSockets e funcionar para Android, iOS e aplicativos da web.

O Cloud Firestore usa coleções de documentos para armazenar dados, cada documento em uma coleção pode conter subcoleções e o banco de dados também oferece atualizações em tempo real.

Procurando alternativas para o banco de dados Firebase?

Em caso afirmativo, verifique Back4app. Ele oferece um serviço de banco de dados relacional escalonável. O produto é de código aberto, permite consultas complexas e torna os dados acessíveis via APIs REST ou GraphQL.

Referência: Artigo original publicado aqui.

FAQ

Quais são as opções do banco de dados Firebase?

– O Realtime Database
– Cloud Firestore

Quais são as diferenças entre os bancos de dados Firebase?

– Modelo de dados ou estrutura de dados
– Consulta no banco de dados
– Gravando os dados ou transações
– Considerações de segurança
– Confiabilidade e desempenho


Leave a reply

Your email address will not be published.