【问题标题】:Backup and restore entities from Google App engine从 Google App 引擎备份和恢复实体
【发布时间】:2013-03-02 01:36:04
【问题描述】:

我希望实现一种在 Google 应用引擎中以编程方式将数据从一个应用程序传输到另一个应用程序的方法。 我知道有一种方法可以通过 database_admin 控制台实现这一点,但该过程非常耗时。

我目前正在使用谷歌云存储 (GCS) 来实现这一点,但这涉及查询数据、将其保存到 GCS,然后从不同应用程序中读取 GCS 并恢复它。 如果有人知道以编程方式在两个应用程序之间传输数据的更简单方法,请告诉我。

谢谢!

【问题讨论】:

    标签: java google-app-engine google-cloud-storage google-cloud-datastore database-backups


    【解决方案1】:

    您可以使用 bulkloader 创建数据备份,然后在另一个应用程序上恢复它。

    这里的详细信息: https://developers.google.com/appengine/docs/python/tools/uploadingdata?csw=1#Python_Downloading_and_uploading_all_data

    如果您使用 Java,请参阅这篇文章: Downloading Google App Engine Database

    【讨论】:

      【解决方案2】:

      我自己没有尝试过,但听起来应该可以:使用 data_store 管理员将您的对象从一个应用程序备份到 GCS,然后使用您的另一个应用程序从 GCS 恢复该文件。如果您只需要一次同步,这应该是一个好方法。

      如果您需要不断地将数据从一个应用程序复制到另一个应用程序,在一侧或两侧引入 REST 端点可能会有所帮助:

      https://code.google.com/p/appengine-rest-server/(我知道这是用 Python 编写的,但只需为 REST 端点定义您的应用程序版本)

      您只需要确保您的模型定义在双方都匹配(几乎使用相同的部署代码更新双方的应用程序)并且只有需要同步数据跟踪上次同步时间并使用 REST 的一方端点来拉入新数据。 Cron Jobs 可以做到这一点。

      或者,在您的所有模型上创建一个 PostPut 回调,以便在每次将模型写入您的数据存储区到另一个应用程序上的正确 REST 端点时进行一次 POST 调用。

      您可以使用一种方法批量更新,或者使用另一种方法保持不断更新的版本(以更多调用为代价)。

      【讨论】:

        【解决方案3】:

        您是尝试在两个 App Engine 应用程序之间移动数据,还是尝试从 App Engine 导出所有数据以便迁移到不同的托管系统?您的问题没有足够的信息来理解您正在尝试做什么。基于模糊的要求,我会说通常这将使用您在一个公开数据的应用程序中编写的 Web 服务来处理,而其他应用程序调用该服务来使用数据。我不确定为什么 Cloud Endpoints 被否决,因为它提供了一种很好的方式,可以将您的数据公开为基于 JSON 的 Web 服务,而编码工作最少。

        我建议在您的问题中添加更多详细信息,例如您想要完成什么,也许是一个模拟数据示例。

        【讨论】:

        • 这两个应用程序都部署在 App Engine(Java 版本)上。我确实在使用 WebServices 方法,其中一个应用程序将写入 GCS,而其他应用程序将从它读取,但在这种情况下,性能对于大型数据集来说还不够好。
        【解决方案4】:

        我不知道这是否适合您的具体场景,但Google Cloud Endpoints 绝对是一种以编程方式从 Google App Engine 传输数据的简单方法。

        这是 REST 网络服务的一种 Google 实现,因此它们允许您使用 URL 共享资源。这仍然是一项实验性技术,但只要我与他们合作过,他们就可以完美地工作。此外,它们与 GAE 和 Google Plugin for Eclipse 很好地集成。

        您可以从JDO 持久类自动生成端点,我认为您也可以自动生成客户端库(尽管我没有尝试过)。

        【讨论】:

        • 正如@earthtrip 所说,我不明白为什么我的答案被否决了,因为考虑到问题的细节不足,我认为这是完全有效的......
        猜你喜欢
        • 2016-05-28
        • 1970-01-01
        • 2012-03-14
        • 2020-03-20
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        • 2011-07-02
        • 2021-08-14
        相关资源
        最近更新 更多