Skip to content

Tembo DB is a PostgreSQL-inspired database engine built with a combination of Rust and Golang modules. Named after the Swahili word for "elephant," Tembo DB represents strength, reliability, speed, and efficiency.

Notifications You must be signed in to change notification settings

AustinOyugi/tembodb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# Tembo DB

Tembo DB is a PostgreSQL-inspired database engine built with a combination of Rust and Golang modules.
Named after the Swahili word for "elephant," Tembo DB represents strength, reliability, speed, and efficiency.

## Project Structure

Below is an overview of the project structure along with an explanation of the subdirectories:

## Subdirectory Explanations

- **Cargo.toml**:  
  This file defines the Rust project’s metadata and dependencies.
  It is essential for building and managing the Rust core of Tembo DB.

- **src/**:  
  Contains all the Rust source code for the core database engine. Each subdirectory inside `src/` focuses on a specific aspect of the database:
    - **main.rs**: Starts the application and sets up necessary components.
    - **lib.rs**: Exports core functionalities and modules.
    - **config.rs**: Holds configuration logic and settings.
    - **parser/**: Responsible for converting SQL queries into a structured format.
    - **planner/**: Optimizes queries and creates efficient execution plans.
    - **executor/**: Executes the planned queries, managing data retrieval and manipulation.
    - **storage/**: Manages data persistence, including table storage, index management, and durability features like WAL.
    - **buffer/**: Implements caching strategies to enhance I/O performance.
    - **transaction/**: Controls transactions and concurrency (using techniques like MVCC).
    - **access_control/**: Ensures security through user authentication and role-based access.
    - **network/**: Handles client connections and implements the PostgreSQL wire protocol.
    - **cli/**: Provides an interactive command-line interface for direct user interaction.

- **go_modules/**:  
  Contains Golang modules that complement the Rust core. This separation helps maintain clear boundaries between the two language environments:
    - **go.mod**: Manages dependencies for Go modules.
    - **pkg/**: Includes reusable packages:
        - **protocol/**: Implements parts of the protocol, allowing interoperability with PostgreSQL clients.
        - **connection/**: Manages client connections in Go.
        - **utils/**: General helper functions used across the Go codebase.
    - **cmd/**: Houses Go-based command-line applications or microservices:
        - **go_server/**: An example server component built in Go.
        - **another_tool/**: Placeholder for any additional Go tools integrated into Tembo DB.

- **tests/**:  
  Contains all test suites for the project, ensuring both Rust and Go components are reliable and well-functioning.
    - **rust_tests/**: Focuses on unit and integration tests for Rust.
    - **go_tests/**: Contains tests for the Golang modules.

## Getting Started

1. **Clone the Repository:**
   ```bash
   git clone https://your-repo-url.git
   cd tembo_db
  1. Build the Rust Components:

    cargo build
  2. Build the Golang Modules:

    cd go_modules
    go build ./...
  3. Run Tests:

    • For Rust:
      cargo test
    • For Go:
      go test ./...

Contributing

Contributions are welcome! Please fork the repository and submit pull requests for improvements, bug fixes, or new features.

License

This project is licensed under the MIT License.


Tembo DB aims to combine robust performance with the strength and resilience symbolized by the elephant, providing a reliable, high-performance database solution.

About

Tembo DB is a PostgreSQL-inspired database engine built with a combination of Rust and Golang modules. Named after the Swahili word for "elephant," Tembo DB represents strength, reliability, speed, and efficiency.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages