Veloster Framework - Persistência de dados para Android

Certamente todo framework é destinado a um modelo especifico. É de responsábilidade do desenvolvedor estudar seus bônus e seus ônus ontes de usar qualquer coisa. Os aplicativos que usam o Veloster são de uso geral e não tive grandes problemas de desenpenho, até por que já desenvolvo pensando nessas restrições.

Também temos que lembrar que um dos beneficios do Veloster é seu funcionamento em ambientes desktop, que foi um dos principais motivos para seu surgimento. Pense em alguma aplicação, como controle financeiro, ou catalogo de produtos, que pode usar a mesma camada de persistência/modelo para ambas aplicações, você tem um bom ganho de produtividade.

Além disso, você poderia usar apenas as consultas nativas e Result Transformer, que usa uma funcionalidade mínima do framework, deixando de lado todo gerenciamento de entidades, anotações e ainda possibilitando o uso facilitado do padrão JDBC no Android.

[quote=juliocbq][quote=ricardobocchi][quote=juliocbq]Mas qual a vantagem de usar persistência de dados em um dispositivo com hardware limitado como telefones e tablets? Já é barra conseguir desempenho em servidores com memória de sobra. Em telefones o custo seria muito consumo de bateria como citaram acima, congelamento do sistema, etc…

Qual a vantagem desse framework para dispositivos que foram projetados para serem “clientes”?[/quote]

Olá juliocbq,

Se você deu uma olhada nas funcionalidades do framework, você verá os beneficios que ele oferece quando falamos em legebilidade de código, produtividade e facilidade. Com certeza, como qualquer outro framework, ele cobra seu preço no desempenho, mas como já comentei, até o momento em meus projetos foi um preço baixo a se pagar. Se você acha que não vale a pena usar um framework de persistência em um dispositivo móvel, eu não vou discutir, acho que cada umdeve escolher seus caminhos de desenvolvimento como acha melhor. Esse projeto foi disponibilizado para quem se interessar em usar, é gratuito e já tem algumas empresas usando, então acho que alguns desenvolvedores podem ver seus beneficios e estão dispostos a pagar o preço pelo seu uso.

E quando você fala em dispositivos para “Clientes”, estamos falando em processadores dual ou quad core, com muita memória, muitas vezes melhor do que o pc de mesa que temos em casa. E se colocarmos no jogo a internet no Brasil, percebemos que é quase inevitavel desenvolver um aplicativo que trabalhe off-line e tenha que manipular uma quantidade minima de dados, ainda mais quando falamos no mundo corporativo.[/quote]

Em nenhum momento eu coloquei a questão “gosto” na pergunta.

Só gostaria de saber algumas vantagens em usar um framework de persistência em um dispositivo que suporta somente “uma” database que é o sqlite.[/quote]

Olá,

Já que você usou o termo “gambiarra” para um padrão estabelecido a muito tempo no Java e usado amplamento em frameworks como Spring, Hibernate, Google Guice, achei que fosse opinião pessoal, mas tudo bem, vamos lá.

  • API de Criteria - SQL’s facilitadas e bem legiveis
  • API de Validação - Não precisa fazer um monte de if antes de salvar ou deixar estourar um erro no banco de dados
  • Controle Transacional - Você não precisa se preocupar com abertura e fechamento de conexão ou transações com o banco de dados
  • Native SQL - Maneira facilitada de executar uma SQL usando o padrão JDBC (Você não precisa usar o novo modelo introduzido no android)
  • Desktop X Dispositivo móvel - Você pode compartilhar camadas de aplicações entre desktop e dispositivo móvel
  • Result Transformer - Você pode transformar resultados em entidades sem anotações
  • Lazy Load - Carregamento “Preguiçoso” em listas
  • Paginação - Rotinas de paginação embutidas na API
  • Backup/Restore - Rotina de backup/restore embutidas na API

Essas são algumas das funcionalidades disponíveis no framework.

Cuidado, a única pessoa que mencionou gambiarra foi o javaflex.

