跳转到主要内容

一个将pickle存储在关系型数据库中的ZODB后端。

项目描述

RelStorage 是 ZODB 的存储实现,将 pickles 存储在关系型数据库(RDBMS)中。目前支持 PostgreSQL 10 及以上版本、MySQL 5.7.19 / 8.0、Oracle 10g 及以上版本以及 SQLite 3.8.3 及以上版本。RelStorage 取代了 PGStorage 项目。

功能

  • 它是 FileStorage 和 ZEO 的替代品,并增加了几个增强功能

    • 支持撤销、打包和对象历史记录保留,就像 FileStorage 一样。

    • RelStorage 可以配置 保留对象历史记录,以减少磁盘空间使用并提高性能。

    • 单个机器上的多个进程可以使用 SQLite 读取和写入本地 ZODB 数据库,而无需启动和管理另一个进程(即 ZEO)。

    • 二进制大对象(Blobs)可以存储在共享文件系统上,或者(推荐)在关系型数据库中,仅在本地缓存。

    • 同一进程中的多个线程共享高性能的内存中 pickle 缓存,以减少对 RDBMS 的查询次数。这与 ZEO 类似,并且支持 ZEO 缓存跟踪工具。

    • 内存中的 pickle 缓存可以保存到磁盘,并在进程启动时读取。这可以通过消除大量 RDBMS 查询来显著加快网站启动时间。与 ZEO 不同,此缓存由机器上的所有进程自动共享(无需配置单独的客户端标识符)。

  • 非常适合大型、高流量网站。

    • 多台机器上的多个 Python 进程可以并发读取和写入同一 ZODB 数据库。这与 ZEO 类似,但 RelStorage 不需要 ZEO。

    • 支持 ZODB 5 的并行提交功能:数据库写入器仅在可能冲突时阻塞彼此(除了两阶段提交协议末尾的小窗口,此时分配事务 ID;这仍然需要全局数据库锁)。

    • 根据一些测试,RelStorage 的并发处理能力优于 ZEO 和 FileStorage 的标准组合。

    • 由于所有对象都存储在内存中的索引,FileStorage 随数据库增长而启动时间较长,而 RelStorage 不论数据库大小如何都能快速启动。

    • 能够实现到复制 SQL 数据库的故障转移。

  • 已测试与 PostgreSQL、MySQL 和 SQLite 的 gevent 集成。

  • 有一种简单的方法(zodbconvert)可以将 FileStorage(增量地)转换为 RelStorage,然后再转换回来。您还可以将 RelStorage 实例转换为不同的关系型数据库。这是一个通用工具,可以用于在任意两个 ZODB 存储实现之间进行转换。

  • 有一种简单的方法(zodbpack)可以对数据库进行打包。

  • 支持 zodburi

  • 免费、开源(ZPL 2.1)

数据库支持的功能

RelStorage 的某些功能仅在某些数据库的某些版本上受支持。如果数据库不支持该功能,RelStorage 仍然可以工作,但可能会出现性能损失。

支持的功能

并行提交

共享读锁

非阻塞读锁

流式二进制大对象

中心事务 ID 分配

原子锁和提交,无需 Python 参与

PostgreSQL

使用 psycopg2 驱动程序

是,除了 PG8000 驱动程序

MySQL

在 MySQL 8.0 上为本地,在 MySQL 5.7 上为模拟

否,通过分块模拟

Oracle

否(可能可以实施)

否(可能可以实施)

SQLite

不适用(没有锁类型区分)

否,请考虑使用 shared-blob-dir

不适用(实际上是的,因为它发生在单台机器上)

文档

包括安装说明的文档托管在 readthedocs 上。

完整的 更改日志 也在这里。

https://readthedocs.org/projects/relstorage/badge/?version=latest

开发

RelStorage 在 GitHub 上托管

https://github.com/zodb/relstorage

持续集成

每次提交push和pull request都会运行一个测试套件。GitHub Actions用于在Linux和macOS上测试,而AppVeyor则在Windows上运行构建。

https://github.com/zodb/relstorage/workflows/tests/badge.svg https://ci.appveyor.com/api/projects/status/pccddlgujdoqvl83?svg=true

CI上的构建会自动提交更新到coveralls.io,以监控测试覆盖率。

