Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Chave/Valor vs Relacional

Qual a melhor maneira para o armazenamento de dados? Usar simplesmente chave/valor ou utilizar o SQLite para modelagem relacional? Quais as vantagens e desvantagens?

4 respostas

Trabalhar com chave valor (json) é muito menos burocrático do que criar esquemas com o Sqlite. Inclusive o próprio sqlite suporta chave valor só para denotar o quanto essa estrutura é conveniente. Lembre-se que o mundo Js usa Json e e você puder pegar carona nessa estrutura menos trabalho terá.

Mas se vc quer criar relatórios usando sql e tals usar esquemas do sqlite pode ser interessante, mas na prática eles são gerados no server, então minimiza um pouco essa necessidade.

Tudo bem meu aluno ?

Obrigado professor! :D

Nesse caso me surge uma nova dúvida. Para aplicações mais simples trabalhar com JSON é sem dúvida a melhor opção, mas nos casos de aplicações mais complexas onde o mais recomendado seria trabalhar com esquemas, como lidar com a falta de suporte da plataforma Windows ao SQLite?

No caso das outras opções de storage, não achei informações muito claras, mas vi que em alguns casos existem problemas de tamanho limite do banco. Existe alguma documentação que possa ajudar a entender melhor como lidar com o storage?

solução!

Tanto aplicações simples quanto complexas precisam lidar com a estrutura de dados JSON porque ela é padrão Web e por conseguinte utilizado pelo Ionic.

Em aplicações mobile, quem é o responsável em tratar os dados é seu servidor. A não ser que você tenha uma app que só guarda dado sem se comunicar com o back end. Nesse sentido, é o seu servidor que pode utilizar um banco de dados relacional ou não, pois estará recebendo de qualquer forma um JSON.

Agora, criar esquemas de trabalhar com SQL no Ionic é possível. A vantagem é poder lançar mão do seu conhecimento de SQL e poder realizar consultas mais sofisticadas. Mas como eu disse, a app mobile costuma ter um meio intermediário entre os dados capturados e quem vai tratá-los no backend.

Quando você usa o Storage (não sei se você viu isso já no curso). O Ionic tentará usar sempre o SQlite quando disponível, mas travará os dados como um BLOB (um JSON). Veja que até o SQlite suporta gravar JSON, pois é muito cômodo. Se o Sqlite não estiver disponível, com ou sem plugin, será usado IndexedDB para gravar os dados. No final, a persistência é apenas detalhe.

É muito relativo dizer "uma aplicação mais complexa", isso abre espaço para várias interpretações. Mas tenha em mente que lidar com JSON sem ter que resolver problema de impedância o deixará mais produtivo.

Ainda assim, se você quiser criar esquemas (e mantê-lo, atualizá-los toda vez na sua aplicação quando mudar) e usar toda a verborragia do SQLlite isso é possível.

Por fim, sugiro o seguinte caminho: use o Storage com JSON até que seja necessário usar esquemas de banco. Com isso, você deixará uma necessidade real aparecer e justificar a complexidade de se ter que lidar com esquemas.

Consegui esclarecer, ajudar?

Duvidas esclarecidas! Obrigado :)