orioledb
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
orioledb | 1.6 | 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 |
|---|
special case: this extension only works on patched postgres kernel: oriolepg, 1.6-beta14
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.6 | 1817161514 | orioledb | - |
| RPM | PIGSTY | 1.6 | 1817161514 | orioledb_$v | oriolepg_$v |
| DEB | PIGSTY | 1.6 | 1817161514 | oriolepg-$v-orioledb | oriolepg-$v |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY MISS | PIGSTY 1.6 el8.x86_64.pg17 : orioledb_17 orioledb_17-1.6-beta14PIGSTY.el8.x86_64.rpm
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el8.aarch64 | PIGSTY MISS | PIGSTY 1.6 el8.aarch64.pg17 : orioledb_17 orioledb_17-1.6-beta14PIGSTY.el8.aarch64.rpm
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el9.x86_64 | PIGSTY MISS | PIGSTY 1.6 el9.x86_64.pg17 : orioledb_17 orioledb_17-1.6-beta14PIGSTY.el9.x86_64.rpm
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el9.aarch64 | PIGSTY MISS | PIGSTY 1.6 el9.aarch64.pg17 : orioledb_17 orioledb_17-1.6-beta14PIGSTY.el9.aarch64.rpm
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el10.x86_64 | PIGSTY MISS | PIGSTY 1.6 el10.x86_64.pg17 : orioledb_17 orioledb_17-1.6-beta14PIGSTY.el10.x86_64.rpm
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el10.aarch64 | PIGSTY MISS | PIGSTY 1.6 el10.aarch64.pg17 : orioledb_17 orioledb_17-1.6-beta14PIGSTY.el10.aarch64.rpm
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d12.x86_64 | PIGSTY MISS | PIGSTY 1.6 d12.x86_64.pg17 : oriolepg-17-orioledb oriolepg-17-orioledb_1.6-0.beta14PIGSTY~bookworm_amd64.deb
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d12.aarch64 | PIGSTY MISS | PIGSTY 1.6 d12.aarch64.pg17 : oriolepg-17-orioledb oriolepg-17-orioledb_1.6-0.beta14PIGSTY~bookworm_arm64.deb
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d13.x86_64 | PIGSTY MISS | PIGSTY 1.6 d13.x86_64.pg17 : oriolepg-17-orioledb oriolepg-17-orioledb_1.6-0.beta14PIGSTY~trixie_amd64.deb
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d13.aarch64 | PIGSTY MISS | PIGSTY 1.6 d13.aarch64.pg17 : oriolepg-17-orioledb oriolepg-17-orioledb_1.6-0.beta14PIGSTY~trixie_arm64.deb
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| u22.x86_64 | PIGSTY MISS | PIGSTY 1.6 u22.x86_64.pg17 : oriolepg-17-orioledb oriolepg-17-orioledb_1.6-0.beta14PIGSTY~jammy_amd64.deb
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| u22.aarch64 | PIGSTY MISS | PIGSTY 1.6 u22.aarch64.pg17 : oriolepg-17-orioledb oriolepg-17-orioledb_1.6-0.beta14PIGSTY~jammy_arm64.deb
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| u24.x86_64 | PIGSTY MISS | PIGSTY 1.6 u24.x86_64.pg17 : oriolepg-17-orioledb oriolepg-17-orioledb_1.6-0.beta14PIGSTY~noble_amd64.deb
| PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| u24.aarch64 | PIGSTY MISS | PIGSTY 1.6 u24.aarch64.pg17 : oriolepg-17-orioledb oriolepg-17-orioledb_1.6-0.beta14PIGSTY~noble_arm64.deb
| PIGSTY MISS | PIGSTY MISS | PIGSTY 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 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
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.