Core concepts

Core concepts#

This section is dedicated to the core modules of PostBOUND and how they interact with each other. If you are a new user, it is highly recommended to read through this section to get a better understanding of the framework. At the same time, the 10 Minutes to PostBOUND tutorial provides a more fast-paced introduction.

Contents#

Package structure#

Package

Description

root

The main entry point into PostBOUND as well as fundamental data structures like OptimizationPipeline or QueryPlan are located here. See Optimizer Abstraction for details.

qal

Home of the query abstraction used throughout PostBOUND. See Query Abstraction for details.

parser

Contains our SQL parser

transform

Collects different utilities to modify SQL queries

relalg

Provides a simple relational algebra implementation to represent SQL queries.

db

Contains all parts of PostBOUND that concern database interaction. See Database Abstraction for details.

postgres

Implements the database backend for PostgreSQL.

duckdb

Implements the database backend for DuckDB.

mysql

Provides a simple database backend implementation for MySQL. MySQL is currently provided on a best-effort basis and not an official backend. Not all features are implemented.

workloads

Provides the Workload interface to represent query workloads and routines to load commonly-used benchmarks like JOB or Stats.

bench

Contains benchmarking utilities to measure the performance of different optimizers and optimization settings. See Benchmarking for details.

opt

Provides utilities to aid with optimizer development like JoinGraph, basic optimization algorithms like DynamicProgrammingEnumerator, and additional utilities. See Existing Optimizer Implementations for available optimizers.

validation

Provides the basic definitions to check the applicability of optimizer prototypes to different queries and database systems. In addition, some commonly-used validations are implemented here.

util

Utilities that are not really specific to query optimization find their home here. See the package documentation for more details.

vis

Contains utilities to visualize different concepts in query optimization (join orders, join graphs, query execution plans, …).