Skip to content
This repository has been archived by the owner on Jun 8, 2019. It is now read-only.
/ DDBMSP Public archive

Playground for a low-latency distributed key-value store with Turing-complete querying using a clustered actor-system

Notifications You must be signed in to change notification settings

HippoBaro/DDBMSP

Repository files navigation

DDBMSP

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.

Compilation & Installation

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.

Cloning

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.

Build locally

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.

Docker

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.

Scale the cluster up or down