Eu acho que a questão não é sobre as vantagens das funcionalidades do framework e sim sobre as vantagens de fazer isso no dispositivo móvel em vez de delegar para um serviço externo ao dispositivo (o que é normalmente feito).

Justamente. Eu estava pensando em uma vantagem de trocar um servidor expondo “serviços restful” alimentando um cliente super leve no android.

Quem já trabalhou com framework de persistência sabe que muitas vezes pode ser um tiro no pé e tudo sair do controle, mesmo usando frameworks consagrados com hibernate. São problemas de sessão, problemas de lazy, de cascade, desempenho e outros mais. Mesmos assim muitos se aventura em seu uso, pois muitos desenvolvedores, como eu, cansam de em todo novo projeto desenvolver toda uma estrutura eficiente de persistência.

Um framework não resolve todos os problemas, bem pelo contrario, ele te tras problemas que você ainda não tinha! Então cabe ao arquiteto do software pesar seus prós e contras, faze o balanço e ver se vale a pena seu uso ou não. Eu, particularmente, sou totalmente a favor do uso de frameworks, pois aguém já quebrou muito a cabeça para desenvolver aquilo, logo é um bom caminho a ser seguido.

E falando do Veloster, mesmo usando suas funcionalidades não estaremos livres de fazer uma SQL nativa, onde exige um pouco mais de desempenho, e é por esse motivo que a API fornece caminhos facilitados para isso. O framework em sí é desenhado para facilitar a vida do desenvolvedor e todas suas funcionalidades vieram de necessidades que surgiram ao longo de seu uso. Seu objetivo não é portar aplicações para diferentes bancos de dados, e sim facilitar e padronizar a construção da camada de persistência.

Justamente. Eu estava pensando em uma vantagem de trocar um servidor expondo “serviços restful” alimentando um cliente super leve no android.[/quote]

Na minha opinião, existe um único motivo:

  • 3G Brasileira.

Óbvio, se for um app empresarial onde os dados vão ser acessados somente dentro de uma rede privada, não vejo motivo para deixar o processamento de regras de negocio ser feito pelo Smartphone… Na realidade, nem vejo porque expor um serviço restful… Design responsivo, e aplicação web resolveria o problema de forma muito mais elegante.
Só que não só desse cenário vivem os desenvolvedores Android… Existem aplicativos que devem ter persistência de dados mas não contam com uma rede privada para realiza-la… Idem para processamento de dados. A questão é: Nesse cenário, existe uma queda de performance grande o suficiente ao utilizar o framework que anule as vantagens de utiliza-lo? Não sei, afinal não tem nenhum Benchmark nem nada do tipo… Mas se fosse para chutar, eu diria que não.

[quote=ricardobocchi]Quem já trabalhou com framework de persistência sabe que muitas vezes pode ser um tiro no pé e tudo sair do controle, mesmo usando frameworks consagrados com hibernate. São problemas de sessão, problemas de lazy, de cascade, desempenho e outros mais. Mesmos assim muitos se aventura em seu uso, pois muitos desenvolvedores, como eu, cansam de em todo novo projeto desenvolver toda uma estrutura eficiente de persistência.

Um framework não resolve todos os problemas, bem pelo contrario, ele te tras problemas que você ainda não tinha! Então cabe ao arquiteto do software pesar seus prós e contras, faze o balanço e ver se vale a pena seu uso ou não. Eu, particularmente, sou totalmente a favor do uso de frameworks, pois aguém já quebrou muito a cabeça para desenvolver aquilo, logo é um bom caminho a ser seguido.

E falando do Veloster, mesmo usando suas funcionalidades não estaremos livres de fazer uma SQL nativa, onde exige um pouco mais de desempenho, e é por esse motivo que a API fornece caminhos facilitados para isso. O framework em sí é desenhado para facilitar a vida do desenvolvedor e todas suas funcionalidades vieram de necessidades que surgiram ao longo de seu uso. Seu objetivo não é portar aplicações para diferentes bancos de dados, e sim facilitar e padronizar a construção da camada de persistência.[/quote]

Entendi. O ganho é com legibilidade e manutenção de código. Além de produtividade.

