Skip to content

Latest commit

 

History

History
128 lines (85 loc) · 3.29 KB

README.MD

File metadata and controls

128 lines (85 loc) · 3.29 KB

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 [email protected]
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: