Qual é a melhor maneira de armazenar dados do Firebase para o SQLite (base de dados local do Android)?
Firebase mudou muito nos últimos anos. O Firestore está fora do beta a partir deste ano (2019) e tem muitos recursos excelentes, incluindo suporte offline.
Cloud Firestore suporta a persistência de dados offline. Este recurso esconde uma cópia dos dados do Cloud Firestore que sua aplicação está usando ativamente, para que sua aplicação possa acessar os dados quando o dispositivo estiver offline. Você pode escrever, ler, ouvir e consultar os dados em cache. Quando o dispositivo volta online, o Cloud Firestore sincroniza quaisquer alterações locais feitas pela sua aplicação para o backend do Cloud Firestore.
O suporte off-line é ativado por padrão com 100MB de cache.
Quando a persistência é ativada, o Cloud Firestore armazena em cache todos os documentos recebidos do backend para acesso offline. O Cloud Firestore define um limite padrão para o tamanho da cache. Após exceder o padrão, o Cloud Firestore periodicamente tenta limpar documentos mais antigos e não utilizados. Você pode configurar um limite diferente para o tamanho da cache ou desabilitar o processo de limpeza completamente:
>p>Offline suporte utiliza por padrão uma base de dados SQLite ( que infelizmente você não pode acessar / consultar ). Isto é muito mau, uma vez que o Firestore não suporta consultas com "LIKE", e os serviços recomendados de pesquisa de texto completo como o Algolia são caros.Aqui, em Underline, precisávamos de fornecer uma forma de os utilizadores pesquisarem as suas notas de livro. A pesquisa de texto completo é óptima em geral, mas quando um utilizador tenta consultar os seus próprios documentos ( que não são assim tantos ), estes serviços são um pouco exagerados. Não faz sentido usar um serviço que é optimizado para consultar biliões de documentos apenas para pesquisar em 50-100 deles.
Outras soluções são ou criar a sua própria cache na própria base de dados SQLite para documentos que quer pesquisar ou, se tiver a certeza de que são muito poucos, pode consultá-los a partir dos dados offline do Firestore e fazer um loop entre eles.
Firestore offers a way of disabling network and query only from local cache.
- Firestore.firestore().disableNetwork
But, I am not sure that you won’t be charged for the reads you are making while offline.
Artigos semelhantes
- Como é que a base de dados SQLite no Android Studio? Eu não consigo encontrá-lo em ferramentas.
- Qual é a melhor abordagem para armazenar imagem no SQLite?
- Qual é a diferença entre uma base de dados tradicional e uma base de dados moderna?
- Como armazenar um modelo de impressão digital em uma base de dados em C