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 |
Source
pig build pkg orioledb; # build rpm/debInstall
Make sure PGDG and PIGSTY repo available:
pig repo add pgsql -u # add both repo and update cacheInstall this extension with pig:
pig install orioledb; # install via package name, for the active PG version
pig install orioledb -v 17; # install for PG 17Config this extension to shared_preload_libraries:
shared_preload_libraries = 'orioledb';Create this extension with:
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