以CSV格式下载谷歌应用引擎实体

时间:2012-07-02 14:25:25

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

在我们的GAE应用中,用户通常需要将特定类型的实体下载为CSV。经常添加/更新新实体,这使得将所有实体预先或以固定间隔写入blob是不可行的。

对于大约500个实体(每个实体<2 KB),以500个批次提取,需要2分钟以上才能写入CSV文件blob,花费近1美元。用户还必须等待很长时间才能接收通常只有几个(<5)MB的文件。

我有两个问题:

A)可以通过为导出配置map-reduce管道来减少编写blob的时间吗?

B)有没有办法降低从数据存储区中获取大量实体并写入blob的成本?

编辑:刚刚了解到mapreduce只能在一种类型的所有实体上运行,而不是在已过滤的子集上运行。因此mapreduce可能会增加很多成本。还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

  1. 您应该使用A ppEngine pipeline它可以提高速度,因为它会在多个实例中分配作业。
  2. 您可以使用投影查询来降低获取实体的成本,您可以在其中指定要获取的属性。
  3. 至于下载速度,您使用blobstore与BlobstoreDownloadHandler?