E como fica o tempo de vida da bateria do dispositivo com todo esse processamento?

ricardobocchi, eu entendo sua vontade de defender o framework. Mas o que estamos questionando não é funcionalidade nem persistência ou lazy loading. Estamos questionando os motivos de se fazer isso no dispositivo em vez de fazer um serviço restfull ser consumido no dispositivo.

Pensando no mundo corporativo, se o cara tem um smartphone mas não pode conectar em uma rede wireless na corporação, tem algo de errado. Claro que algumas informações podem ser gravadas offline (quando o usuário não está na rede da empresa, por exemplo), mas elas seriam enviadas posteriormente para o serviço. Por causa disso não seria tão interessante fazer uma persistência com framework pois um dump da informação pode ser feito pra então ser mandado ao serviço.

São coisas como essa que estamos querendo debater.

[quote=juliocbq]Entendi. O ganho é com legibilidade e manutenção de código. Além de produtividade.

E como fica o tempo de vida da bateria do dispositivo com todo esse processamento? [/quote]

Lembrando que esse ganho pode ser obtido se for usado um serviço externo pra retirar essa responsabilidade do dispositivo.

Também acho a questão da bateria muito pertinente.

Olha, em 90% dos projetos que trabalho, é um requisito da aplicação trabalhar off-line. Então, mesmo deixando toda a carga de processamento para o servidor, ainda preciso ter uma maneira eficiente de armazenamento local. Imagine um sistema de pedidos, você terá que armazenar clientes, produtos, categorias, pedidos entre outros. E além de armazenar você terá que sincronizar em algum momento. O Veloster facilita exatamente esse ponto, de armazenamento, recuperação e alteração desses dados. Como minha empresa tem vários projetos andando ao mesmo tempo, além de ter bons softwares, bonitos rapidos e tudo mais, preciso de produtividade e facilidade no desenvolvimento. E o Veloster fornece essa agilidade e produtividade que preciso, tornando quase que transparente a camada de persistência, sobrando mais tempo para tratar outros requisitos como desempenho, usabilidade e disigner.

[quote=Ataxexe][quote=juliocbq]Entendi. O ganho é com legibilidade e manutenção de código. Além de produtividade.

E como fica o tempo de vida da bateria do dispositivo com todo esse processamento? [/quote]

Lembrando que esse ganho pode ser obtido se for usado um serviço externo pra retirar essa responsabilidade do dispositivo.

Também acho a questão da bateria muito pertinente.[/quote]

é verdade.

[quote=Ataxexe]ricardobocchi, eu entendo sua vontade de defender o framework. Mas o que estamos questionando não é funcionalidade nem persistência ou lazy loading. Estamos questionando os motivos de se fazer isso no dispositivo em vez de fazer um serviço restfull ser consumido no dispositivo.

Pensando no mundo corporativo, se o cara tem um smartphone mas não pode conectar em uma rede wireless na corporação, tem algo de errado. Claro que algumas informações podem ser gravadas offline (quando o usuário não está na rede da empresa, por exemplo), mas elas seriam enviadas posteriormente para o serviço. Por causa disso não seria tão interessante fazer uma persistência com framework pois um dump da informação pode ser feito pra então ser mandado ao serviço.

São coisas como essa que estamos querendo debater.[/quote]

Sim Ataxexe, eu entendo o que você está querendo dizer, e o que eu estou dizendo é exatamente o que você está entendo. O ganho dele é exatamente isso! Produtividade. Se para suas aplicações isso não é um ganho, então você não deve usar. Só acho que nem toda aplicação vai ter um servidor para fazer o processamento, tem muitas aplicações que geram arquivos e mandam para um outro sistema a informação pronta. Também tem a questão da internet, que em muitos lugares é ruim de mais ou inexistente e os planos são carissimos. Se você obrigar o cliente a ter internet ilimitada ou um servidor dedicado, já está reduzindo suas possibilidades.

