pgcolumnar 1.0.0-alpha.3

This Release
pgcolumnar 1.0.0-alpha.3
Date
Status
Unstable
Abstract
Analytic column storage for PostgreSQL, built as a native table access method
Description
pgColumnar is a columnar storage table access method for PostgreSQL, written as a clean-room, MIT-licensed implementation. It reads and writes its own native format, PGCN v1, and supports chunk-group skipping from zone maps and bloom filters, vectorized aggregation, projections, retention, online compaction and reclustering, parallel bulk ingest and export, Apache Arrow and Parquet import and export, Apache Iceberg, and object storage.
Released By
jd
License
MIT
Resources
Special Files
Tags

Extensions

pgcolumnar 1.0.0-alpha.3
Analytic column storage for PostgreSQL, built as a native table access method

Documentation

ROADMAP
pgColumnar roadmap
sql-reference
SQL reference
installation
Installation
ARCHITECTURE
pgColumnar architecture
limitations
Limitations and compatibility
requirements
requirements
benchmarks
Benchmarks426 for both the anchored and the infix case.682).** The Iceberg work is on the Iceberg read path. It does not touch the scan,598 gates the gating on projected payload width, a plan-time property the unreliable LIKE '%...%' estimate cannot corrupt.
PROVENANCE
Provenance421). ClickBench is licensed CC BY-NC-SA 4.0, not Apache-2.0, which an
README
pgColumnar logo
features
Features
roadmap
Roadmap
NATIVE_FORMAT_AND_INTERFACE_SPEC
pgColumnar native format and interface specification
administration
Administration
testing
Testing
configuration
Configuration reference
best-practices
Best practices
user-guide
User guide
CHANGELOG
Changelog852.376 bound and the clustered-index and point-lookup guards in
how-to
How-to guides

README

Analytic column storage for PostgreSQL, built as a native table access method.

PostgreSQL 15-18 (+19 beta) License: MIT Version 1.0-alpha3 Status: pre-release

Read the documentation at commandprompt.github.io/pgcolumnar

A table created USING pgcolumnar stores its data by column, with per-column compression, chunk-group skipping, and a vectorized aggregate path. It is for analytic workloads: large scans, aggregates, and column projections over append-mostly data.

pgColumnar builds from one source tree on PostgreSQL 15 through 18, with 19 validated against 19beta2, and is licensed under the MIT License. It is pre-release; the version marker is 1.0-alpha3, recorded in VERSION. That version is in development and not tagged; the latest published pre-release is v1.0-alpha2. A table USING pgcolumnar is stored in the native on-disk format, PGCN v1.

Documentation

The full documentation is published at commandprompt.github.io/pgcolumnar. The same pages are in this repository under docs/:

Features What pgColumnar provides
Installation Build, load, and create the extension
User guide Create tables, load data, and query
Administration Operate columnar tables in production
Configuration Settings and per-table options
SQL reference The pgcolumnar.* functions
Limitations Compatibility and known constraints
Benchmarks Size and latency numbers
Testing The test suite and version matrix
Changelog Notable changes
Architecture Source map for developers

Quick start

Build with PGXS against the target server, add the library to shared_preload_libraries, and restart:

make PG_CONFIG=/path/to/pg_config
make install PG_CONFIG=/path/to/pg_config
shared_preload_libraries = 'pgcolumnar'

Then, in a database:

CREATE EXTENSION pgcolumnar;

CREATE TABLE events (id bigint, ts timestamptz, kind int, payload text)
  USING pgcolumnar;

INSERT INTO events
  SELECT g, now(), g % 8, 'p' || g
  FROM generate_series(1, 1000000) g;

SELECT count(*), avg(kind) FROM events WHERE kind = 3;

See the installation guide for requirements and the user guide for loading and querying.

Independence

pgColumnar is an independent implementation. It is not derived from the source of any other columnar project. Its on-disk format, its metadata catalog and its SQL interface come from published column-store research and from the open Apache Arrow, Parquet and ORC specifications. They are recorded in design/NATIVE_FORMAT_AND_INTERFACE_SPEC.md. The implementation is built from that specification and the public PostgreSQL API, by the clean-room method described in PROVENANCE.md.

License

MIT. See LICENSE.