各种ZODB blobstorage布局有什么区别?
ZODB的blobstorage目录里有一个.layout文件,里面包含了'lawn'和'bushy'这两个字符串。
那么,不同的blob存储目录格式有什么区别呢?
2 个回答
2
一般来说,你不需要担心布局问题;lawn
这个布局只是为了兼容旧版本。
如果你确实有一个 lawn
布局的 blob 存储(如果有的话,日志里会有警告),并且想要迁移到 bushy
布局,可以使用 migrateblobs 脚本;下面是创建这个脚本的 buildout 部分:
[migrateblobs]
recipe = zc.recipe.egg
eggs = ZODB3
entry-points = migrateblobs=ZODB.scripts.migrateblobs:main
先关闭所有实例和 ZEO 服务器,备份你的 blob 存储,然后在你的 blob 存储目录下运行这个脚本:
$ mv var/blobstorage var/blobstorage-lawn
$ bin/migrateblobs var/blobstorage-lawn/ var/blobstorage
var/blobstorage
里就会包含使用 bushy
布局迁移过来的 blobs。
7
这里有个解释:https://github.com/zopefoundation/ZODB/blob/master/src/ZODB/tests/blob_layout.txt
重点内容:
====================== Blob 目录布局
Blob 目录的内部结构是由所谓的
布局
决定的。目前的默认布局叫做bushy
。最初的 blob 实现使用了一种我们现在称为
lawn
的布局,这种布局为了兼容旧版本仍然可以使用。布局实现了两个方法:一个是计算 OID 的相对路径,另一个是把相对路径转换回 OID。
我们的术语大致与
DirectoryStorage
中使用的相同。
它还详细解释了各种格式。