为zodb打包一个无历史记录的postgresql relstorage。
relstorage_packer的Python项目详细描述
重新存储打包机
将zodb打包到 无历史记录的 postgresql relstorage中,blob位于 文件系统。
概述
这个脚本也适用于非常大的relstorage zodbs,它有几百万个 物体。原始的pack脚本花费了几天时间,消耗了大量的ram。 因此需要加快包装过程。
此脚本不消耗相关数量的RAM,运行速度比 原创。过去只花了3.5天来分析,现在大约需要6天 小时。在随后的运行中,它只处理上次运行后的更改:它 只考虑比上一个处理的事务更新的事务 运行.< /P>
在编写时,处理4400万个对象最初大约需要3-6小时 取决于PostgreSQL的硬件和配置。
脚本将创建一个反向对象图,这只需要在db中占用很少的额外空间。
限制
在开发时,关键的生产环境是postgresql 数据库运行relstorage,blob存储在文件服务器上,无历史记录 模式。这样就实现了。
我相信在mysql和oracle上也很容易实现。 当然也可以考虑数据库中的blob。
我不确定这种清理方式对于非历史自由模式是否有意义。AT 至少,重构和 工具。
欢迎投稿!
用法
创建配置文件。这和经典的包脚本是一样的 与relstorage一起部署:
<relstorage> create-schema false keep-history false shared-blob-dir true blob-dir var/blobstorage commit-lock-timeout 600 <postgresql> dsn dbname='test_site' host='127.0.0.1' user='zodb' password='secret' </postgresql> </relstorage>
安装后,可以使用脚本relstorage_pack
Usage: relstorage_pack config_file Fast ZODB Relstorage Packer for history free PostgreSQL Options: -h, --help show this help message and exit -i, --init Removes all reference counts and starts from scratch. -v, --verbose More verbose output, includes debug messages.
当第一次以数据库pass作为参数运行时。这个 放下并重新创建包装台。