O framework te ajuda a fazer uma coisa que você é obrigado a fazer, apenas isso! Ou seja, obrigatóriamente você terá que manipular dados e certamente você vai cuidar para que essa manipulação de dados não seja exagerada, O framework não vai ficar executando um processo infinito ocupando toda bateria, memória e processamento do aparelho. Ele apenas vai facilitar a persistência e combrar seu preço por isso. No lugar de você fazer um:

Você vai fazer

A ideia é simples e sem grandes pretenções. Apenas facilitar o desenvolvimento! Como já disse e volto a repetir, nos projetos que trabalhei ele sempre foi uma mão na roda, por esse motivo ele está sendo compartilhado, se ele foi útil para os projetos da minha empresa, pode ser útil para outros projetos. Seu uso é extremamente simples, sem grandes complicações. Em poucos passos você já tem seu CRUD.

[quote=ricardobocchi][quote=Ataxexe]ricardobocchi, eu entendo sua vontade de defender o framework. Mas o que estamos questionando não é funcionalidade nem persistência ou lazy loading. Estamos questionando os motivos de se fazer isso no dispositivo em vez de fazer um serviço restfull ser consumido no dispositivo.

Pensando no mundo corporativo, se o cara tem um smartphone mas não pode conectar em uma rede wireless na corporação, tem algo de errado. Claro que algumas informações podem ser gravadas offline (quando o usuário não está na rede da empresa, por exemplo), mas elas seriam enviadas posteriormente para o serviço. Por causa disso não seria tão interessante fazer uma persistência com framework pois um dump da informação pode ser feito pra então ser mandado ao serviço.

São coisas como essa que estamos querendo debater.[/quote]

Sim Ataxexe, eu entendo o que você está querendo dizer, e o que eu estou dizendo é exatamente o que você está entendo. O ganho dele é exatamente isso! Produtividade. Se para suas aplicações isso não é um ganho, então você não deve usar. Só acho que nem toda aplicação vai ter um servidor para fazer o processamento, tem muitas aplicações que geram arquivos e mandam para um outro sistema a informação pronta. Também tem a questão da internet, que em muitos lugares é ruim de mais ou inexistente e os planos são carissimos. Se você obrigar o cliente a ter internet ilimitada ou um servidor dedicado, já está reduzindo suas possibilidades.

O framework te ajuda a fazer uma coisa que você é obrigado a fazer, apenas isso! Ou seja, obrigatóriamente você terá que manipular dados e certamente você vai cuidar para que essa manipulação de dados não seja exagerada, O framework não vai ficar executando um processo infinito ocupando toda bateria, memória e processamento do aparelho. Ele apenas vai facilitar a persistência e combrar seu preço por isso. No lugar de você fazer um:

Você vai fazer

A ideia é simples e sem grandes pretenções. Apenas facilitar o desenvolvimento! Como já disse e volto a repetir, nos projetos que trabalhei ele sempre foi uma mão na roda, por esse motivo ele está sendo compartilhado, se ele foi útil para os projetos da minha empresa, pode ser útil para outros projetos. Seu uso é extremamente simples, sem grandes complicações. Em poucos passos você já tem seu CRUD.

[/quote]

É nesse ponto que eu queria chegar. O sqlite foi concebido para ser extremamente simples e não precisar desse tipo de solução. Ele é desenvolvido para guardar coisas simples como listas, etc…
Essa informação toda nem precisa ser gravada em um banco, pode ser serializada em um arquivo xml.

Pode parecer que não, mas a questão da bateria é extremamente importante.

Justamente. Eu estava pensando em uma vantagem de trocar um servidor expondo “serviços restful” alimentando um cliente super leve no android.[/quote]

Na minha opinião, existe um único motivo:

  • 3G Brasileira.

Óbvio, se for um app empresarial onde os dados vão ser acessados somente dentro de uma rede privada, não vejo motivo para deixar o processamento de regras de negocio ser feito pelo Smartphone… Na realidade, nem vejo porque expor um serviço restful… Design responsivo, e aplicação web resolveria o problema de forma muito mais elegante.
Só que não só desse cenário vivem os desenvolvedores Android… Existem aplicativos que devem ter persistência de dados mas não contam com uma rede privada para realiza-la… Idem para processamento de dados. A questão é: Nesse cenário, existe uma queda de performance grande o suficiente ao utilizar o framework que anule as vantagens de utiliza-lo? Não sei, afinal não tem nenhum Benchmark nem nada do tipo… Mas se fosse para chutar, eu diria que não.[/quote]

