Chapter 2. Architecture
The Postgres Pro AXE architecture is shown in the diagram below.
The solution consists of the following components:
Postgres Pro DBMS
The database management system that stores the data in heap tables and provides role-based access control to manage privileges on pgpro_metastore objects. The Postgres Pro DBMS serves as a single entry point for accessing and configuring other Postgres Pro AXE components and for performing the data operations.
pgpro_metastore
The extension that organizes the data from Parquet files into analytical tables and implements a catalog for the metadata of analytical tables. This extension guarantees atomicity, consistency, isolation, and durability (ACID) for data operations and maintains metadata consistency when the catalog is accessed by multiple users.
The metadata catalog allows managing privileges on analytical tables and other pgpro_metastore objects and records the history of metadata updates with snapshots. The catalog uses a set of metadata tables according to the DuckLake specification. Metadata tables are stored as heap tables in the Postgres Pro DBMS.
pgpro_axe
The extension that provides the columnar-vectorized analytics engine for processing queries to the data stored in Parquet files. This extension creates query plans based on the features of the Parquet storage format, including internal statistics and bloom filters, and uses vector computations at the CPU level (SIMD instructions) for fast analytical query execution.
pgpro_axe allows working with both the OLAP and OLTP at the same time, joining the data from heap tables and columnar sources within one analytical query.
Solution components operate on the following main objects:
Heap tables
Standard Postgres Pro tables that store the data as row-based files in the
PGDATAserver directory. Heap tables are used for reference data and data that requires frequent modifications.Heap tables are managed by the Postgres Pro DBMS.
Analytical tables
Logical objects that represent Parquet files in the metadata catalog, making the data available for queries. Access to the data is managed through privileges on analytical tables.
For high query performance, it is recommended to store the data in Parquet files from 100 MB to 10 GB. Many small Parquet files degrade the performance, while overly large files prevent pgpro_axe from using internal statistics and bloom filters.
Analytical tables are the key Postgres Pro AXE objects managed by pgpro_metastore.
Postgres Pro views
Views for analytical tables that serve as the main interface for querying the data using the standard SQL.
Postgres Pro views are created by pgpro_metastore and managed by the Postgres Pro DBMS.
Snapshots
Catalog objects that record the history of metadata updates. Each pgpro_metastore object update results in a snapshot that reflects the object state at a specific point in time. Snapshots allow restoring pgpro_metastore objects to any recorded state.
Snapshots are managed by pgpro_metastore.
The diagram below shows how Postgres Pro AXE processes SQL queries.