跳转到主要内容

orioledb

OrioleDB,下一代事务处理引擎

概览

扩展包名版本分类许可证语言
orioledb1.10FEATApache-2.0 OR PostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
2910orioledb否是是是否是-

Upstream beta19 installs SQL 1.10 and requires patched kernels patches16_49/patches17_22/patches18_3. Retained Pigsty recipes, source archives and local RPM/DEB matrix use beta19 (package 1.10). Public beta, not recommended upstream for production; repository publication is checked separately.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.101817161514orioledb-
RPMPIGSTY1.101817161514orioledb-$v-
DEBPIGSTY1.101817161514orioledb-$v-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/A
el8.aarch64N/AN/A
el9.x86_64N/AN/A
el9.aarch64N/AN/A
el10.x86_64N/AN/A
el10.aarch64N/AN/A
d12.x86_64N/AN/A
d12.aarch64N/AN/A
d13.x86_64N/AN/A
d13.aarch64N/AN/A
u22.x86_64N/AN/A
u22.aarch64N/AN/A
u24.x86_64N/AN/A
u24.aarch64N/AN/A
u26.x86_64N/AN/A
u26.aarch64N/AN/A

构建

您可以使用 pig build 命令构建 orioledb 扩展的 RPM / DEB 包:

pig build pkg orioledb         # 构建 RPM / DEB 包

安装

您可以直接安装 orioledb 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

安装
pig install orioledb;          # 当前活跃 PG 版本安装
pig
pig ext install -y orioledb -v 18  # PG 18
pig ext install -y orioledb -v 17  # PG 17
pig ext install -y orioledb -v 16  # PG 16
dnf
dnf install -y orioledb-18       # PG 18
dnf install -y orioledb-17       # PG 17
dnf install -y orioledb-16       # PG 16
apt
apt install -y orioledb-18   # PG 18
apt install -y orioledb-17   # PG 17
apt install -y orioledb-16   # PG 16

预加载配置:

shared_preload_libraries = 'orioledb';

创建扩展:

CREATE EXTENSION orioledb;

用法

来源:

OrioleDB 是 PostgreSQL 的新型存储引擎,为数据库容量、能力和性能提供现代化方案。它使用基于撤销日志的 MVCC、写时复制检查点和行级 WAL,消除了膨胀问题和 VACUUM 的需求。

配置

在 postgresql.conf 中添加(需要重启):

shared_preload_libraries = 'orioledb.so'

然后启用扩展:

CREATE EXTENSION orioledb;

创建表

使用 USING orioledb 子句创建采用 OrioleDB 存储引擎的表:

CREATE TABLE my_table (
    id serial PRIMARY KEY,
    name text,
    value numeric
) USING orioledb;

可在上游兼容性限制内对 OrioleDB 表使用普通 DML:

INSERT INTO my_table (name, value) VALUES ('test', 42);
SELECT * FROM my_table WHERE id = 1;
UPDATE my_table SET value = 100 WHERE id = 1;
DELETE FROM my_table WHERE id = 1;

排序规则要求

OrioleDB 表仅支持 ICU、C 和 POSIX 排序规则。为避免在每个文本字段上指定 COLLATE,请使用适当的默认值创建数据库:

CREATE DATABASE mydb LOCALE 'C' TEMPLATE template0;
-- OR
CREATE DATABASE mydb LOCALE_PROVIDER icu ICU_LOCALE 'en' TEMPLATE template0;

主要优势

  • 无膨胀:基于撤销日志的 MVCC 意味着旧元组版本不会膨胀主存储
  • 无需 VACUUM:页面合并和撤销日志自动回收空间
  • 无回卷问题:原生 64 位事务标识符
  • 无锁页面读取:内存页面直接链接到存储页面
  • 行级 WAL:紧凑的预写日志,适合并行回放

限制

  • 公测阶段 – 建议用于测试,不建议用于生产
  • 需要来自 orioledb/postgres 的补丁版 PostgreSQL 构建
  • 仅支持 ICU、C 和 POSIX 排序规则

版本说明

OrioleDB beta17 使用扩展 SQL 版本 1.9,补丁版 PostgreSQL 基于 16.15、17.11 和 18.6。新增原生 B-tree 索引的并发创建与重建、跨主版本升级支持、页面校验和,以及并行索引与位图扫描,并修复恢复和 DDL 正确性问题。升级前须遵循 beta17 的二进制和存储兼容说明;SQL 版本更新不意味着可以在未打补丁的 PostgreSQL 上运行。

这个页面对您有帮助吗?