让我们说我有以下的预订数据库的用户

user_id
fname
lname

和它们的

ticket_id
user_id
flight_no

和相关联的航班

flight_no
airline
departure_time
arrival_time

唉,要是我需要改变移动这个谷歌的AppEngine?

我明白AppEngine上的不允许加入的。

这是否意味着我的表应该成为领域的一个大schmudge都集中在一起?

<强>预订

user_id
fname
lname
ticket_id
flight_no
airline
departure_time
arrival_time

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

有帮助吗?

解决方案

什么样的变化,你需要主要取决于哪些查询你需要运行,不会对你有什么样的数据。最有可能你只需要添加几件事情。

请查询列表,然后看看对查询的限制。你已经找到了问题的人后,试图用的BigTable的考虑限制重写他们。

例如,如果你经常需要找票的数量航班的列表,你将不只是能够做到:

SELECT
    flight_no, COUNT(*)
FROM
    flights
JOIN
    tickets ON tickets.flight_no = flights.flight_no
GROUP BY
    flight_no

所以你需要添加票的柜台flights和递增/递减,创建/删除票时。

这个好的一面是,BigTable的力量,你有一个非常可扩展的数据库设计。不好的一面是,它会浪费你很多时间,当你真的不的需要的一个可扩展的设计。

其他提示

您可以通过一个Web服务使用谷歌从应用的AppEngine真正SQL关系数据库。

一种这样的web服务是Rdbhost,在 http://www.rdbhost.com

它涉及到它的妥协,尤其是速度,在每个页面视图需要其他后端HTTP网页请求到数据库服务器,但它可以让你使用你已经有了SQL设计知识。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top