我的表在AppEngine的BigTable上运行需要做哪些改变?
技术问答
275 人阅读
|
0 人回复
|
2023-09-14
|
假设我有一个原因 用户 预订数据库:1 R" G: y _+ S) X& b9 v
user_idfnamelname和他们的 票6 a' v7 \7 O# c
ticket_iduser_idflight_no及相关 航班. x a" b, P* J
flight_noairlinedeparture_timearrival_time要移动此Google AppEngine,我需要改变什么?
& o3 T2 r( N; B/ ]* f+ \* u3 p6 m" z我了解AppEngine 不允许加入 。
9 Q( ^, c0 M- t/ L- p) M2 q+ [这是否意味着我的桌子应该成为所有领域的主要障碍?! ~0 s/ p$ C' N# h) k P
预订 :5 U' l `1 |# v. F2 x2 d2 R# W+ Q1 _
user_idfnamelnameticket_idflight_noairlinedeparture_timearrival_time换句话说,我现在所有的查询都在同一张表上运行吗?
+ M: g( ]6 o ?! U3 }
! Y" q+ ?* p# Z0 B6 K3 U/ q) W 解决方案: " A9 W/ E0 G- l; n6 f9 E+ {% G
你需要做哪些改变主要取决于你需要操作哪些查询,而不是你所拥有的数据。最有可能的是,你只需要添加几件事。
( _4 c3 W) a3 [: c4 {6 d0 f列出查询,然后查看查询限制。发现问题后,请考虑BigTable重写它们的约束。
/ T4 B% [) J9 J" f$ ~, d9 N& v例如,如果您经常需要查找航班列表的机票数量,您不仅可以执行以下操作:
6 m; X* ~- Y* k7 v7 h! RSELECT flight_no,COUNT(*)FROM flightsJOIN tickets ON tickets.flight_no = flights.flight_noGROUP BY flight_no所以,你需要它flights在创建/删除工单时,添加工单计数器并添加/减少工单计数器。& g- @3 m% M7 }1 {
好的方面是,BigTable迫使您进行非常可扩展的数据库设计。缺点是,当你真的 不需要 可扩展设计会浪费大量时间。 |
|
|
|
|
|