- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
什么时候应该使用 PersistentDict,什么时候应该使用 Folder?它们在更新、内部结构、性能等方面有什么区别?
最佳答案
PersistentMapping
只是 python dict
类型的一个实现(通过标准库 UserDict
基类)针对ZODB;每次更改 mapping
时,它都不必在最近的继承自 Persistent
的类上设置 _p_changed
标志。
Folder
是一种更丰富的类型,实现事件,与 Zope 网络界面 (ZMI) 集成,通过网络任意属性(具有类型验证的属性),Zope 权限管理,验证子项 ID、导入/导出等。子项文件夹作为属性存储在对象本身上,一些元数据存储在实例的私有(private)字典中。
当您需要任何这些额外服务(权限委托(delegate)、ID 验证等)时使用Folder
,否则使用PersistentMapping
。在性能方面查找或存储项目不会有太大差异;一个是下面的直接 python dict
,另一个是存储项目的实例 __dict__
。
如果您正在寻求避免冲突,您应该查看 BTrees ,OOBTree
类基本上是一个持久映射,其中值存储在持久存储桶中,在大多数情况下避免冲突,并为其余情况提供冲突解决方案。
如果您想要Folder
语义和BTree
存储语义,请查看Products.BTreeFolder2 ,以及实现 Folder
接口(interface)但将子对象存储在 OOBTree
中而不是直接在实例上作为属性的附加组件。
关于python - 什么时候是 PersistentDict,什么时候是 Folder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9502453/
什么时候应该使用 PersistentDict,什么时候应该使用 Folder?它们在更新、内部结构、性能等方面有什么区别? 最佳答案 PersistentMapping 只是 python dict
我是一名优秀的程序员,十分优秀!