3

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

理想情况下,我们可以做到这一点,而不必在每次同步时传输整个数据存储。复制不需要接近实时,所以一天一两次同步就可以了。

任何有 GAE 经验的人都可以在这里帮助我了解可能的选择吗?到目前为止,我想出了:

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

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

这些选项有效吗?这些会有什么问题?还有哪些其他选择?

4

1 回答 1

5

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

  1. 用子实体标记标记修改的实体
  2. 使用App Engine mapreduce 库运行 MapperPipeline ,使用Datastore Input Reader 对这些实体进行迭代
  3. 在您的地图函数中获取父实体并使用文件输出写入器将其序列化到 Google 存储并删除标记
  4. ping 远程主机以从 Google Storage url 导入这些实体

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

您可以查看数据存储管理源代码以获取灵感。

于 2012-05-03T15:03:45.683 回答