【发布时间】:2012-03-07 15:44:02
【问题描述】:
我有两个实体:User(id, name, groupId) 和 Group(id, title)。我想在我的网格中显示所有用户:|id|name|group title|。让用户获得组标题的最佳方式是什么? (使用低级 API 且没有反规范化)
【问题讨论】:
标签: google-app-engine google-cloud-datastore
我有两个实体:User(id, name, groupId) 和 Group(id, title)。我想在我的网格中显示所有用户:|id|name|group title|。让用户获得组标题的最佳方式是什么? (使用低级 API 且没有反规范化)
【问题讨论】:
标签: google-app-engine google-cloud-datastore
无需反规范化或更改模型定义,实际上只有一种方法:获取所有用户,创建一组他们的 groupId,然后使用查询来获取 Group 实体。不幸的是,您的系统无法很好地扩展,因为这种方法不能很好地利用数据存储。
为了提高性能和可扩展性,您可以做的一件事是存储组实体的实际数据存储 ID,然后使用 Group.get_by_id() 一次获取所有实体,而不是作为单独的查询。这利用了 get_by_id()(如 get_by_key_name() 比查询实体值更快,您还可以通过一次调用请求所有 id 的事实,显着减少了 AppEngine 需要完成的工作量。
【讨论】: