4

假设我有一个由用户组成的预订数据库:

user_id
fname
lname

和他们的

ticket_id
user_id
flight_no

和相关航班

flight_no
airline
departure_time
arrival_time

我需要更改哪些内容才能移动此 Google AppEngine?

我了解 AppEngine不允许 joins

这是否意味着我的桌子应该成为一大堆混在一起的字段?

预订

user_id
fname
lname
ticket_id
flight_no
airline
departure_time
arrival_time

换句话说,我的所有查询现在都针对同一个表运行?

4

2 回答 2

7

您需要进行哪些更改主要取决于您需要运行哪些查询,而不是您拥有哪些数据。很可能您只需要添加几件事。

列出查询,然后查看Restrictions on Queries。在你找到有问题的那些之后,试着用 BigTable 的约束来重写它们。

例如,如果您经常需要查找航班列表的机票数量,您将无法做到:

选择
    航班号,COUNT(*)
从
    航班
加入
    机票 ON Tickets.flight_no = flight.flight_no
通过...分组
    航班号

因此,您需要flights在创建/删除票证时添加票证计数器并增加/减少该票证。

这样做的好处是 BigTable 迫使您拥有一个非常可扩展的数据库设计。不好的一面是,当您并不真正需要可扩展的设计时,它会浪费您的大量时间。

于 2009-04-08T18:35:03.613 回答
1

您可以通过网络服务使用来自 Google appengine 应用程序的正版 SQL 关系数据库。

一种这样的 Web 服务是 Rdbhost,位于http://www.rdbhost.com

它涉及到它的妥协,特别是速度,因为每个页面视图都需要另一个后端 http 页面请求到 db 服务器,但它允许您使用您已经拥有的 SQL 设计知识。

于 2009-08-17T19:51:38.247 回答