假设我有一个由用户组成的预订数据库:
user_id
fname
lname
及其门票
ticket_id
user_id
flight_no
以及相关的航班
flight_no
airline
departure_time
arrival_time
移动此Google AppEngine需要更改哪些内容?
我理解AppEngine 不允许加入。
这是否意味着我的桌子应该成为一块混乱的田地?
预订:
user_id
fname
lname
ticket_id
flight_no
airline
departure_time
arrival_time
换句话说,我的所有查询现在针对同一个表运行?
答案 0 :(得分:7)
您需要进行哪些更改主要取决于您需要运行的查询,而不是您拥有的数据。很可能你只需添加几件东西。
制作一个查询列表,然后查看Restrictions on Queries。找到问题后,尝试用BigTable的约束重写它们。
例如,如果您经常需要查找航班列表的门票数量,您将无法做到:
SELECT flight_no, COUNT(*) FROM flights JOIN tickets ON tickets.flight_no = flights.flight_no GROUP BY flight_no
因此,您需要在flights
添加票证计数器,并在创建/删除票证时递增/递减。
这方面的好处是BigTable迫使您拥有一个可扩展的数据库设计。不好的一面是,当你真的不需要可扩展设计时,它浪费了你很多时间。
答案 1 :(得分:1)
您可以通过网络服务使用Google appengine应用中的正版SQL关系数据库。
一个这样的网络服务是位于http://www.rdbhost.com的Rdbhost。
它涉及到它的妥协,特别是速度,因为每个页面视图都需要向数据库服务器发送另一个后端http页面请求,但它允许您使用已有的SQL设计知识。