mcpField
D
database-sharding

database-sharding

github.com/aj-geddes数据与数据库373443 次安装34 周前更新
代码仓库

关于 database-sharding

介绍跨服务器水平拆分数据库的技能,涵盖分片策略、键选择和跨分片查询,适合需要扩展容量或分布租户及地域数据的团队。

主要功能

  1. 01范围分片
  2. 02哈希分片
  3. 03目录分片
  4. 04一致性哈希
  5. 05分片键选择
  6. 06跨分片查询模式

适用场景

  1. 01扩展单台服务器以外的容量
  2. 02分散读写吞吐量
  3. 03通过分片隔离租户数据
  4. 04按地域分布数据

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/database-sharding确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

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

详细介绍

数据库分片

目录

概述

在多个数据库服务器之间实现水平数据分区。涵盖分片策略、一致性哈希、分片键选择以及跨分片查询模式。

适用场景

  • 数据库规模超出单台服务器的容量
  • 读写吞吐量需要水平扩展
  • 需要按地理位置分布数据
  • 多租户数据隔离
  • 通过分布式架构优化成本
  • 在多个数据库实例之间进行负载均衡

快速开始

最简可用示例:

-- 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)

参考指南

references/ 目录中的详细实现:

指南内容
基于范围的分片基于范围的分片
基于哈希的分片基于哈希的分片
基于目录的分片基于目录的分片

最佳实践

✅ 应该
  • 遵循既定模式和惯例
  • 编写整洁、易维护的代码
  • 添加适当的文档
  • 部署前进行充分测试
❌ 不应该
  • 跳过测试或验证
  • 忽略错误处理
  • 将配置值硬编码

评论

支持 Markdown