DDBMSP is a fast, fault-tolerant, queryable, actor-based distributed hash table implemented on top of the Microsoft Orleans Framework
DDBMSP is a student project implementing a Distributed Hash Table with stream aggregation built-in. Unfortunately it is not yet a fully-features, generic database. The data types are hard-coded to the project's specifications.
DDBMSP is a .Net Core application and is buildable and runnable on all .Net Core supported platform. The Silos are configured to connect to a local Consul agent by default. We provide a docker-compose.yml
file, that provides a convenient way to build and bootstrap a complete running DDBMSP setup.
To clone the solution, run:
$ git clone https://github.com/HippoBaro/DDBMSP.git --recursive
DDBMSP depends on a custom
Orleans.StorageProvider.Redis
plugin to provide persistence over a Redis server. It is included in the repository via a submodule.
To build the solution locally, including all DDBMSP tools, run:
$ dotnet restore && dotnet build
The
dotnet restore
command will pull all dependency from the Nuget central package repository.
This repository provides a docker-compose.yml
file as an easy-to-use way to build and run a complete DDBMSP stack on any Docker host.
To build the DDBMSP images:
$ docker-compose build
This will create the following images:
- A Redis image that provides persistence to the data,
../data
is mapped as a volume by default. - A Consul image that provides node discovery utilities
- A DDBMSP Silo image. Our database engine
- A DDBMSP Frontend image. Provides a very simple web interface to go through the data, expose on port
80
by default - A DDBMSP CLI image. CLI to interact with the DDBMSP cluster.,
../exportcli
is mapped as a volume by default.
You can then run the cluster with:
$ docker-compose up -d
The
-d
argument is optional and runs the cluster in the background.
It will take a few seconds for all resources to be allocated, bootstrapped and for the cluster to get up & running. ### Run the CLI inside the docker-compose
cluster
To launch an instance of a DDBMSP CLI inside a running cluster, do:
$ docker-compose run cli
The CLI will launch and automatically discover the cluster's nodes via the Consul
agent.