columnar
hydra : Hydra Columnar extension
Overview
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
| --s-d-- | No | Yes | No | Yes | no | no |
| Relationships | |
|---|---|
| See Also | pg_mooncake storage_engine orioledb pg_sorted_heap citus_columnar |
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.1.2 |
18 17 16 15 14 | hydra |
- |
| RPM | PIGSTY | 1.1.2 |
18 17 16 15 14 | hydra_$v |
- |
| DEB | PIGSTY | 1.1.2 |
18 17 16 15 14 | postgresql-$v-hydra |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| el8.aarch64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| el9.x86_64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| el9.aarch64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| el10.x86_64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| el10.aarch64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| d12.x86_64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| d12.aarch64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| d13.x86_64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| d13.aarch64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| u22.x86_64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| u22.aarch64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| u24.x86_64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| u24.aarch64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| u26.x86_64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
| u26.aarch64 | N/A | N/A | PIGSTY 1.1.2 | PIGSTY 1.1.2 | PIGSTY 1.1.2 |
Source
github.com/hydradatabase/hydra
hydra-1.1.2.tar.gz
Install
Make sure PGDG and PIGSTY repo available:
Install this extension with pig:
Create this extension with:
Usage
Sources:
columnar is the PostgreSQL extension name, while Pigsty packages it as hydra. Pigsty metadata marks this extension as obsolete and no longer maintained; local packages are retained for PostgreSQL 14-16 only. Prefer newer actively maintained analytics extensions for new deployments.Hydra Columnar is a PostgreSQL table access method for column-oriented storage. It stores selected tables in a columnar format to reduce I/O for analytical scans, compression-heavy datasets, projections over a subset of columns, and aggregate queries. It originated from Citus Columnar and is exposed through CREATE EXTENSION columnar.
Create Columnar Tables
Use USING columnar when creating a table or materialized view. Reads and bulk inserts use normal PostgreSQL SQL, but the storage format is optimized for large analytical scans rather than high-churn OLTP tables.
Table Options
Available table options include compression, compression_level, stripe_row_limit, and chunk_group_row_limit. Compression choices depend on build support, but documented values include none, pglz, zstd, lz4, and lz4hc. Option changes apply to newly inserted data; existing stripes are not automatically rewritten.
You can also set defaults for newly created columnar tables with GUCs:
These GUCs affect newly created tables, not new stripes on an already existing table.
Convert Existing Tables
columnar.alter_table_set_access_method(table, method) rewrites a heap table as columnar storage or a columnar table back to heap storage. Review foreign keys, identity columns, row-level security, triggers, indexes, constraints, inheritance, and storage options before conversion; the helper rejects or skips features it cannot safely recreate.
Partitioning
Partitioned tables can mix row and columnar partitions. Operations that target only row partitions can use row-table behavior, while operations that touch columnar partitions must respect columnar limitations. This is useful for keeping recent mutable data in heap partitions and older analytical history in columnar partitions.
Maintenance and Introspection
VACUUM VERBOSE reports columnar storage statistics such as file size, compression rate, row count, stripe count, and chunk count. columnar.stats() exposes stripe-level metadata. columnar.vacuum() and columnar.vacuum_full() compact columnar storage incrementally; ordinary VACUUM is metadata-oriented and cheaper than a full rewrite.
Caveats
- This extension is obsolete in Pigsty metadata and conflicts with
citus/citus_columnarstyle columnar storage. Avoid installing conflicting columnar table access methods in the same PostgreSQL major unless you have tested the exact combination. - Pigsty packages
hydra/columnarfor PostgreSQL 14-16; PostgreSQL 17 and 18 are marked unsupported locally. - Hydra 1.1.x added update/delete and upsert improvements, but the project itself still describes columnar storage as unsuitable for frequent large updates, small transactions, and OLTP-style single-row workloads.
- Unsupported or limited areas include logical decoding, unlogged columnar tables, serializable isolation, some scan types, and many non-btree/non-hash indexes. Check constraints and index-backed constraints carefully before relying on them.
- The
columnarschema contains internal metadata tables such ascolumnar.options,columnar.stripe,columnar.chunk_group, andcolumnar.chunk. Query public views/functions for inspection, but do not mutate metadata tables directly.