1
resposta

[Dúvida] Firebase e Room ou somente Firebase?

Olá,

Durante meus estudos sobre persistência de dados, surgiu uma dúvida em relação ao uso offline e sincronização. Devo optar por utilizar o Room Database para armazenar os dados localmente e, quando estiver online, enviar esses dados para o Firebase? Ou devo usar exclusivamente o Firebase?

Essa incerteza surgiu durante a criação de um projeto para o meu portfólio. A proposta é que, a partir de uma lista de pulseiras, seja possível escanear o código de barras e determinar se a pulseira está paga ou não (pulseira de eventos).

Minha ideia é cadastrar as pulseiras e, quando alguma for vendida e o pagamento estiver confirmado, o status dela seja atualizado para "pago". Durante a leitura do código de barras, a intenção é identificar esse status.

Atualmente, implementei a lógica com o Room Database para armazenar essas informações e gostaria de saber se é mais comum criar diretamente no Firebase os documentos para o cadastro das pulseiras e apenas sincronizar, ou se devo utilizar o Room para o modo offline e o Firebase para o modo online.

Agradeço qualquer orientação sobre a abordagem mais apropriada para esse cenário.

1 resposta

Ambas as abordagens têm os seus méritos, e a escolha entre elas depende de fatores como a complexidade do projeto, a necessidade de manter os dados sincronizados entre dispositivos, e as preferências de desenvolvimento. Vou te fornecer algumas informações que podem ajudar na escolha entre Room Database (SQLite) + Firebase ou usar apenas o Firebase.

Usando Room Database + Firebase Offline-First: O Room Database permite um desenvolvimento "offline-first", onde o aplicativo pode funcionar totalmente offline e sincronizar quando a conexão for restabelecida. Isso pode ser essencial em eventos onde a conectividade pode ser instável.

Performance: A leitura de dados locais geralmente é mais rápida do que a leitura de dados online, o que pode resultar em uma melhor experiência do usuário.

Complexidade: Implementar a sincronização de dados entre local e nuvem pode ser complexo, especialmente quando há conflitos de dados que precisam ser resolvidos.

Usando apenas Firebase Real-Time: O Firebase permite sincronização de dados em tempo real entre dispositivos, o que é muito útil se o status das pulseiras precisar ser compartilhado entre diferentes dispositivos de forma imediata.

Desenvolvimento Simplificado: Não precisar gerenciar um banco de dados local pode simplificar o desenvolvimento, principalmente se a lógica de sincronização de dados for complexa.

Custo: Dependendo do volume de leituras e escritas, o Firebase pode ter custos associados, e o uso exclusivo do Firebase pode aumentar esses custos.

Recomendações Estratégia Híbrida: Para muitos aplicativos, uma estratégia híbrida que utiliza tanto o Room Database quanto o Firebase pode oferecer o melhor dos dois mundos. Os dados são armazenados localmente para acesso rápido e funcionamento offline, e sincronizados com o Firebase para manter a consistência entre dispositivos.

Conflitos de Dados: Independentemente da estratégia escolhida, é importante considerar como os conflitos de dados serão resolvidos, especialmente se múltiplos dispositivos podem modificar os dados.

Teste de Conexão: Mesmo optando por uma estratégia somente Firebase, é útil implementar uma lógica que verifica se o dispositivo está online antes de tentar realizar operações que requerem conexão, informando o usuário quando o dispositivo está offline.

Considerando o seu cenário de pulseiras para eventos, onde a confiabilidade e a rapidez na leitura de dados são cruciais, e a conectividade pode ser um problema, uma estratégia híbrida pode ser a mais adequada. Você pode continuar usando o Room Database para armazenar e ler os dados localmente e usar o Firebase para sincronizar os dados entre dispositivos quando a conexão estiver disponível. Isso também pode facilitar o manejo de situações onde múltiplos dispositivos necessitam acessar e modificar o status das pulseiras em tempo real.