orioledb

orioledb

orioledb : OrioleDB, the next generation transactional engine

Overview

ID Extension Package Version Category License Language
2910
orioledb
orioledb
1.6
FEAT
PostgreSQL
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--sLd-r
No
Yes
Yes
Yes
yes
no
Relationships
See Also
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

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PIGSTY
1.6
18
17
16
15
14
orioledb -
RPM
PIGSTY
1.6
18
17
16
15
14
orioledb_$v oriolepg_$v
DEB
PIGSTY
1.6
18
17
16
15
14
oriolepg-$v-orioledb oriolepg-$v
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
MISS
PIGSTY 1.6
MISS
MISS
MISS
el8.aarch64
MISS
PIGSTY 1.6
MISS
MISS
MISS
el9.x86_64
MISS
PIGSTY 1.6
MISS
MISS
MISS
el9.aarch64
MISS
PIGSTY 1.6
MISS
MISS
MISS
el10.x86_64
MISS
PIGSTY 1.6
MISS
MISS
MISS
el10.aarch64
MISS
PIGSTY 1.6
MISS
MISS
MISS
d12.x86_64
MISS
PIGSTY 1.6
MISS
MISS
MISS
d12.aarch64
MISS
PIGSTY 1.6
MISS
MISS
MISS
d13.x86_64
MISS
PIGSTY 1.6
MISS
MISS
MISS
d13.aarch64
MISS
PIGSTY 1.6
MISS
MISS
MISS
u22.x86_64
MISS
PIGSTY 1.6
MISS
MISS
MISS
u22.aarch64
MISS
PIGSTY 1.6
MISS
MISS
MISS
u24.x86_64
MISS
PIGSTY 1.6
MISS
MISS
MISS
u24.aarch64
MISS
PIGSTY 1.6
MISS
MISS
MISS
Package Version OS ORG SIZE File URL
orioledb_17 1.6 el8.x86_64 pigsty 475.6 KiB orioledb_17-1.6-beta14PIGSTY.el8.x86_64.rpm
orioledb_17 1.6 el8.aarch64 pigsty 452.9 KiB orioledb_17-1.6-beta14PIGSTY.el8.aarch64.rpm
orioledb_17 1.6 el9.x86_64 pigsty 448.9 KiB orioledb_17-1.6-beta14PIGSTY.el9.x86_64.rpm
orioledb_17 1.6 el9.aarch64 pigsty 440.4 KiB orioledb_17-1.6-beta14PIGSTY.el9.aarch64.rpm
orioledb_17 1.6 el10.x86_64 pigsty 463.4 KiB orioledb_17-1.6-beta14PIGSTY.el10.x86_64.rpm
orioledb_17 1.6 el10.aarch64 pigsty 452.4 KiB orioledb_17-1.6-beta14PIGSTY.el10.aarch64.rpm
oriolepg-17-orioledb 1.6 d12.x86_64 pigsty 1.6 MiB oriolepg-17-orioledb_1.6-0.beta14PIGSTY~bookworm_amd64.deb
oriolepg-17-orioledb 1.6 d12.aarch64 pigsty 1.5 MiB oriolepg-17-orioledb_1.6-0.beta14PIGSTY~bookworm_arm64.deb
oriolepg-17-orioledb 1.6 d13.x86_64 pigsty 1.3 MiB oriolepg-17-orioledb_1.6-0.beta14PIGSTY~trixie_amd64.deb
oriolepg-17-orioledb 1.6 d13.aarch64 pigsty 1.3 MiB oriolepg-17-orioledb_1.6-0.beta14PIGSTY~trixie_arm64.deb
oriolepg-17-orioledb 1.6 u22.x86_64 pigsty 1.7 MiB oriolepg-17-orioledb_1.6-0.beta14PIGSTY~jammy_amd64.deb
oriolepg-17-orioledb 1.6 u22.aarch64 pigsty 1.6 MiB oriolepg-17-orioledb_1.6-0.beta14PIGSTY~jammy_arm64.deb
oriolepg-17-orioledb 1.6 u24.x86_64 pigsty 1.5 MiB oriolepg-17-orioledb_1.6-0.beta14PIGSTY~noble_amd64.deb
oriolepg-17-orioledb 1.6 u24.aarch64 pigsty 1.4 MiB oriolepg-17-orioledb_1.6-0.beta14PIGSTY~noble_arm64.deb

Source

pig build pkg orioledb;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

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

Install this extension with pig:

pig install orioledb;		# install via package name, for the active PG version

pig install orioledb -v 17;   # install for PG 17

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'orioledb';

Create this extension with:

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 updated on