从GAE数据存储复制数据

时间:2012-05-03 13:43:38

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

我们有一个应用程序,我们正在GAE上部署。我的任务是提出将我们存储GAE数据存储的数据复制到亚马逊云中运行的系统的选项。

理想情况下,我们可以在不必在每次同步时传输整个数据存储的情况下执行此操作。复制不需要接近实时,所以每天一次或两次同步就可以正常工作。

任何有GAE经验的人都可以帮我解决这些选项吗?到目前为止,我已经提出:

  1. 使用Google提供的bulkloader.py将数据导出为CSV并以某种方式将CSV传输到亚马逊并在那里处理

  2. 创建一个在GAE上运行的Java应用程序,从数据存储中读取数据并将数据发送到在亚马逊上运行的另一个Java应用程序。

  3. 那些选项有用吗?与那些陷阱有什么关系?还有哪些其他选择?

1 个答案:

答案 0 :(得分:5)

您可以使用类似于App Engine HRD迁移或备份工具正在执行的逻辑:

  1. 使用子实体标记
  2. 标记已修改的实体
  3. 使用App Engine mapreduce library使用数据存储输入读取器对这些实体进行迭代运行MapperPipeline
  4. 在地图功能中,使用文件输出编写器获取父实体并将其序列化为Google存储并删除标记
  5. Ping远程主机以从Google存储网址
  6. 导入这些实体

    作为3和4的替代方案,您可以使用多个urlfetch(POST)将每个序列化实体直接发送到远程主机,但由于单个故障可能会损害数据导入的完整性,因此它更脆弱。 p>

    您可以查看datastore admin source code的灵感。