This project is a lightweight, real-time database server inspired by MongoDB but designed to be simpler and more compact, written entirely in C. It aims to provide basic database functionalities with support for real-time features, allowing applications to interact with the database and receive updates in real time.
Current Status:
The project is still a work in progress. Some functionalities, especially the data retrieval and storage methods, are not fully optimized yet. Additionally, index support will be introduced in future versions to enhance query performance.
- Real-time Updates: Clients can subscribe to changes in the database and receive notifications when data changes.
- Simple Storage: Basic operations for storing and retrieving JSON-like data.
- Optimization: Current methods, such as finding and retrieving data, are not optimized and could be slow on larger datasets.
- Indexing: Future versions will introduce support for indexes to improve query performance.
- Authentication: Basic authentication is in place (a POC), but more secure methods will be developed.
Make sure you have the following installed on your system:
- GCC (or any C compiler)
libevent
library (not required now)make
-
Clone this repository to your local machine:
git clone https://github.com/dinyad-prog00/dddb.git
-
Navigate to the project directory:
cd dddb/dddb
-
Build the project using
make
:make
-
Run the server:
make run
If you want to run the server with GDB for debugging purposes:
make debug
-
Node.js Driver: The project includes a Node.js driver located in
drivers/nodejs/dddb
. To install and use the driver locally, refer to the instructions indrivers/nodejs/dddb/README.md
. -
CLI Client: A command-line interface (CLI) client called
dddbsh
(DDDB Shell) is available inclients/dddbsh
. This client allows you to interact with the 3DB server from the terminal. Refer toclients/dddbsh/README.md
-
Node.js Test Project: A Node.js test project is included in the repository under
test-project
to demonstrate usage of the Node.js driver and interact with the 3DB server.