关于 database-sharding
介绍跨服务器水平拆分数据库的技能,涵盖分片策略、键选择和跨分片查询,适合需要扩展容量或分布租户及地域数据的团队。
主要功能
- 01范围分片
- 02哈希分片
- 03目录分片
- 04一致性哈希
- 05分片键选择
- 06跨分片查询模式
适用场景
- 01扩展单台服务器以外的容量
- 02分散读写吞吐量
- 03通过分片隔离租户数据
- 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.mdhash-based-sharding.mdrange-based-sharding.mdscripts/validate-schema.shtemplates/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