从数据存储中读取数据

时间:2012-03-07 15:44:03

标签: google-app-engine google-cloud-datastore

我有两个实体:User(id,name,groupId)和Group(id,title)。我想在我的网格中显示所有用户:| id | name | group title |。获得用户群组头衔的最佳方式是什么? (使用低级API而不进行非规范化)

1 个答案:

答案 0 :(得分:0)

如果没有非规范化或更改模型定义,实际上只有一种方法:获取所有用户,创建一组groupId并使用查询来获取Group实体。不幸的是,您的系统不能很好地扩展,因为这种方法不能很好地利用数据存储。

您可以做的一件事是提高性能和可伸缩性,我们将存储Group实体的实际数据存储区ID,然后使用Group.get_by_id()一次获取所有实体而不是单独的查询。这充分利用了get_by_id()(如get_by_key_name()比查询实体值更快的事实,您还可以通过一次调用请求所有ID,从而大大减少了需要的工作量由AppEngine完成。