mcpField
D
databases

databases

github.com/jackspace数据与数据库1639 次安装12 周前更新
代码仓库

关于 databases

databases 是 MongoDB 和 PostgreSQL 的统一指南,面向设计、查询和维护数据库的开发者与管理员。它提供数据库选型建议、常见操作参考,以及迁移、备份和性能检查脚本。

主要功能

  1. 01比较 MongoDB 与 PostgreSQL 的适用场景
  2. 02参考查询、索引和数据建模方法
  3. 03涵盖迁移、复制与备份管理
  4. 04提供迁移和备份恢复脚本
  5. 05检查慢查询并建议索引

适用场景

  1. 01根据数据模型和一致性需求选择数据库
  2. 02编写 SQL 或 MongoDB 查询
  3. 03迁移数据库并备份生产数据
  4. 04排查慢查询并优化索引

安装

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

$npx skills add https://github.com/jackspace/claudeskillz --skill databases

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

附带文件SKILL.json

详细介绍

数据库技能

MongoDB(面向文档)和 PostgreSQL(关系型)数据库的统一指南。根据使用场景选择合适的数据库,并掌握这两种系统。

何时使用此技能

适用于:

  • 设计数据库架构和数据模型
  • 编写查询(SQL 或 MongoDB 查询语言)
  • 构建聚合管道或复杂联接
  • 优化索引和查询性能
  • 实施数据库迁移
  • 设置复制、分片或集群
  • 配置备份和灾难恢复
  • 管理数据库用户和权限
  • 分析慢查询和性能问题
  • 管理生产环境中的数据库部署

数据库选择指南

选择 MongoDB 的情况:
  • 架构灵活性:结构频繁变化、数据异构
  • 以文档为中心:天然适配 JSON/BSON 数据模型
  • 横向扩展:需要跨多台服务器进行分片
  • 高写入吞吐量:IoT、日志记录、实时分析
  • 嵌套/层级数据:更适合使用嵌入式文档
  • 快速原型开发:无需迁移即可演进架构

最适用于: 内容管理、目录、IoT 时间序列、实时分析、移动应用、用户资料

选择 PostgreSQL 的情况:
  • 强一致性:ACID 事务至关重要
  • 复杂关系:多对多联接、引用完整性
  • 需要 SQL:团队专业知识、报告工具、BI 系统
  • 数据完整性:严格的架构验证和约束
  • 成熟的生态系统:丰富的工具和扩展
  • 复杂查询:窗口函数、CTE、分析型工作负载

最适用于: 金融系统、电商交易、ERP、CRM、数据仓库、分析

两者均支持:
  • JSON/JSONB 存储和查询
  • 全文搜索功能
  • 地理空间查询和索引
  • 复制和高可用性
  • ACID 事务(MongoDB 4.0+)
  • 强大的安全功能

快速开始

MongoDB 设置
# Atlas (Cloud) - Recommended
# 1. Sign up at mongodb.com/atlas
# 2. Create M0 free cluster
# 3. Get connection string

# SECURITY WARNING: Never hardcode credentials in connection strings
# Use environment variables instead:
# mongodb+srv://${DB_USERNAME}:${DB_PASSWORD}@cluster.mongodb.net/db
# Or use connection string from MongoDB Atlas without embedding credentials

# Connection (template - replace with env vars)
mongodb+srv://user:[email protected]/db

# Shell
mongosh "mongodb+srv://cluster.mongodb.net/mydb"

# Basic operations
db.users.insertOne({ name: "Alice", age: 30 })
db.users.find({ age: { $gte: 18 } })
db.users.updateOne({ name: "Alice" }, { $set: { age: 31 } })
db.users.deleteOne({ name: "Alice" })
PostgreSQL 设置
# Ubuntu/Debian
sudo apt-get install postgresql postgresql-contrib

# Start service
sudo systemctl start postgresql

# Connect
psql -U postgres -d mydb

# Basic operations
CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT, age INT);
INSERT INTO users (name, age) VALUES ('Alice', 30);
SELECT * FROM users WHERE age >= 18;
UPDATE users SET age = 31 WHERE name = 'Alice';
DELETE FROM users WHERE name = 'Alice';

常见操作

创建/插入
// MongoDB
db.users.insertOne({ name: "Bob", email: "[email protected]" })
db.users.insertMany([{ name: "Alice" }, { name: "Charlie" }])
-- PostgreSQL
INSERT INTO users (name, email) VALUES ('Bob', '[email protected]');
INSERT INTO users (name, email) VALUES ('Alice', NULL), ('Charlie', NULL);
读取/查询
// MongoDB
db.users.find({ age: { $gte: 18 } })
db.users.findOne({ email: "[email protected]" })
-- PostgreSQL
SELECT * FROM users WHERE age >= 18;
SELECT * FROM users WHERE email = '[email protected]' LIMIT 1;
更新
// MongoDB
db.users.updateOne({ name: "Bob" }, { $set: { age: 25 } })
db.users.updateMany({ status: "pending" }, { $set: { status: "active" } })
-- PostgreSQL
UPDATE users SET age = 25 WHERE name = 'Bob';
UPDATE users SET status = 'active' WHERE status = 'pending';
删除
// MongoDB
db.users.deleteOne({ name: "Bob" })
db.users.deleteMany({ status: "deleted" })
-- PostgreSQL
DELETE FROM users WHERE name = 'Bob';
DELETE FROM users WHERE status = 'deleted';
索引
// MongoDB
db.users.createIndex({ email: 1 })
db.users.createIndex({ status: 1, createdAt: -1 })
-- PostgreSQL
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_status_created ON users(status, created_at DESC);

参考指南

MongoDB 参考
PostgreSQL 参考

Python 实用工具

scripts/ 中的数据库实用脚本:

  • db_migrate.py - 为两种数据库生成并应用迁移
  • db_backup.py - 备份和恢复 MongoDB 与 PostgreSQL
  • db_performance_check.py - 分析慢查询并推荐索引
# Generate migration
python scripts/db_migrate.py --db mongodb --generate "add_user_index"

# Run backup
python scripts/db_backup.py --db postgres --output /backups/

# Check performance
python scripts/db_performance_check.py --db mongodb --threshold 100ms

主要差异总结

特性MongoDBPostgreSQL
数据模型文档(JSON/BSON)关系型(表/行)
架构灵活、动态严格、预定义
查询语言MongoDB 查询语言SQL
联接$lookup(有限)原生支持,经过优化
事务多文档(4.0+)原生 ACID
扩展横向(分片)纵向(主),横向(扩展)
索引单字段、复合、文本、地理空间等B-tree、hash、GiST、GIN 等

最佳实践

MongoDB:

  • 对一对少关系使用嵌入式文档
  • 对一对多或多对多关系使用文档引用
  • 为经常查询的字段创建索引
  • 使用聚合管道进行复杂转换
  • 在生产环境中启用身份验证和 TLS
  • 使用 Atlas 托管服务

PostgreSQL:

  • 将架构规范化至 3NF,并在需要提升性能时进行反规范化
  • 使用外键确保引用完整性
  • 为外键和经常用于筛选的列创建索引
  • 使用 EXPLAIN ANALYZE 优化查询
  • 定期执行 VACUUM 和 ANALYZE 维护操作
  • Web 应用使用连接池(pgBouncer)

资源

评论

支持 Markdown