orioledb

OrioleDB,下一代事务处理引擎

概览

扩展包名版本分类许可证语言
orioledb1.6FEATPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
2910orioledb-
相关扩展pg_mooncake citus_columnar pg_analytics pg_duckdb timescaledb citus pg_strom

special case: this extension only works on patched postgres kernel: oriolepg, 1.6-beta14

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.61817161514orioledb-
RPMPIGSTY1.61817161514orioledb_$voriolepg_$v
DEBPIGSTY1.61817161514oriolepg-$v-orioledboriolepg-$v
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el8.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el9.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u24.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS

构建

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

pig build pkg orioledb         # 构建 RPM / DEB 包

安装

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

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

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

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

预加载配置

shared_preload_libraries = 'orioledb';

创建扩展

CREATE EXTENSION orioledb;

用法

orioledb: PostgreSQL 的云原生存储引擎

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;

所有标准 PostgreSQL 操作均可用于 OrioleDB 表:

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 表仅支持 ICUCPOSIX 排序规则。为避免在每个文本字段上指定 COLLATE,请使用适当的默认值创建数据库:

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

主要优势

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

限制

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

最后修改 2026-03-14: update extension metadata (953cbd0)