GAE / P:存储密钥列表以保证获取最新数据

时间:2015-10-02 20:35:32

标签: python google-app-engine google-cloud-datastore eventual-consistency

在我的Google App Engine应用中,我有大量代表人物的实体。在某些时候,我想处理这些实体,而且我拥有最新的数据非常重要。将它们放在同一个实体组中或进行跨组交易的人数太多了。

作为解决方案,我正在考虑在Google云端存储中存储密钥列表。我实际上使用此人的电子邮件地址作为密钥名称,因此我可以在文本文件中存储电子邮件地址列表。

当我想处理所有实体时,我可以执行以下操作:

  1. 从Google云端存储中读取文件
  2. 分批迭代文件(比如100)
  3. 使用ndb.get_multi()获取实体(这将始终提供最新数据)
  4. 处理实体
  5. 重复下一批直至完成
  6. 此过程是否存在任何问题,或者有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

如果,就像你在评论中说的那样,你的列表很少变化而且不能使用祖先(我假设因为你系统其余部分的写入频率),你提出的解决方案就可以了。您可以根据需要尽可能多地获取(多个)数据存储区。

由于您提到您可以根据需要更新密钥列表,这将是一个很好的方法。 您可以流式读取大文件(例如,从每行一行的云存储),并使用数据存储异步读取快速完成或使用谷歌云数据流进行读取和处理/合并。 dataflow还可用于在云存储中即时生成密钥列表文件。

答案 1 :(得分:-1)

您可能不需要编写自己的解决方案,有许多库可用于帮助您处理App Engine上的大量实体。 您可以使用map reduce执行此操作,但现在首选的方法是通过Google App Engine Pipeline API