从GAE数据存储复制数据

Dav*_*aid 3 google-app-engine google-cloud-datastore

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

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

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

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

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

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

pro*_*ppy 5

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

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

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

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