orioledb
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
orioledb | 1.8 | FEAT | PostgreSQL | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 2910 | orioledb | No | Yes | Yes | Yes | No | Yes | - |
| Related | pg_mooncake citus_columnar pg_analytics pg_duckdb timescaledb citus pg_strom |
|---|
patched kernel; beta16 for patchset 18.1/17.20/16.47
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.8 | 1817161514 | orioledb | - |
| RPM | PIGSTY | 1.8 | 1817161514 | orioledb_$v | oriolepg_$v |
| DEB | PIGSTY | 1.8 | 1817161514 | oriolepg-$v-orioledb | oriolepg-$v |
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 18 # PG 18
pig ext install -y orioledb -v 17 # PG 17
pig ext install -y orioledb -v 16 # PG 16
dnf install -y orioledb_18 # PG 18
dnf install -y orioledb_17 # PG 17
dnf install -y orioledb_16 # PG 16
apt install -y oriolepg-18-orioledb # PG 18
apt install -y oriolepg-17-orioledb # PG 17
apt install -y oriolepg-16-orioledb # PG 16
Preload:
shared_preload_libraries = 'orioledb';
Create Extension:
CREATE EXTENSION orioledb;
Usage
Sources: README, beta16 release, patched PostgreSQL tree
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
Version Notes
OrioleDB 1.8-beta16 bumps the extension SQL version to 1.8, bases patched PostgreSQL builds on 16.13, 17.9, and 18.4, and adds PostgreSQL 18 support. New user-facing surfaces include orioledb.serializable for SERIALIZABLE support and verify_orioledb(regclass, boolean) for pg_amcheck integration. The release also includes recovery, replication, index-scan, vacuum, and DDL correctness fixes.
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.