Estudo: Persistência de dados para o frontend¶
1. opções para persistência¶
Sobre as opções existentes para persistência de dados, e como trata-las, no frontend temos que considerar os tipos de informações que podem ser guardados em cada tipo de opção. Abaixo serão citadas algumas opções e os diferentes tipos de dados que eles tratam:
-
Shared preferences: ideal pra tratar dados em pequenos volumes e não estruturados, como o ID da sessão/usuário, configurações de preferencias (tema, tamanho da fonte, etc). Não sendo ideal pra armazenar listas longas ou objetos complexos
-
Hive: modelo de banco de dados NoSQL rápido, leve e orientado a objetos, nativo do dart e otimizado para Flutter, que armazena dados em "caixas" (Boxes) de pares chave-valor. Ideal para Histórico de mensagens e dados de contexto local, tendo uma alta performance e relativamente fácil de usar
-
Drift: Alternativa moderna que tem uma integração um pouco melhor. Ideal para um grande volume de dados que precisam de relacionamentos e consultas complexas, como armazenar históricos de prazos muito longos, e se o chatbot for integrado com outras funções complexas (ex: lista de contatos, catálogo de produtos, etc), porém possui uma complexidade muito alta em comparação com as outras.
2. Tabela comparativa das opções¶
Considerando que o aplicativo já esta utilizando do shared preferences para salvar as configurações do usuário, abaixo está uma tabela comparando Hive e Drift
| opções | Vantagens | Desvantagens |
|---|---|---|
| Hive | - Alta performance; - Relativamente fácil de utilizar; -armazena objetos tipados nativamente(ideal para historico de conversas); |
-Não é o melhor para consultas complexas (como JOINs) |
| Drift | - Integração com Dart; - Oferece uma camada de abstração sobre o SQL, simplificando operações comuns de banco de dados e reduzindo a complexidade do código.; - 1. Type Safety: Garante a segurança de tipos em tempo de compilação, ajudando a evitar erros comuns de tipo que podem ocorrer com SQL puro; |
- Curva de aprendizado - Desempenho: A camada adicional de abstração pode introduzir uma leve sobrecarga de desempenho em comparação com consultas SQL diretas. -Complexidade inicial |
3. Considerações finais¶
Considerando o escopo do projeto e a ideia do que vai ser trabalhado com a persistência de dados, a sugestão é que seja trabalhado com o Hive, visto que a ideia é manter um histórico de chat e o contexto da conversa do bot