https://coveralls.io/repos/zodb/relstorage/badge.svg?branch=master&service=github

项目详情


发布历史 发布通知 | RSS订阅

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

RelStorage-4.0.0.tar.gz (2.6 MB 查看哈希值)

上传时间 源代码

构建分发

RelStorage-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传时间 PyPy macOS 10.9+ x86-64

RelStorage-4.0.0-cp312-cp312-win_amd64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

RelStorage-4.0.0-cp312-cp312-musllinux_1_1_x86_64.whl (3.1 MB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.1+ x86-64

RelStorage-4.0.0-cp312-cp312-musllinux_1_1_aarch64.whl (3.0 MB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.1+ ARM64

RelStorage-4.0.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (2.6 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

RelStorage-4.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86-64

RelStorage-4.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.4 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ s390x

RelStorage-4.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.4 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ppc64le

RelStorage-4.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

RelStorage-4.0.0-cp312-cp312-macosx_10_9_universal2.whl (1.4 MB 查看哈希值)

上传于 CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

RelStorage-4.0.0-cp311-cp311-win_amd64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.11 Windows x86-64

RelStorage-4.0.0-cp311-cp311-musllinux_1_1_x86_64.whl (3.1 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ x86-64

RelStorage-4.0.0-cp311-cp311-musllinux_1_1_aarch64.whl (3.0 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ ARM64

RelStorage-4.0.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (2.6 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.24+ x86_64 manylinux: glibc 2.28+ x86_64

RelStorage-4.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86_64

RelStorage-4.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.4 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ s390x

RelStorage-4.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.3 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ppc64le

RelStorage-4.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

RelStorage-4.0.0-cp311-cp311-macosx_10_9_universal2.whl (1.4 MB 查看哈希值)

上传于 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

RelStorage-4.0.0-cp310-cp310-win_amd64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

RelStorage-4.0.0-cp310-cp310-musllinux_1_1_x86_64.whl (3.1 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ x86-64

RelStorage-4.0.0-cp310-cp310-musllinux_1_1_aarch64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ ARM64

RelStorage-4.0.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.24+ x86_64 manylinux: glibc 2.28+ x86_64

RelStorage-4.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

RelStorage-4.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ s390x

RelStorage-4.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ppc64le

RelStorage-4.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ARM64

RelStorage-4.0.0-cp310-cp310-macosx_11_0_x86_64.whl (1.4 MB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ x86-64

RelStorage-4.0.0-cp39-cp39-win_amd64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

RelStorage-4.0.0-cp39-cp39-musllinux_1_1_x86_64.whl (3.1 MB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.1+ x86-64

RelStorage-4.0.0-cp39-cp39-musllinux_1_1_aarch64.whl (3.0 MB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.1+ ARM64

RelStorage-4.0.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (2.6 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

RelStorage-4.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

RelStorage-4.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ s390x

RelStorage-4.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.3 MB 查看哈希)

上传于 CPython 3.9 manylinux: glibc 2.17+ ppc64le

RelStorage-4.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

RelStorage-4.0.0-cp39-cp39-macosx_11_0_x86_64.whl (1.4 MB 查看哈希)

上传于 CPython 3.9 macOS 11.0+ x86-64

RelStorage-4.0.0-cp38-cp38-win_amd64.whl (1.2 MB 查看哈希)

上传于 CPython 3.8 Windows x86-64

RelStorage-4.0.0-cp38-cp38-win32.whl (1.1 MB 查看哈希)

上传于 CPython 3.8 Windows x86

RelStorage-4.0.0-cp38-cp38-musllinux_1_1_x86_64.whl (3.1 MB 查看哈希)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

RelStorage-4.0.0-cp38-cp38-musllinux_1_1_aarch64.whl (3.0 MB 查看哈希)

上传于 CPython 3.8 musllinux: musl 1.1+ ARM64

RelStorage-4.0.0-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (2.6 MB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

RelStorage-4.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

RelStorage-4.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.4 MB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.17+ s390x

RelStorage-4.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.3 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ppc64le

RelStorage-4.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

RelStorage-4.0.0-cp38-cp38-macosx_11_0_x86_64.whl (1.4 MB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ x86-64

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面