AtomixDB is an mini relational database fully written in Go. Main focus was on implementing & understanding working the of database, storage management & transaction handling.
- Golang (version 1.17 or later)
- Git
- Linux operating system. AtomixDB has been developed and tested on systems like NixOS.
Clone the repository to your local machine:
git clone https://github.com/Sahilb315/AtomixDB.git && cd AtomixDB
Build the project using Go:
go build -o atomixdb
To start the AtomixDB server, execute:
./atomixdb
-
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.
-
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.
- CREATE
- INSERT
- GET
- UPDATE
- DELETE
- BEGIN
- COMMIT
- ABORT
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.
AtomixDB is open-source software licensed under the MIT License.