持久性只追加数据结构。
项目描述
appendonly README
此软件包提供了一组数据结构,用于ZODB应用程序,其中标准BTrees不适合应用程序的要求。
特别是,这些数据结构旨在在频繁对队列和栈执行“追加”操作时最小化冲突错误。
appendonly.AppendStack
此类提供了一个分别持久化的对象LIFO栈
栈管理一组“层”对象,具有可配置的层数限制。每一层都有一个可配置的最大长度和一个顺序生成号。
栈将项目追加到最近的层,直到层被填满;然后添加一个新层。
如果层数超过配置的最大值,则栈将修剪最旧的层以符合该限制。
修剪时,栈将调用应用程序提供的回调以归档/清理修剪层。
对栈的迭代产生(生成,索引,对象)元组,顺序与对象追加的顺序相反。
栈实现为一个单个持久记录,具有自定义ZODB冲突解决代码。
appendonly.Archive
此类提供了一个从AppendStack修剪的层数据的分别持久化的链表副本。预期用途可能如下
from appendonly import AppendStack from appendonly import Archive class RecentItems(object): def __init__(self): self._recent = AppendStack() self._archive = Archive() def pushItem(object): self._stack.push(object, self._archive.addLayer) def __iter__(self): for generation, index, item in self._stack: yield item for generation, index, item in self._archive: yield items
appendonly.Accumulator
此类提供了一种类似于列表的数据结构,唯一允许的修改操作是向列表中追加或清空列表。预期用途是一组待处理的操作/更改/通知,它们作为单元进行处理(此时累加器会被清空)。
appendonly 更新日志
1.2 (2014-12-28)
支持 Python 3.4。
由于现在完全支持 Py3k,将 ZODB 依赖项设置为无条件。
添加对 Travis 上的测试支持。
1.1 (2013-11-28)
添加 Accumulator.extend 方法以增强列表功能。
添加对 PyPy 的支持。
添加对 Python 3.2 / 3.3 的支持。
1.0.1 (2013-02-25)
修复 1.0 版本中的 brown-bag 问题(Accumulator.append 的更改未持久化)。
1.0 (2013-02-25)
添加一个无冲突的‘Accumulator’类:管理一个可以迭代、追加或完全消费的项目队列(不支持部分/弹出)。
通过‘tox’自动化支持 Python 版本的测试。
放弃对 Python 2.4 / 2.5 的支持。
0.10 (2012-02-21)
添加一个‘Archive’类,旨在支持从‘AppendStack’中修剪的层数据的长期存储。
0.9 (2010-08-09)
初始公开版本。
项目详情
appendonly-1.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 30e057e2ec8917491112fd32146695f82597de2f171ff4c1977d5ca604196a60 |
|
MD5 | 55ccc4b4eb0387688eafde15de7b450a |
|
BLAKE2b-256 | 3a43542e9ef723a09c1f11fe4f18bd4057bbdc2b117579125b936ebe271d23ad |