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
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.
- 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.
You should have Python 3.8+ installed on your system.
python --version
Install Cauchy globally using pip:
pip install cauchy
Start the Cauchy server:
cauchy server --host localhost --port 65432
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
-
Distributed under the MIT License. See LICENSE
for more information.