Isso mesmo. Acho pouco provavel que em pouco tempo tenhamos condições de fazer aplicações consideradas críticas, como um sistema de pedidos, catalogo de produtos ou coisas do tipo, totalmente off-line. Por exemplo, eu moro no interior do Rio Grande do Sul, em uma cidade que é muito desenvolvidade ecônomicamente, mas muitas empresas estão localizadas em lugares onde 3g não pega e em muitos casos você não pode pedir para o cliente “bah, deixa eu usar tua internet ai pra fazer um pedido e te mostrar os produtos”, até por que depende de uma serie de liberações da TI, e a situação até fica meio estranha. Logo, não temos como fugir do armazenamento dos dados locais, e é por esse motivo que o Android tem banco de dados. Então, se tem banco de dados, usa SQL, usa transações, por que não usar uma maneira simplificada de persistência? O framework não vai usar todos os recursos do dispositivo, a não ser que o desenvolvedor não saiba programar. Certamente ele vai cobrar um preço, que fica a cargo do arquiteto decidir pagar ou não.

Justamente. Eu estava pensando em uma vantagem de trocar um servidor expondo “serviços restful” alimentando um cliente super leve no android.[/quote]

Na minha opinião, existe um único motivo:

  • 3G Brasileira.

Óbvio, se for um app empresarial onde os dados vão ser acessados somente dentro de uma rede privada, não vejo motivo para deixar o processamento de regras de negocio ser feito pelo Smartphone… Na realidade, nem vejo porque expor um serviço restful… Design responsivo, e aplicação web resolveria o problema de forma muito mais elegante.
Só que não só desse cenário vivem os desenvolvedores Android… Existem aplicativos que devem ter persistência de dados mas não contam com uma rede privada para realiza-la… Idem para processamento de dados. A questão é: Nesse cenário, existe uma queda de performance grande o suficiente ao utilizar o framework que anule as vantagens de utiliza-lo? Não sei, afinal não tem nenhum Benchmark nem nada do tipo… Mas se fosse para chutar, eu diria que não.[/quote]

Benchmark existe na seção bateria do Android. Basta olhar lá.


[quote=juliocbq][quote=ricardobocchi][quote=Ataxexe]ricardobocchi, eu entendo sua vontade de defender o framework. Mas o que estamos questionando não é funcionalidade nem persistência ou lazy loading. Estamos questionando os motivos de se fazer isso no dispositivo em vez de fazer um serviço restfull ser consumido no dispositivo.

Pensando no mundo corporativo, se o cara tem um smartphone mas não pode conectar em uma rede wireless na corporação, tem algo de errado. Claro que algumas informações podem ser gravadas offline (quando o usuário não está na rede da empresa, por exemplo), mas elas seriam enviadas posteriormente para o serviço. Por causa disso não seria tão interessante fazer uma persistência com framework pois um dump da informação pode ser feito pra então ser mandado ao serviço.

São coisas como essa que estamos querendo debater.[/quote]

Sim Ataxexe, eu entendo o que você está querendo dizer, e o que eu estou dizendo é exatamente o que você está entendo. O ganho dele é exatamente isso! Produtividade. Se para suas aplicações isso não é um ganho, então você não deve usar. Só acho que nem toda aplicação vai ter um servidor para fazer o processamento, tem muitas aplicações que geram arquivos e mandam para um outro sistema a informação pronta. Também tem a questão da internet, que em muitos lugares é ruim de mais ou inexistente e os planos são carissimos. Se você obrigar o cliente a ter internet ilimitada ou um servidor dedicado, já está reduzindo suas possibilidades.

