2010-01-23 83 views
2

我已经对使用(内部)SQLite作为其数据库的iPhone应用程序进行了原型开发。目的是最终让它通过PHP与服务器进行通信,这将使用MySQL作为后端数据库。使用Google App Engine的iPhone应用程序

但是,我刚刚发现Google App Engine,但对此知之甚少。我认为使用Python接口写入数据存储是很好的 - 但我对GQL的能力知之甚少。我已经基本上使用MySQL编写了所有可用的数据库代码,并使用SQLite在iPhone上进行了内部测试。 GQL是否提供与SQL可以相同的功能?我在网站上读到它不支持连接查询。它也是真正的关系?

基本上我猜我的问题是,通常使用SQL后端的应用程序能否与Google的App Engine一起使用,以及使用GQL?

我希望这是明确的......任何指导都很好。

回答

2

确实,Google App Engine是一款非常酷的产品,但数据存储区与普通的mySQL数据库不同。这并不是说GAE数据存储不能满足您的需求;然而它可能需要一些重新设计。

您从一开始就注意到的最突出的不同之处在于GAE为其数据存储方案使用了对象关系映射。本质上,对象图被保存在数据库中,并维护其他对象的属性和关系。在许多情况下,ORM(对象关系映射)在关系数据库上很好地映射(这就是Hibernate的工作原理)。虽然映射并不完美,但您会发现需要进行修改才能保留数据。此外,GAE有一些独特的限制,使事情变得复杂一点。一个困扰我很多的障碍是无法查询属性路径:例如, “select ... where dog.owner.name ='bob'”。正是这些规则迫使您在跳入之前阅读并理解GAE数据存储的工作原理。

我认为GAE可以在您的情况下正常工作。通常需要一些时间来理解ORM持久性,以及GAE数据存储的具体细节。

1

我觉得这个article应该可以帮到你。

摘要:针对手持设备云计算和软件开发是越来越多地被组合,以创建混合解决方案两个非常热门的技术。通过本文,了解如何将Google的云计算产品Google App Engine与Apple的移动平台iPhone连接起来。您还将看到如何使用开源库TouchEngine通过连接到App Engine云并缓存该数据以供脱机使用,从而动态控制iPhone上的应用程序数据。

1

这是一个非常通用的问题:)

简短的回答:是的。这将涉及到对数据模型的一些重新思考,但是,可以通过GAE Datastore API支持更改。当你创建你的Python模型(将它们想象成表格)时,你当然可以定义对其他模型的引用(所以现在我们有一个外键)。当你选择这个模型时,你会找回参考模型(非常像一个连接)。

它很可能会工作,但它不是替代mySQL服务器的下降。

2

GQL几乎没有提供任何功能;它仅用于SELECT查询,并且它仅用于使SQL程序员更容易编写SELECT查询。在幕后,它将您的查询转换为db.Query对象。

App Engine数据存储根本不是关系数据库。你可以做一些看起来与关系相关的东西,但是我对任何来自SQL背景的人的建议是不惜一切代价避免GQL,以避免陷入数据存储就像RDBMS一样的错误,并忘记你对数据库的所有知识设计。具体来说,如果你正常化任何事情,你很快就会希望你没有。

相关问题