# 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
-
Build the Rust Components:
cargo build
-
Build the Golang Modules:
cd go_modules go build ./...
-
Run Tests:
- For Rust:
cargo test
- For Go:
go test ./...
- For Rust:
Contributions are welcome! Please fork the repository and submit pull requests for improvements, bug fixes, or new features.
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.