【发布时间】:2015-10-02 20:35:31
【问题描述】:
在我的 Google App Engine 应用中,我有大量代表人的实体。在某些时候,我想处理这些实体,拥有最新数据非常重要。太多了,无法将它们放在同一个实体组中或进行跨组事务。
作为一种解决方案,我正在考虑在 Google Cloud Storage 中存储一个密钥列表。我实际上使用此人的电子邮件地址作为键名,因此我可以将电子邮件地址列表存储在文本文件中。
当我想处理所有实体时,我可以执行以下操作:
- 从 Google Cloud Storage 读取文件
- 批量迭代文件(比如 100 次)
- 使用
ndb.get_multi()获取实体(这将始终提供最新数据) - 处理实体
- 重复下一批直到完成
这个过程有什么问题吗?或者有更好的方法吗?
【问题讨论】:
-
您的密钥列表会经常更改吗?如果是这样,您不只是将问题推向确保您拥有高度一致的键列表吗?
-
我根本不明白这如何解决您的问题。您打算如何更新文件?
-
更新文件不是问题。该文件在创建新实体之前更新。新实体的创建相对较少。
-
为什么不为所有的人添加一个共同的祖先并进行祖先查询。如果这似乎不可行,我会抛出一些奇怪的东西:分片祖先。将您的人员实体均匀分布在祖先的分片上,当您需要最新数据时,祖先会查询这些分片。这只是一个想法,但也许值得一试。
-
@konqi,有趣的想法,但实现起来似乎很复杂。我得再考虑一下。
标签: python google-app-engine google-cloud-datastore eventual-consistency