Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Google App Engine Bulkloader appcfg.py下载\u数据与数据存储备份实体按钮_Python_Google App Engine_Backup_Database Backups_Bulkloader - Fatal编程技术网

Python Google App Engine Bulkloader appcfg.py下载\u数据与数据存储备份实体按钮

Python Google App Engine Bulkloader appcfg.py下载\u数据与数据存储备份实体按钮,python,google-app-engine,backup,database-backups,bulkloader,Python,Google App Engine,Backup,Database Backups,Bulkloader,我目前正在寻找备份我的Google App Engine的webapp数据存储的最佳方法。从我一直在做的阅读来看,似乎有两种不同的方法可以做到这一点。我可以通过调用appcfg.py upload_data--application=--kind=--filename=来使用GAE的bulkloader,也可以进入我的webapp的数据存储管理部分,选择要备份的实体,然后单击“备份实体”按钮。除非我弄错了,“备份实体”按钮将在blobstore中创建我的数据存储的备份,而使用appcfg.py的

我目前正在寻找备份我的Google App Engine的webapp数据存储的最佳方法。从我一直在做的阅读来看,似乎有两种不同的方法可以做到这一点。我可以通过调用appcfg.py upload_data--application=--kind=--filename=来使用GAE的bulkloader,也可以进入我的webapp的数据存储管理部分,选择要备份的实体,然后单击“备份实体”按钮。除非我弄错了,“备份实体”按钮将在blobstore中创建我的数据存储的备份,而使用appcfg.py的download_数据将创建本地备份。备份将每周/每月进行一次,主要原因是webapp的一名管理员意外删除了重要数据。我并不担心谷歌会丢失数据,所以在审查我的问题时不应该考虑到这一点

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


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

这实际上是一个在本地逐个实体运行下载操作,还是使用Map/Reduce在云中进行导出并下载所有内容的编译包的决定

如果您使用datastore admin实用程序,失败或损坏的可能性可能会更小——就我个人而言,使用appcfg下载复杂模式时总是遇到问题,从那以后我一直坚持使用datastore admin

在速度方面-数据存储管理肯定可以超越您的本地计算机,这取决于您如何设置执行数据存储管理作业的任务队列(或通过设置)

就成本而言-Map/Reduce很快就会变得非常昂贵-在您可能无法预料的地方。在一个需要删除144000个实体的作业中,有将近1154万(!!)个数据存储写入调用
appcfg
的批量下载程序不会触及您的写入配额或任务队列配额

就效率而言-AppEngine实例从数据存储中下载实体并将其放入Blobstore可能比本地机器直接下载要快得多。Map/Reduce通常也非常有效,尤其是在AppEngine上


问题的答案取决于数据集的大小、预算以及您的耐心程度。Map/Reduce(通过datastore admin)将更加一致和快速,但根据您的设置可能会花费更多。

这实际上是在本地逐个实体运行下载操作,还是在云中使用Map/Reduce进行导出并下载所有内容的编译包之间的决定

如果您使用datastore admin实用程序,失败或损坏的可能性可能会更小——就我个人而言,使用appcfg下载复杂模式时总是遇到问题,从那以后我一直坚持使用datastore admin

在速度方面-数据存储管理肯定可以超越您的本地计算机,这取决于您如何设置执行数据存储管理作业的任务队列(或通过设置)

就成本而言-Map/Reduce很快就会变得非常昂贵-在您可能无法预料的地方。在一个需要删除144000个实体的作业中,有将近1154万(!!)个数据存储写入调用
appcfg
的批量下载程序不会触及您的写入配额或任务队列配额

就效率而言-AppEngine实例从数据存储中下载实体并将其放入Blobstore可能比本地机器直接下载要快得多。Map/Reduce通常也非常有效,尤其是在AppEngine上


问题的答案取决于数据集的大小、预算以及您的耐心程度。MAP/RADIUS(通过数据存储管理)将更加一致和更快,但根据您的设置可能会花费更多。

< P>这里有一些要考虑的因素,以及我认为最好的解决方案:

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

成本-数据存储管理-
YMMV,但是我们备份的数以千万计的实体使用

这里有一些因素要考虑,以及我认为最好的解决方案:

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

成本-数据存储管理-
YMMV但我们使用了数千万个实体的备份参见“AppEngine Bulkloader未下载列表属性”,了解复杂模式的示例问题:是的,我还将列表属性作为错误报告给了App Engine,并得到了确认。请参阅“AppEngine Bulkloader未下载列表属性”,了解复杂模式的示例问题:是的,我还将列表属性作为一个bug报告给了App Engine,并得到了确认。真棒的回答。对不起,投票推迟了。非常感谢!这里还没有提到任何人,但是文档让人觉得bulkloader只适用于现在不推荐使用的主/从数据存储。。。或者这只适用于
download_data
命令而不适用于bulkloader?appcfg.py的download_data命令肯定适用于高复制数据存储,而这正是bulkloader用于将数据从数据存储获取到CSV文件中的方法。我还没有看到high_replication_警告,但很有可能您会错过最近添加的实体,并破坏数据中的引用。看来,数据存储管理中现在支持cron触发的备份。对不起,投票推迟了。非常感谢!除了d,这里还没人提到