如果没有加入Google App Engine,您的数据是否必须存在于一个大表中?

Chr*_*ins 12 database datatable google-app-engine database-design join

由于Google App Engine不允许加入,这是否意味着我必须在我的网络应用程序中获取所有表格并找出将它们组合成一个巨大的表格的方法?

Nic*_*son 9

仅仅因为您没有DBMS实现的连接并不意味着您不能拥有多个表.在App Engine中,这些被称为"实体类型",您可以根据需要拥有尽可能多的实体类型.

通常,您需要对数据进行非规范化,以避免频繁连接.在少数情况下,它们是不可避免的,您可以使用其他技术,例如在用户代码中进行连接.


pts*_*pts 5

将它与一个大表相结合总是一个选项,但它在大多数情况下会产生不必要的大型冗余表,因此它会使您的应用程序变得缓慢且难以维护.

您还可以通过迭代查询结果来模拟连接,并为第一个查询的每个结果运行第二个查询.如果您有SQL查询

SELECT a.x FROM b INNER JOIN a ON a.y=b.y;
Run Code Online (Sandbox Code Playgroud)

你可以用这样的东西来模仿这个:

for b in db.GqlQuery("SELECT * FROM b"):
  for a in db.GqlQuery("SELECT * FROM a WHERE y=:1", b.y):
    print a.x
Run Code Online (Sandbox Code Playgroud)