Skip to content

orioledb

OrioleDB, the next generation transactional engine

Overview

PackageVersionCategoryLicenseLanguage
orioledb1.10FEATApache-2.0 OR PostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
2910orioledbNoYesYesYesNoYes-

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.

Version

TypeRepoVersionPG VerPackageDeps
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

Build

You can build the RPM / DEB packages for orioledb using pig build:

pig build pkg orioledb         # build RPM / DEB packages

Install

You can install orioledb directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

Install
pig install orioledb;          # Install for current active PG version
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

Preload:

shared_preload_libraries = 'orioledb';

Create Extension:

CREATE EXTENSION orioledb;

Usage

Sources:

OrioleDB is a new storage engine for PostgreSQL that provides modern approaches to database capacity, capabilities, and performance. It uses undo log-based MVCC, copy-on-write checkpoints, and row-level WAL to eliminate bloat and the need for VACUUM.

Configuration

Add to postgresql.conf (requires restart):

shared_preload_libraries = 'orioledb.so'

Then enable the extension:

CREATE EXTENSION orioledb;

Creating Tables

Use the USING orioledb clause to create tables with the OrioleDB storage engine:

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

Use ordinary DML on OrioleDB tables, subject to the documented compatibility limits:

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;

Collation Requirements

OrioleDB tables support only ICU, C, and POSIX collations. To avoid specifying COLLATE on every text field, create the database with an appropriate default:

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

Key Benefits

  • No bloat: Undo log-based MVCC means old tuple versions do not bloat main storage
  • No VACUUM needed: Page-merging and undo log reclaim space automatically
  • No wraparound problem: Native 64-bit transaction identifiers
  • Lock-less page reading: In-memory pages linked directly to storage pages
  • Row-level WAL: Compact write-ahead logging suitable for parallel apply

Limitations

  • Public beta status – recommended for testing, not production
  • Requires a patched PostgreSQL build from orioledb/postgres
  • Only ICU, C, and POSIX collations are supported

Version Notes

OrioleDB beta17 uses extension SQL version 1.9 and patched PostgreSQL bases 16.15, 17.11, and 18.6. It adds concurrent creation/rebuilding of native btree indexes, cross-major upgrade support, page checksums, and parallel index/bitmap scans, together with recovery and DDL correctness fixes. Follow the beta17 binary and storage compatibility instructions before upgrading; a new SQL version does not make the engine usable on an unpatched PostgreSQL server.

Was this page helpful?