Skip to content

Project Structure

Folder Structure

Opteryx's repository folder structure is described below:

opteryx/                 <- main opteryx library
 ├── compiled/           <- cython-compiled modules for performance
 ├── connectors/         <- modules to connect to data sources
 ├── constants/          <- constant definitions used across the codebase
 ├── datatypes/          <- data type definitions and handling
 ├── functions/          <- modules to execute functions within SQL statements
 ├── managers/           <- libraries responsible for key functional units
 │   ├── cache/          <- modules implementing caching systems
 │   ├── execution/      <- query execution management
 │   ├── expression/     <- modules implementing expression evaluation
 │   ├── kvstores/       <- modules implementing interfacing with KV Stores
 │   ├── permissions/    <- permission and access control management
 │   └── schemes/        <- modules implementing storage schemes
 ├── models/             <- internal data models
 ├── operators/          <- modules implementing steps in the query plan
 ├── planner/            <- the planning and management of the query engine
 │   ├── binder/         <- binds identifiers to schemas and resolves references
 │   ├── logical_planner/ <- creates logical query plans from AST
 │   ├── optimizer/      <- optimizes query plans for performance
 │   └── views/          <- view management
 ├── shared/             <- global resources
 ├── third_party/        <- third party code
 │   ├── abseil/ 
 │   ├── alantsd/
 │   ├── cyan4973/
 │   ├── fastfloat/
 │   ├── maki_nage/
 │   ├── query_builder/
 │   ├── sqloxide/
 │   ├── tktech/
 │   ├── travers/
 │   ├── ulfjack/
 │   └── ...  
 ├── utils/              <- helper libraries
 ├── virtual_datasets/   <- sample data (e.g. $planets, $astronauts, $satellites)
 └── ...       
src/                     <- Rust libraries
testdata/                <- Data referenced in unit tests
tests/                   <- Unit tests