O framework te ajuda a fazer uma coisa que você é obrigado a fazer, apenas isso! Ou seja, obrigatóriamente você terá que manipular dados e certamente você vai cuidar para que essa manipulação de dados não seja exagerada, O framework não vai ficar executando um processo infinito ocupando toda bateria, memória e processamento do aparelho. Ele apenas vai facilitar a persistência e combrar seu preço por isso. No lugar de você fazer um:

Você vai fazer

A ideia é simples e sem grandes pretenções. Apenas facilitar o desenvolvimento! Como já disse e volto a repetir, nos projetos que trabalhei ele sempre foi uma mão na roda, por esse motivo ele está sendo compartilhado, se ele foi útil para os projetos da minha empresa, pode ser útil para outros projetos. Seu uso é extremamente simples, sem grandes complicações. Em poucos passos você já tem seu CRUD.

[/quote]

É nesse ponto que eu queria chegar. O sqlite foi concebido para ser extremamente simples e não precisar desse tipo de solução. Ele é desenvolvido para guardar coisas simples como listas, etc…
Essa informação toda nem precisa ser gravada em um banco, pode ser serializada em um arquivo xml.

Pode parecer que não, mas a questão da bateria é extremamente importante.[/quote]

Bom, nesse caso você está optando por trabalhar com outro forma de armazenamento. Se em seu projeto ela for mais conveniênte, então ela deve ser a melhor opção para você. E na verdade o SQLite não é tão simples não, ele tem um grande poder de armazenamento suportando varios GB. Na dúvida, dê uma olhada em http://pt.wikipedia.org/wiki/SQLite
E aposto que muitos desenvolvedores preferem SQL do que XML, a final entre acesso a disco em um XML ou SQLite, ainda fico com SQLite que é um banco de verdade e é muito mais simples de manipular. E outra, seguindo a discussão, o Veloster seria um possível gargalo em uma volumosa manipulação de dados, mas como sabemos, em um dispositivo limitado temos que armazenar só o necessário, reduzingo ao máximo a quantidade de dados, isso independênte do seu uso ou não. Então, se a manipulação de dados for grande, com Veloster ou sem Veloster, vai ser um gargalo. E quanto a bateria, tenho aplicações que rodam em background em celulares, e o uso da bateria é considerada dentro do normal. Então voltamos ao ponto inícial, onde tudo vai depender do objetivo da aplicação.

Justamente. Eu estava pensando em uma vantagem de trocar um servidor expondo “serviços restful” alimentando um cliente super leve no android.[/quote]

Na minha opinião, existe um único motivo:

  • 3G Brasileira.

Óbvio, se for um app empresarial onde os dados vão ser acessados somente dentro de uma rede privada, não vejo motivo para deixar o processamento de regras de negocio ser feito pelo Smartphone… Na realidade, nem vejo porque expor um serviço restful… Design responsivo, e aplicação web resolveria o problema de forma muito mais elegante.
Só que não só desse cenário vivem os desenvolvedores Android… Existem aplicativos que devem ter persistência de dados mas não contam com uma rede privada para realiza-la… Idem para processamento de dados. A questão é: Nesse cenário, existe uma queda de performance grande o suficiente ao utilizar o framework que anule as vantagens de utiliza-lo? Não sei, afinal não tem nenhum Benchmark nem nada do tipo… Mas se fosse para chutar, eu diria que não.[/quote]

Isso mesmo. Acho pouco provavel que em pouco tempo tenhamos condições de fazer aplicações consideradas críticas, como um sistema de pedidos, catalogo de produtos ou coisas do tipo, totalmente off-line. Por exemplo, eu moro no interior do Rio Grande do Sul, em uma cidade que é muito desenvolvidade ecônomicamente, mas muitas empresas estão localizadas em lugares onde 3g não pega e em muitos casos você não pode pedir para o cliente “bah, deixa eu usar tua internet ai pra fazer um pedido e te mostrar os produtos”, até por que depende de uma serie de liberações da TI, e a situação até fica meio estranha. Logo, não temos como fugir do armazenamento dos dados locais, e é por esse motivo que o Android tem banco de dados. Então, se tem banco de dados, usa SQL, usa transações, por que não usar uma maneira simplificada de persistência? O framework não vai usar todos os recursos do dispositivo, a não ser que o desenvolvedor não saiba programar. Certamente ele vai cobrar um preço, que fica a cargo do arquiteto decidir pagar ou não.[/quote]

