mcpField
D
database-sharding

database-sharding

github.com/aj-geddesData & databases373443 installsUpdated 34w ago
Repository

About database-sharding

A database-sharding skill covering horizontal partitioning across servers, including shard strategies, key selection, and cross-shard queries. It is intended for teams scaling database capacity or distributing tenant and geographic data.

Key features

  1. 01Range-based sharding
  2. 02Hash-based sharding
  3. 03Directory-based sharding
  4. 04Consistent hashing
  5. 05Shard-key selection
  6. 06Cross-shard query patterns

Use cases

  1. 01Scale beyond a single server's capacity
  2. 02Distribute read and write throughput
  3. 03Isolate tenant data across shards
  4. 04Distribute data geographically

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill database-sharding

After installing, type/database-shardingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
directory-based-sharding.md
hash-based-sharding.md
range-based-sharding.md
scripts/
validate-schema.sh
templates/
migration-template.sql

Details

From the project README

Database Sharding

Table of Contents

Overview

Implement horizontal data partitioning across multiple database servers. Covers sharding strategies, consistent hashing, shard key selection, and cross-shard querying patterns.

When to Use

  • Database size exceeds single server capacity
  • Read/write throughput needs horizontal scaling
  • Geographic data distribution requirements
  • Multi-tenant data isolation
  • Cost optimization through distributed architecture
  • Load balancing across database instances

Quick Start

Minimal working example:

-- Define shard ranges
-- Shard 0: user_id 0-999999
-- Shard 1: user_id 1000000-1999999
-- Shard 2: user_id 2000000-2999999

CREATE TABLE users_shard_0 (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id BIGINT NOT NULL,
  email VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  CONSTRAINT shard_0_range CHECK (user_id BETWEEN 0 AND 999999)
);

CREATE TABLE users_shard_1 (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id BIGINT NOT NULL,
  email VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  CONSTRAINT shard_1_range CHECK (user_id BETWEEN 1000000 AND 1999999)
);

-- Function to determine shard
CREATE OR REPLACE FUNCTION get_shard_id(p_user_id BIGINT)
RETURNS INT AS $$
BEGIN
// ... (see reference guides for full implementation)

Reference Guides

Detailed implementations in the references/ directory:

GuideContents
Range-Based ShardingRange-Based Sharding
Hash-Based ShardingHash-Based Sharding
Directory-Based ShardingDirectory-Based Sharding

Best Practices

✅ DO
  • Follow established patterns and conventions
  • Write clean, maintainable code
  • Add appropriate documentation
  • Test thoroughly before deploying
❌ DON'T
  • Skip testing or validation
  • Ignore error handling
  • Hard-code configuration values

Comments

Markdown supported