Distributed Storage

Explore
Distributed Storage

This project implements a distributed key-value storage system that mimics the functionality of industrial-grade databases like Amazon's DynamoDB or Google's Spanner. It focuses on providing high availability, consistency, and scalability in distributed environments. The system supports advanced features such as linearizability, sharding, multi-key updates, and dynamic load balancing, making it suitable for large-scale, high-performance data storage applications. This is my class project for CSE452 at University of Washington.

Technical details:

  • Developed in Java with Lombok for reducing boilerplate code
  • Utilizes JUnit for comprehensive unit testing
  • Incorporates Google's Guava library for additional utility functions
  • Implements the Multi-Paxos algorithm for achieving consensus in a distributed system
  • Features a multithreaded server design for concurrent client support
  • Supports sharding for horizontal scalability
  • Implements dynamic load balancing to optimize resource utilization
  • Ensures linearizability for strong consistency guarantees
  • Supports multi-key updates for atomic operations across multiple data items

The source code is not publicly available as it constitutes academic coursework. For inquiries regarding access to the source code, please contact me directly.