Skip to content

An in-memory distributed key-value store with consistent hashing built using golang

Notifications You must be signed in to change notification settings

priyansh32/nebula

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Distributed In-Memory Key-Value Store (Nebula) Documentation

Table of Contents

  1. Introduction
  2. Features
  3. Technologies Used
  4. Usage
  5. Author Information
  6. Contact

Introduction

This document provides an overview of the application, its features, and instructions for installation, configuration, and usage.

Nebula is a distributed in-memory key-value store that uses consistent hashing to distribute data across multiple stores, ensuring high availability and fault tolerance.

Features

  • Distributed architecture using consistent hashing.
  • In-memory storage for fast data access.
  • Support for GET, PUT, and DELETE operations.

Technologies Used

DIM-KVS is built using the following technologies and libraries:

  • Golang: The primary programming language.
  • gRPC: Used for communication between components.

Getting Started

Follow these steps to get started with NEBULA (DKVS):

  1. Download and install Golang from the official website.

  2. Clone the repository to your local machine:

    git clone https://github.com/priyansh32/nebula.git
  3. Install the dependencies:

     go mod download
  4. Build the project components:

     chmod +x ./build.sh
     ./build.sh
  5. Run the coordinator:

     ./bin/coordinator <port> <replication-factor>
  6. Run the store:

     ./bin/store <port>

    you can run multiple stores by running the above command with different ports.

  7. Run the CLI:

     ./bin/cli <coordinator-address>

    the coordinator address is the address of the coordinator in the format host:port.

Usage

Application provides a CLI to interact with the coordinator. Below is a sample usage of CLI.
To interact with the coordinator programmatically, you need to use gRPC with protobuf specification the /internal/api/coordinator/coordinator.proto

NEBULA> ADDSTORE localhost:50012 alpha-store
Added store:  alpha-store  with status:  OK

NEBULA> ADDSTORE localhost:50013 beta-store
Added store:  beta-store  with status:  OK

NEBULA> PUT email patidarpriyansh936@gmail.com
Status:  OK

NEBULA> PUT name priyanshpatidar
Status:  OK

NEBULA> GET name
Value:  priyanshpatidar

NEBULA> DELETE email
Status:  OK

NEBULA> GET email
CACHE MISS

NEBULA> EXIT

Author Information

Contact

If you have questions or need assistance, feel free to reach out to the author:

About

An in-memory distributed key-value store with consistent hashing built using golang

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published