Concordo com você ricardobocchi, mas este cenário offline nesse tipo de dispositivo é realmente crítico. Eu venho falando da questão da bateria á alguns posts acima e ninguém se interessou em debater sobre isso, já que 60% de uma aplicação ainda mais offline com grande custo de processamento deve prever. Não pesar isso é uma falha.

[quote=ricardobocchi]

Bom, nesse caso você está optando por trabalhar com outro forma de armazenamento. Se em seu projeto ela for mais conveniênte, então ela deve ser a melhor opção para você. E na verdade o SQLite não é tão simples não, ele tem um grande poder de armazenamento suportando varios GB. Na dúvida, dê uma olhada em http://pt.wikipedia.org/wiki/SQLite
E aposto que muitos desenvolvedores preferem SQL do que XML, a final entre acesso a disco em um XML ou SQLite, ainda fico com SQLite que é um banco de verdade e é muito mais simples de manipular. E outra, seguindo a discussão, o Veloster seria um possível gargalo em uma volumosa manipulação de dados, mas como sabemos, em um dispositivo limitado temos que armazenar só o necessário, reduzingo ao máximo a quantidade de dados, isso independênte do seu uso ou não. Então, se a manipulação de dados for grande, com Veloster ou sem Veloster, vai ser um gargalo. E quanto a bateria, tenho aplicações que rodam em background em celulares, e o uso da bateria é considerada dentro do normal. Então voltamos ao ponto inícial, onde tudo vai depender do objetivo da aplicação.[/quote]

Alguns gb em comparação com dezenas de teras é um coisa simples sim. O sqlite foi desenvolvido para trabalhar com embarcados e por isso é simples.
A opção de usar o xml é o que você mesmo acabou de dizer, pois vai apenas guardar coisas simples. Por isso perguntei sobre as vantagens do framework em relação a custo benefício.

Sobre a aplicação rodar em background não tem relação com consumo de energia. O que dita isso é a quantidade de instruções que você joga no processador. No caso está intimamente relacionada com o processamento e logicamente voltamos a questão de ser vantagem ou não usar framework de persistência em dispositivos com poder de processamento, memória e energia limitados.

A pergunta (que você respondeu em parte com o caso do sistema de pedidos) era porque usar isso no dispositivo em vez de usar no servidor e porque seria melhor que possíveis alternativas (como o dump que eu citei). É bacana você mostrar isso pra justamente convencer mais pessoas a usarem o framework.

No caso da sua resposta. Eu posso ter o mesmo ganho em produtividade se eu usar o servidor pra fazer essas coisas e um serviço rest. O ponto é: por quê eu irei precisar de algo que vá contra a filosofia da simplicidade do sqlite e onerar o dispositivo com operações que um serviço externo pode fazer (representando uma economia de bateria)? É uma pergunta que as pessoas vão ter quando olharem a premissa do framework.

Eu tirei algumas conclusões sobre ele, tanto que afirmei que ele tinha um mercado restrito. Eu gostaria de ter visto mais debates sobre as alternativas frente ao Veloster e não ao que o Veloster me oferece (que já tinha sido citado antes).

O ponto da bateria é muito crítico (na PlayStore muitas pessoas reclamam sobre o consumo de bateria de alguns apps). As pessoas não compram um smartphone pra usar somente um aplicativo, então não podemos assumir que os 1 GB e 4 processadores do celular estarão lá só pro nosso app, isso tudo será compartilhado entre muitos outros serviços. O simples fato de ignorarmos as permissões de leitura de chamada (para pausar alguma coisa no app caso o usuário receba uma ligação, por exemplo) já pode botar aplicativo lá embaixo.

Não estou querendo gerar flames, acho legal a iniciativa (como eu já havia dito no início do post), dei algumas dicas, mas fiquei com algumas dúvidas e achei que a melhor pessoa pra me responder seria o criador da ferramenta, mas não esperava ler isto: