Skip to main content
 首页 » 编程设计

python之Google App Engine Bulkloader appcfg.py download_data 与数据存储区备份实体按钮

2025年05月04日21Renyi-Fan

我目前正在寻找备份我的 Google App Engine 的网络应用程序数据存储区的最佳方法。从我一直在做的阅读来看,似乎有两种不同的方法可以做到这一点。我可以通过调用 appcfg.py upload_data --application= --kind= --filename= 使用 GAE 的批量加载器,或者我可以进入我的 webapp 的数据存储管理部分,选择我想要备份的实体,然后单击“备份”实体”按钮。除非我弄错了,否则“备份实体”按钮将在 blobstore 中创建我的数据存储的备份,而使用 appcfg.py 的 download_data 将创建本地备份。备份将每周/每月进行一次,主要原因是万一 Web 应用程序的管理员之一意外删除了重要数据。我不担心 Google 丢失数据,因此在查看我的问题时不应考虑这一点。

所以我的问题是:这两种方法中哪一种是首选方法?它们中哪一个更快、更高效、更便宜等?

提前感谢您的评论/帮助/回答。

请您参考如下方法:

以下是一些需要考虑的因素以及我认为最适合处理该问题的解决方案:

开发时间 - 数据存储区管理员 - 要利用 Bulkloader,您需要编写脚本、维护备份服务器、存储等。

成本 - 数据存储区管理员 - YMMV 但我们数千万实体的备份使用了不到 10 亿任务队列配额的 1%。数据存储区读取操作和存储的成本将特定于您的应用程序。但是在这两个选项之间,读取操作应该是相同的,并且您正在用 Bulkloader 中的传出带宽($0.12/GB)与 Datastore Admin 交换 Blobstore 存储($0.0043/GB)。

备份持续时间 - Datastore Admin - 如您所料,mapreduce 分片将数据写入 Google 网络内的 Blobstore 比一次将一个实体数据流出要快得多。使用 Datastore Admin 对我们的数据进行完整备份需要不到 6 小时。使用 Bulkloader 需要 3 天以上。

备份维护 - Bulkloader(暂时) - 使用 Bulkloader 和服务器,您可以创建 cron 以定期执行备份和备份维护。例如,我们在 Rackspace 中有一台服务器每 3 天备份一次我们的数据存储并保留最后 2 个备份。使用 Datastore Admin,您必须手动执行备份并删除陈旧的备份,直到发布自动化解决方案 (Issue 7040)。尽管如此,对于每月一次的备份,使用 Datastore Admin 手动执行备份的成本非常低,我还是推荐它。

数据灵 active - Bulkloader - 使用 bulkloader,您可以将所有数据导出到人类可读的 csv 文件中,允许您在 Excel 中进行数据透视,为您的本地开发环境创建测试数据集,或者如果您需要,甚至可以将您的操作转移到另一个应用程序托管服务(例如:AWS)

精确还原 - 批量加载器 - Bulkloader 可以处理恢复选定实体(您确切知道删除或覆盖了哪些实体)和批量恢复。 Datastore Admin 只能对给定 Kind 的所有实体进行批量恢复。

批量恢复 - 数据存储管理员 - Datastore Admin 通过仅更新更改的实体来最大限度地减少非常昂贵的写入。分片还使此过程比简单的 Bulkloader 上传快得多(尽管您可以自己跨多个客户端分片 csv 备份数据)。

最终,Bulkloader 为您提供了更精确的控制,而 Datastore Admin 则简化并加速了批量备份/恢复。尽管 Datastore Admin 是新的并且有一些问题 ( 7076 ),但鉴于您的情况,我绝对会推荐它。