
gittech. site
for different kinds of informations and explorations.
A Database Written in Golang
Overview
AtomixDB is an mini relational database fully written in Go. Main focus was on implementing & understanding working the of database, storage management & transaction handling.
Table of Contents
Installation
Prerequisites
- Golang (version 1.17 or later)
- Git
- Linux operating system. AtomixDB has been developed and tested on systems like NixOS.
Clone the Repository
Clone the repository to your local machine:
git clone https://github.com/Sahilb315/AtomixDB.git && cd AtomixDB
Build
Build the project using Go:
go build -o atomixdb
Run
To start the AtomixDB server, execute:
./atomixdb
Features
B+ Tree Storage Engine with Indexing Support: Enables fast data retrieval, which is critical for database performance, especially in scenarios involving large datasets.
Free List Management for Node Reuse: The database manages a free list to reuse nodes, which is a strategy to optimize storage usage by recycling space from freed nodes. This helps reduce fragmentation and improve disk space efficiency.
Transaction Support: AtomixDB supports transactions, ensuring data consistency and integrity through atomic operations.
Concurrent Reads: The ability to handle concurrent reads enhances performance by allowing multiple users to read data simultaneously without locking issues, making it suitable for read-heavy applications.
Upcoming Features
Query Processing: Enhancing AtomixDB with query capabilities to support more complex data retrieval and manipulation.
Bug Fixes: Ongoing efforts to address and resolve identified bugs to improve stability and reliability.
Supported Commands
- CREATE
- INSERT
- GET
- UPDATE
- DELETE
- BEGIN
- COMMIT
- ABORT
Contributing
Contributions are welcome! If youโd like to contribute to AtomixDB, please follow these steps:
Fork the repository.
Create a new branch:
git checkout -b feature/YourFeature
Commit your changes:
git commit -am "Add new feature"
Push to the branch:
git push origin feature/YourFeature
Open a Pull Request describing your changes and the problem they solve.
License
AtomixDB is open-source software licensed under the MIT License.