Skip to content

joaoflf/cauchy

Repository files navigation

 

Cauchy Logo
 
python badge build badge

Cauchy is a distributed key-value store (DKVS) built in Python, inspired by the concepts presented in Designing Data-Intensive Applications by Martin Kleppmann.

📋 Overview🎯 Features⚙️ Installation⌨️ Usage🏈 Gameplan

 

📋 Overview

Cauchy aims to be an educational implementation of a distributed key-value store, complete with an LSMTree (Log-Structured Merge Tree) storage engine. The project is meant to learn about distributed data systems, data-intensive application design, and storage engines, providing an accessible codebase to learn from and experiment with.

 

🎯 Features

  • Distributed: Scales across multiple nodes.
  • LSMTree Storage Engine: Leverages an LSMTree as storage engine for efficient data management.
  • Command Line Interface: Interact with the store using a user-friendly command line interface for both the server and client.
  • Multiple Databases: Supports the creation, deletion, selection, and listing of multiple databases.
  • Data Replication: Ensures data availability and fault tolerance by replicating data across different nodes.
  • Replica Management: Configurable roles for nodes including leader and follower for data replication.
  • Consistent Hashing: Utilizes consistent hashing for data distribution.

 

⚙️ Installation

You should have Python 3.8+ installed on your system.

python --version

Install Cauchy globally using pip:

pip install cauchy

 

⌨️ Usage

Server

Start the Cauchy server:

cauchy server --host localhost --port 65432

Client

Use the client CLI to interact with the server:

  • Connect to the server, which opens a REPL:

    cauchy connect --host localhost --port 65432
  • Once the REPL is open, you can perform the following operations:

    • Write or update a key-value pair:

      > put key value
    • Retrieve the value of a key:

      > get key
    • Delete a key:

      > delete key

 

📑 License

Distributed under the MIT License. See LICENSE for more information.

About

A Distributed Key-Value Store

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages