用于数据库记录zlib压缩的zodb存储包装器
zc.zlibstorage的Python项目详细描述
ZODB storage wrapper for zlib compression of database records
zc.zlibstorage包提供zodb存储包装 提供数据库记录压缩的实现。
内容
Usage
主存储器是zc.zlibstorage.ZlibStorage。它被用作 围绕较低级别存储器的包装。来自python,它是 通过传递另一个存储器来构造,如:
import ZODB.FileStorage, zc.zlibstorage storage = zc.zlibstorage.ZlibStorage( ZODB.FileStorage.FileStorage('data.fs'))
使用zodb配置文件时,将使用zlibstorage标记:
%import zc.zlibstorage <zodb> <zlibstorage> <filestorage> path data.fs </filestorage> </zlibstorage> </zodb>
注意%import用于加载 zlibstorage标记。
Use with ZEO
当与zeo clientstorage一起使用时,需要使用服务器zlib 存储服务器上的存储。这是必要的,以便服务器 需要获取未压缩记录数据的操作可以这样做。 这是使用zeo中的serverzlibstorage标记完成的 服务器配置文件:
%import zc.zlibstorage <zeo> address 8100 </zeo> <serverzlibstorage> <filestorage> path data.fs </filestorage> </serverzlibstorage>
以这种方式对客户端应用压缩很有吸引力,因为 除了减少存储在 服务器,还可以减小从服务器发送到 客户端和存储在客户端zeo缓存中的记录大小。
Decompressing only
默认情况下,记录在写入存储时被压缩,并且 从存储器读取时未压缩。一个compress选项可以是 用于禁用压缩记录,但仍解压缩压缩的记录 如果遇到记录。下面是python中的一个示例:
import ZODB.FileStorage, zc.zlibstorage storage = zc.zlibstorage.ZlibStorage( ZODB.FileStorage.FileStorage('data.fs'), compress=False)
使用configurationb语法:
%import zc.zlibstorage <zodb> <zlibstorage> compress false <filestorage> path data.fs </filestorage> </zlibstorage> </zodb>
此选项在以下情况下部署存储时非常有用 多个客户。如果您不想更新 一旦,您可以使用zlib存储逐步更新所有客户机 它不进行压缩,但识别压缩记录。那么, 在第二个阶段,您可以更新客户端以压缩记录,在 在这一点上,所有的客户端都可以读取压缩的 制作记录。
Compressing entire databases
压缩数据库中所有记录的一种方法是复制数据 从未压缩的数据库到压缩的数据库,如:
import ZODB.FileStorage, zc.zlibstorage orig = ZODB.FileStorage.FileStorage('data.fs') new = zc.zlibstorage.ZlibStorage( ZODB.FileStorage.FileStorage('data.fs-copy')) new.copyTransactionsFrom(orig) orig.close() new.close()
Record prefix
压缩记录的前缀为“.z”。这允许数据库 有压缩和未压缩的混合记录。
Stand-alone Compression and decompression functions
希望能堵住压缩和解压缩 在不创建存储的情况下将逻辑转换到其他工具中,使用的函数 压缩和解压缩数据记录可用作 zc.zlibstorage模块级函数:
- compress(data)
压缩给定的数据,如果:
- 它是一个长度超过20个字符的字符串,
- 它不是以压缩记录标记b'.z'和
- 压缩后的大小比原来的小。
返回压缩(或原始)数据。
- decompress(data)
如果数据被压缩,则对其进行解压缩。
将返回解压缩(或原始)数据。
Changes
1.2.0 (2017-01-20)
- 添加对python 3.6和pypy的支持。
- 用zodb/zeo 4和zodb/zeo 5进行测试。 注意,在zodb 5连接中不能使用serverzlibstorage (例如,客户端,这是没有意义的:-])。 (https://github.com/zopefoundation/zc.zlibstorage/issues/5)。
- 关闭iterator包装器使用的底层迭代器 已经关门了。(https://github.com/zopefoundation/zc.zlibstorage/issues/4)
1.1.0 (2016-08-03)
- 修复了与zodb5的不兼容。以前的可选和 数据库invalidate方法的忽略版本参数现在是 不允许。
- 放弃对Python2.6、3.2和3.3的支持。增加了对Python3.4和3.5的支持。
1.0.0 (2015-11-11)
- Christian Tismer提供的Python3支持。
0.1.1 (2010-05-26)
- 修正了一个包装错误。