⚠️ DRAFT IMPLEMENTATION⚠️ This is an early draft implementation of the Shard Manager framework. The code is not yet ready for production use and may contain bugs or incomplete features. Use at your own risk.
A distributed shard management service providing efficient and reliable shard management capabilities, based on the research paper "Shard Manager: A Generic Shard Management Framework for Geo-distributed Applications" (SIGMOD '21).
The Shard Manager is a service that helps manage and coordinate shards in distributed systems. It provides a gRPC-based API for shard management operations and uses PostgreSQL for persistent storage. This implementation is based on the research paper published in SIGMOD '21, which presents a generic framework for managing shards in geo-distributed applications.
This project implements concepts from the paper: "Shard Manager: A Generic Shard Management Framework for Geo-distributed Applications" Published in: SIGMOD '21 DOI: 10.1145/3477132.3483546
- Go 1.23.0 or later
- PostgreSQL
- Protocol Buffers compiler (protoc)
- Go plugins for Protocol Buffers
- Clone the repository:
git clone https://github.com/seaweedfs/shardmanager.git
cd shardmanager
- Install dependencies:
go mod download
- Generate Protocol Buffer code:
make proto
To build the project:
make build
Run the test suite:
make test
cmd/
- Command-line applicationsserver/
- Server implementationshardmanagerpb/
- Generated Protocol Buffer codedb/
- Database-related codeshardmanager.proto
- Protocol Buffer definitionsschema.sql
- Database schema
The project uses Protocol Buffers for API definitions. To regenerate the Protocol Buffer code:
make proto
- Create a PostgreSQL database
- Run the schema.sql file to set up the database schema:
psql -d your_database_name -f schema.sql
This project is licensed under the terms of the included LICENSE file.
Contributions are welcome! Please feel free to submit a Pull Request.