Skip to content

jarulraj/buzzdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ba8dbf0 · Jan 9, 2025
Jul 31, 2023
Jul 16, 2023
Jul 16, 2023
Jul 16, 2023
Jul 16, 2023
Jul 17, 2023
Jul 17, 2023
Jul 17, 2023
Jul 25, 2023
Jul 25, 2023
Jul 31, 2023
Jul 31, 2023
Aug 1, 2023
Aug 1, 2023
Aug 10, 2023
Aug 10, 2023
Aug 10, 2023
Aug 10, 2023
Aug 10, 2023
Jul 18, 2024
Aug 11, 2023
Feb 16, 2024
Feb 16, 2024
Feb 16, 2024
Feb 19, 2024
Feb 19, 2024
Feb 19, 2024
Feb 19, 2024
Feb 20, 2024
Feb 20, 2024
Feb 27, 2024
Feb 28, 2024
Feb 28, 2024
Feb 28, 2024
Feb 28, 2024
Feb 29, 2024
Feb 29, 2024
Feb 29, 2024
Feb 29, 2024
Mar 2, 2024
Mar 2, 2024
Mar 3, 2024
Mar 3, 2024
Jul 13, 2023
Jan 9, 2025
Jul 25, 2023
Aug 27, 2024
Jun 13, 2024
Jul 13, 2023
Jul 22, 2024
Jun 13, 2024
Jun 13, 2024
Mar 14, 2024
Jul 21, 2024
Jul 21, 2024
Jul 19, 2024
Jul 25, 2024
Jul 18, 2024
Mar 14, 2024
Jul 24, 2024
Jul 22, 2024
Jul 25, 2024
Aug 27, 2024
Jul 24, 2024
Jul 25, 2024
Mar 27, 2024
Mar 27, 2024
Jul 24, 2024
Mar 27, 2024
Mar 27, 2024
Mar 27, 2024
Mar 27, 2024
Jul 22, 2024
Jul 21, 2024
Mar 27, 2024
Oct 24, 2024
Oct 24, 2024

Repository files navigation

BuzzDB: An Educational Database System


buzzdb

BuzzDB is a relational database system written in C++ with a modular design for educational purposes.

It consists of advanced storage management, indexing, query execution components.

Getting Started

To compile BuzzDB, ensure your environment is set up for C++ development. Follow the environment setup guides below for Mac and Linux:

Modules

BuzzDB includes the following core components:

  • Data Types and Fields: Defines a Field class that can store different data types (INT, FLOAT, STRING), allowing flexible use in various database operations.
  • Tuple Management: Implements a Tuple class that aggregates multiple Field instances, representing rows in a database table with support for serialization.
  • Page and Slot Management: Provides a SlottedPage class for fixed-size page storage, using slots to efficiently manage data within pages.
  • Buffer Management: Offers a BufferManager that maintains in-memory pages, applying an LRU replacement policy to manage a cache of pages.
  • Storage Manager: Manages on-disk storage by loading and flushing pages to a persistent storage file.
  • Hash Index: Implements a simple hash-based indexing mechanism for efficient data access.
  • Multi-threaded Hash Index: Parallelized hash index implementation for high-throughput environments
  • Range Queries: B+tree-based index for range-based data retrieval
  • Query Operators: Includes operators like ScanOperator, SelectOperator, and HashAggregationOperator for query execution.

BuzzDB also includes the following additional projects:

  • Patricia Trie: Optimized trie for fast lookups and memory-efficient storage.
  • Learned Indexes: Neural network and regression models for predictive indexing
  • Columnar Storage & Compression: Efficient data storage with SIMD-based columnar compression
  • SIMD Operations: High-performance operations using SIMD for complex queries

Compilation Instructions

To compile BuzzDB, use the following commands:

  • Compilation: Compile a particular version of BuzzDB as follows:
  g++ -std=c++14 -O3 -Wall -Werror -Wextra <module_name>.cpp
  • Compilation with Debugging Symbols: Use -g flag to enable debugging with gdb or lldb:
g++ -std=c++14 -O3 -Wall -Werror -Wextra -g <module_name>.cpp

Contributions

We welcome contributions to enhance BuzzDB’s performance and extend its capabilities. Feel free to submit pull requests, report issues, and join discussions.

License

BuzzDB is licensed under the Apache-2.0 License.

About

BuzzDB is intended for use in educational and research contexts. Contributions from database enthusiasts and students are welcome.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published