Table of Contents
Screencast-from-2024-01-09-05-15-53.mp4
👋 Welcome to the NoSQL Rust Database project!
🛠 What is it?
The NoSQL Rust Database is a lightweight, high-performance NoSQL database written in Rust. It is designed for efficient data storage and retrieval.🎯 Purpose of the Database
The purpose of this database is to provide a fast and reliable data storage solution for applications that require NoSQL capabilities. It is optimized for speed and scalability.
📌 Key Features
- 🖥 Efficient data storage and retrieval.
- 📊 NoSQL data model for flexible schema.
- 🔒 High concurrency support.
🚀 Dive in to explore how this works 💻
- Develop in-memory key-value store
- Use it as a nosql database if needed
- In-memory key-value store.
- Shard Manager.
- CLI.
- Http server
-
DashMap
- used as a core data structure in kv_store
It's a concurrent implementation of HashMap (manages concurrent access to data).
- Transaction support
-
Tokio
- high concurrent multithread runtime enrivonment -
Actix-web
- highly performant http-server, working in Tokio environment -
KvPair model
- model for extending simple value functionality with some metadata -
Shard model
- model of shard, representing kv_stores with DashMap
+-----------------------------------------------------+
| HandyDB Cluster |
| +-----------+ +-----------+ +-----------+ |
| | Shard 1 | | Shard 2 | | Shard 3 | |
| | Port 8081 | | Port 8082 | | Port 8083 | |
| | Shard ID 1| | Shard ID 2| | Shard ID 3| |
| +-----------+ +-----------+ +-----------+ |
| |
| +-------------------------------------------------+ |
| | Shard Manager (on each shard) | |
| | - Knows other shards | |
| | - Routes requests based on shard responsibility | |
| +-------------------------------------------------+ |
+-----------------------------------------------------+
Just download latest release and execute it
Usage for creating a shard:
./handy_db --port <port> --shard-id [Shard_ID]
Example:
./handy_db --port 32320 --shard-id shardA