Pergunta

Eu prototipei um aplicativo para iPhone que usa (internamente) o SQLite como sua base de dados. A intenção era finalmente se comunicar com um servidor via PHP, que usaria o MySQL como o banco de dados de back-end.

Acabei de descobrir o Google App Engine, no entanto, mas sei muito pouco sobre isso. Eu acho que seria bom usar a interface Python para gravar no armazenamento de dados - mas sei muito pouco sobre a capacidade do GQL. Basicamente, escrevi todo o código do banco de dados de trabalho usando o MySQL, testando internamente no iPhone com o SQLite. O GQL oferecerá a mesma funcionalidade que o SQL pode? Eu li no site que ele não suporta consultas de junção. Também é realmente relacional?

Basicamente, acho que minha pergunta é um aplicativo que normalmente usa o trabalho de back -end do SQL também com o mecanismo de aplicativos do Google, com o GQL?

Espero que esteja claro ... qualquer orientação é ótima.

Foi útil?

Solução

É verdade que o Google App Engine é um produto muito legal, mas o DataStore é um animal diferente do que um banco de dados MySQL regular. Isso não quer dizer que o que você precisa não pode ser feito com o DataStore do GAE; No entanto, pode levar algum retrabalho do seu lado.

O mais proeminente que você percebe logo de início é que o GAE usa um mapeamento de objetos-relatórios para seu esquema de armazenamento de dados. Essencialmente, os gráficos de objetos são persistidos no banco de dados, mantendo atributos e relacionamentos com outros objetos. Em muitos casos, o ORM (mapeamentos relacionais de objetos) mapeia bastante bem no topo de um banco de dados relacional (é assim que o hibernato funciona). O mapeamento não é perfeito e você descobrirá que precisa fazer alterações para persistir seus dados. Além disso, o GAE tem algumas contornas únicas que complicam um pouco as coisas. Uma contratação que me incomoda muito não é poder consultar os caminhos de atributos: por exemplo, "selecione ... onde cachorro.owner.name = 'bob'". São essas regras que o forçam a ler e entender como o GAE Data Store funciona antes de você entrar.

Eu acho que o GAE poderia funcionar bem em sua situação. Pode levar algum tempo para entender a persistência do ORM em geral e o GAE DataStore em detalhes.

Outras dicas

O GQL oferece quase nenhuma funcionalidade; É usado apenas para consultas selecionadas e existe apenas para facilitar a redação de consultas selecionadas para programadores SQL. Nos bastidores, ele converte suas consultas em objetos DB.Query.

O armazenamento de dados do mecanismo de aplicativos não é um banco de dados relacional. Você pode fazer algumas coisas que parecem relacionais, mas meu conselho para quem vem de um histórico de SQL é evitar o GQL a todo custo para evitar a armadilha de pensar que o armazenamento de dados é qualquer coisa como um RDBMS e esquecer tudo o que você sabe sobre o banco de dados Projeto. Especificamente, se você estiver normalizando alguma coisa, logo desejará que não tivesse.

eu acho que isto artigo deve ajudá -lo.

Resumo: A computação em nuvem e o desenvolvimento de software para dispositivos portáteis são duas tecnologias muito quentes que estão sendo cada vez mais combinadas para criar soluções híbridas. Com este artigo, aprenda a conectar o Google App Engine, a oferta de computação em nuvem do Google, com o iPhone, a plataforma móvel da Apple. Você também verá como usar a biblioteca de código aberto, o TouchEngine, para controlar dinamicamente os dados do aplicativo no iPhone, conectando -se à nuvem de mecanismo do App e armazenando em cache esses dados para uso offline.

Essa é uma pergunta bastante genérica :)

Resposta curta: Sim. Isso envolverá repensar o seu modelo de dados, mas sim, as alterações são que você pode apoiá -lo com a API do GAE DataStore.

Quando você cria seus modelos Python (pense neles como tabelas), você certamente pode definir referências a outros modelos (então agora temos uma chave estrangeira). Ao selecionar este modelo, você receberá os modelos de referência (praticamente como uma junção).

Provavelmente funcionará, mas não é uma queda no substituto de um servidor MySQL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top