2

我已经制作了一个使用(内部)SQLite 作为其数据库的 iPhone 应用程序的原型。其目的是最终让它通过 PHP 与服务器通信,该服务器将使用 MySQL 作为后端数据库。

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

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

我希望这很清楚......任何指导都很棒。

4

4 回答 4

2

GQL 几乎不提供任何功能;它只用于 SELECT 查询,它的存在只是为了让 SQL 程序员更容易编写 SELECT 查询。在幕后,它将您的查询转换为 db.Query 对象。

App Engine 数据存储区根本不是关系数据库。你可以做一些看起来有关系的东西,但我对任何有 SQL 背景的人的建议是不惜一切代价避免 GQL,以避免认为数据存储区与 RDBMS 完全一样的陷阱,并忘记你所知道的关于数据库的一切设计。具体来说,如果你正在规范任何事情,你很快就会希望你没有。

于 2010-01-23T23:59:37.160 回答
2

诚然,Google App Engine 是一款非常酷的产品,但数据存储区与常规的 mySQL 数据库不同。这并不是说 GAE 数据存储无法满足您的需求。但是,您可能需要进行一些修改。

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

我认为 GAE 在您的情况下可以很好地工作。了解一般的 ORM 持久性和具体的 GAE 数据存储可能需要一些时间。

于 2010-01-23T21:03:25.950 回答
1

我认为这篇文章应该对你有所帮助。

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

于 2010-01-23T20:58:23.787 回答
1

这是一个非常笼统的问题:)

简短的回答:是的。这将涉及对您的数据模型的一些重新思考,但是是的,您可以使用 GAE 数据存储 API 来支持它。

当您创建 Python 模型(将这些视为表)时,您当然可以定义对其他模型的引用(所以现在我们有了一个外键)。当您选择此模型时,您将获得参考模型(很像一个连接)。

它很可能会起作用,但它并不是替代 mySQL 服务器的一个替代品。

于 2010-01-23T20:59:41.227 回答