跳转到主要内容

持久性只追加数据结构。

项目描述

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 (11.8 kB 查看哈希值

支持者