我已经原型化了一个iPhone应用程序,该应用程序使用(内部)SQLite作为数据库。 目的是最终使它通过PHP与服务器通信,该服务器将使用MySQL作为后端数据库。
我刚刚发现了Google App Engine,但对此了解甚少。 我认为使用Python接口写入数据存储会很好-但是我对GQL的功能知之甚少。 我基本上已经使用MySQL编写了所有有效的数据库代码,并使用SQLite在iPhone上进行了内部测试。 GQL是否提供与SQL相同的功能? 我在网站上看到它不支持联接查询。 也是真的关系吗?
基本上,我想我的问题是,通常使用SQL后端的应用程序是否可以与Google的App Engine和GQL一起使用?
我希望这很清楚...任何指导都很棒。
的确,Google App Engine是一个非常酷的产品,但是数据存储区与常规的mySQL数据库是不同的野兽。 这并不是说您无法使用GAE数据存储来完成所需的工作; 但是,这可能需要您进行一些修改。
您从一开始就注意到的最突出的区别是GAE在其数据存储方案中使用了对象关系映射。 本质上,对象图保存在数据库中,并在那里保留了与其他对象的属性和关系。 在许多情况下,ORM(对象关系映射)在关系数据库之上的映射相当好(这就是Hibernate的工作方式)。 但是,该映射并不完美,您将发现需要进行更改以保留数据。 此外,GAE具有一些独特的约束,使事情变得有些复杂。 一个困扰我很多的矛盾是无法查询属性路径:例如“ select ... where dog.owner.name ='bob'“。 这些规则使您在跳入之前必须阅读并了解GAE数据存储的工作方式。
我认为GAE可以在您的情况下很好地工作。 一般而言,可能需要一些时间来了解ORM的持久性,而具体地了解GAE数据存储。
GQL几乎不提供任何功能。 它仅用于SELECT查询,并且仅用于使SQL程序员更容易编写SELECT查询。 在后台,它将查询转换为db.Query对象。
App Engine数据存储区根本不是关系数据库。 您可以做一些看起来很相关的工作,但是我对来自SQL背景的任何人的建议是,不惜一切代价避免GQL,以避免陷入认为数据存储完全像RDBMS之类的陷阱,并且忘记了有关数据库的所有知识设计。 具体来说,如果您要对任何内容进行规范化,那么您很快就会希望自己没有。
我认为这篇文章应该对您有所帮助。
简介:手持设备的云计算和软件开发是两项非常热门的技术,它们越来越多地结合起来以创建混合解决方案。 通过本文,您将学习如何将Google的云计算产品Google App Engine与苹果的移动平台iPhone连接起来。 您还将看到如何使用开源库TouchEngine通过连接到App Engine云并缓存该数据以供脱机使用来动态控制iPhone上的应用程序数据。
这是一个非常普通的问题:)
简短的回答:是的。 这将涉及对数据模型的一些重新思考,但是是的,所做的更改是您可以使用GAE Datastore API支持它。
当您创建Python模型(将它们视为表)时,您当然可以定义对其他模型的引用(因此现在有了外键)。 选择此模型时,您将取回引用模型(非常像联接)。
它很可能会工作,但并不是替代MySQL服务器的原因。