sql - 我的表需要进行哪些更改才能在 AppEngine 的 BigTable 上工作?

标签 sql database google-app-engine bigtable table-structure

假设我有一个包含用户的预订数据库:

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

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

最佳答案

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

列出查询,然后查看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 迫使您拥有非常可扩展的数据库设计。不利的一面是,当您并不真正需要可扩展的设计时,它会浪费您大量的时间。

关于sql - 我的表需要进行哪些更改才能在 AppEngine 的 BigTable 上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/731147/

相关文章:

python - isinstance() 因未知原因返回 False

database - 如何在 Google App Engine 中创建数据库表

java - 最新的 appengine-gcs-client lib 产生 GCS Java API 弃用警告

java - 如何将一组允许值中的字符串参数传递给函数

mysql - 如何从 2 个表中选择行,其中每个表中的 1 列可以通过共同目的合并?

python - Postgresql 启动失败

.net - .Net 中的数据库应用程序最佳实践

sql - 使用 SQL Access 数据源以显示每个站点的最新条目

MySQL - 为什么我的 innodb_force_recovery 显示为 "unknown variable"

SQL Multiple select from 三个带外键的表