orioledb

OrioleDB, the next generation transactional engine

Overview

PackageVersionCategoryLicenseLanguage
orioledb1.6FEATPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
2910orioledbNoYesYesYesNoYes-
Relatedpg_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

Version

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

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:

pig install orioledb;          # Install for current active PG version
pig ext install -y orioledb -v 17  # PG 17
dnf install -y orioledb_17       # PG 17
apt install -y oriolepg-17-orioledb   # PG 17

Preload:

shared_preload_libraries = 'orioledb';

Create Extension:

CREATE EXTENSION orioledb;

Usage

orioledb: A cloud-native storage engine for PostgreSQL

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;

All standard PostgreSQL operations work on OrioleDB tables:

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

Last Modified 2026-03-12: add pg extension catalog (95749bf)