我的表需要对AppEngine的BigTable进行哪些更改?

kar*_*arl 4 sql database google-app-engine bigtable table-structure

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

user_id
fname
lname
Run Code Online (Sandbox Code Playgroud)

和他们的门票

ticket_id
user_id
flight_no
Run Code Online (Sandbox Code Playgroud)

和相关的航班

flight_no
airline
departure_time
arrival_time
Run Code Online (Sandbox Code Playgroud)

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

我知道AppEngine 不允许加入.

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

预订:

user_id
fname
lname
ticket_id
flight_no
airline
departure_time
arrival_time
Run Code Online (Sandbox Code Playgroud)

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

Jak*_*čar 7

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

创建查询列表,然后查看查询限制.在找到有问题的那些之后,尝试用BigTable的约束重写它们.

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

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

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

好的一面是,BigTable迫使您拥有一个可扩展的数据库设计.不好的一面是,当你真的不需要可扩展的设计时,它浪费了你很多时间.