OrioleDB kernel with an UNDO-based OLTP storage engine
Development sources use conf/fork/oriole.yml; v4.5.0 uses conf/oriole.yml, selected with -c oriole.
The oriole configuration template uses the OrioleDB storage engine instead of PostgreSQL’s default Heap storage. It stores older row versions in UNDO logs, reducing bloat in primary storage.
---#==============================================================## File : oriole.yml# Desc : 1-node OrioleDB (OLTP Enhancement) template# Ctime : 2025-04-05# Mtime : 2026-07-08# Docs : https://pigsty.io/docs/conf/oriole# License : Apache-2.0 @ https://pigsty.io/docs/about/license/# Copyright : 2018-2026 Ruohang Feng / Vonng (rh@vonng.com)#==============================================================## This is the config template for OrioleDB Kernel,# Which is a Patched PostgreSQL 16/17/18 fork# tutorial: https://pigsty.io/docs/pgsql/kernel/orioledb## Usage:# curl https://repo.pigsty.io/get | bash# ./configure -c oriole [-v 16/17/18]# ./deploy.ymlall:children:infra:{hosts:{10.10.10.10:{infra_seq:1 }} ,vars:{repo_enabled:false}}etcd:{hosts:{10.10.10.10:{etcd_seq:1 }} ,vars:{etcd_cluster:etcd }}#minio: { hosts: { 10.10.10.10: { minio_seq: 1 }} ,vars: { minio_cluster: minio }}#----------------------------------------------## OrioleDB Database Cluster#----------------------------------------------#pg-meta:hosts:10.10.10.10:{pg_seq:1, pg_role:primary }vars:pg_cluster:pg-metapg_users:- {name:dbuser_meta ,password:DBUser.Meta ,pgbouncer:true ,roles:[dbrole_admin] ,comment:pigsty admin user }- {name:dbuser_view ,password:DBUser.Viewer ,pgbouncer:true ,roles:[dbrole_readonly] ,comment:read-only viewer for meta database }pg_databases:- {name:meta ,baseline:cmdb.sql ,comment:pigsty meta database ,schemas:[pigsty], extensions:[orioledb]}pg_hba_rules:# https://pigsty.io/docs/pgsql/config/hba- {user:all ,db:all ,addr:intra ,auth:pwd ,title:'everyone intranet access with password' ,order:800}pg_crontab:# https://pigsty.io/docs/pgsql/admin/crontab- '00 01 * * * /pg/bin/pg-backup full'# OrioleDB Ad Hoc Settingspg_mode:oriole # OrioleDB compatible modepg_packages:[orioledb, pgsql-common ] # install OrioleDB kernelpg_libs:'orioledb, pg_stat_statements, auto_explain'# Load OrioleDB Extensionvars:# global variables#----------------------------------------------## INFRA : https://pigsty.io/docs/infra/param#----------------------------------------------#version:v4.5.0 # pigsty version stringadmin_ip:10.10.10.10# admin node ip addressregion:default # upstream mirror region: default,china,europeinfra_portal:# infra services exposed via portalhome :{domain:i.pigsty } # default domain name#----------------------------------------------## NODE : https://pigsty.io/docs/node/param#----------------------------------------------#nodename_overwrite:false# do not overwrite node hostname on single node modenode_repo_modules:node,infra,pgsql# add these repos directly to the singleton nodenode_tune:oltp # node tuning specs: oltp,olap,tiny,crit#----------------------------------------------## PGSQL : https://pigsty.io/docs/pgsql/param#----------------------------------------------#pg_version:18# OrioleDB Kernel is based on PG 16/17/18pg_conf:oltp.yml # pgsql tuning specs: {oltp,olap,tiny,crit}.yml#----------------------------------------------## PASSWORD : https://pigsty.io/docs/setup/security/#----------------------------------------------#grafana_admin_password:pigstygrafana_view_password:DBUser.Viewerpg_admin_password:DBUser.DBApg_monitor_password:DBUser.Monitorpg_replication_password:DBUser.Replicatorpatroni_password:Patroni.APIhaproxy_admin_password:pigstyminio_secret_key:S3User.MinIOetcd_root_password:Etcd.Root...
Explanation
The oriole template enables the OrioleDB storage engine. See the kernel guide for its design.
Key Features:
Version Management: Stores older MVCC versions in UNDO logs to reduce bloat in primary storage
No VACUUM Required: Eliminates performance jitter from autovacuum
Row-level WAL: More efficient logging and replication
Compressed Storage: Built-in data compression, reduces storage space
Use Cases:
High-frequency update OLTP workloads
Applications sensitive to write latency
Need for stable response times (eliminates VACUUM impact)
Large tables with frequent updates causing bloat
Usage:
-- Create table using OrioleDB storage
CREATETABLEorders(idSERIALPRIMARYKEY,customer_idINT,amountDECIMAL(10,2))USINGorioledb;-- Existing tables cannot be directly converted, need to be rebuilt
Notes:
OrioleDB supports PostgreSQL 16, 17, and 18. The template defaults to PG18. To select a major version, use -v 16, -v 17, or -v 18.
Need to add orioledb to shared_preload_libraries
Some PostgreSQL features may not be fully supported
Use the matching OrioleDB packages for the selected PostgreSQL major and OS architecture