Skip to content

This project is a simple query processing engine built using relational algebra operators. It supports query evaluation using materialization, with operators such as Select, Project, and Join, and processes records from flat files in a paginated manner.

License

Notifications You must be signed in to change notification settings

mccrea-dev/Query-Execution-Engine

Repository files navigation

Project Title: Query Execution Engine

Author: Gabe M.

Date: November 20th, 2024

Description: This project is a simple query processing engine built using relational algebra operators. It supports query evaluation using materialization, with operators such as Select, Project, and Join, and processes records from flat files in a paginated manner.

How to Run:
    //Compile (if not already)
        g++ driver.cpp -o a.out

    //Run the executable
        ./a.out

    Output example:
    -----------------Page-----------------
    <record 1>
    <record 2>
    ...
    [Finished]
        pages  received: 3
        records received: 5

Features:

-Relational Algebra Operators: Select (σ) Project (π) Join (⨝ )

-Materialization Support: Intermediate results are written to temporary files and used as inputs to subsequent operations.

-Custom File Reader and Writer: Handles large datasets (bigData, smallData) using block-based pagination.

-Record-Based Storage: Each record is structured and processed with custom Record and Page abstractions.

File Structure & Purposes:
    .
    ├── FileReader.h     *Reads data from input files (page-wise)*
    ├── FileWriter.h     *Writes output and intermediate results*
    ├── Join.h           *Implements the join operator*
    ├── Select.h         *Implements the select operator*
    ├── Project.h        *Implements the project operator*
    ├── Operator.h       *Base class for all operators*
    ├── Record.h         *Record structure and utilities*
    ├── driver.cpp       *Main driver for executing the query*
    ├── bigData/         *Large dataset files*
    ├── smallData/       *Sample small dataset files*

About

This project is a simple query processing engine built using relational algebra operators. It supports query evaluation using materialization, with operators such as Select, Project, and Join, and processes records from flat files in a paginated manner.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages