# Python Containerization Database Algorithm Rules

> 数据库算法规则

- Skill: `liaosw97/python-containerization-database-algorithm-rules` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add liaosw97/python-containerization-database-algorithm-rules`
- Raw SKILL.md: https://api.skillmd.com/api/skills/liaosw97/python-containerization-database-algorithm-rules/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: liaosw97 (https://skillmd.com/u/liaosw97)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/liaosw97/python-containerization-database-algorithm-rules

---


# 数据库算法规则

本规则集定义了在 Python 容器化应用中与数据库交互时应遵循的算法和设计原则，旨在确保数据操作的效率、可靠性和可扩展性。

## 1. 数据模型设计

- **范式化与反范式化**: 根据业务需求和查询模式，权衡数据库范式化（减少数据冗余）和反范式化（优化读取性能）的程度。
- **索引策略**: 为频繁查询的列创建合适的索引，包括单列索引、复合索引和全文索引。避免过度索引。
- **数据类型选择**: 选择最合适的数据类型，以优化存储空间和查询性能。

## 2. 查询优化

- **避免 N+1 查询**: 在 ORM 中使用 `select_related` 或 `prefetch_related` 来减少数据库查询次数。
- **批量操作**: 对于大量数据的插入、更新或删除，使用批量操作而非逐条操作，减少数据库往返次数。
- **分页查询**: 对于大数据集，始终使用分页查询，避免一次性加载所有数据导致内存溢出和性能下降。
- **避免全表扫描**: 优化查询语句，确保能够利用索引，避免不必要的全表扫描。

## 3. 事务管理

- **原子性**: 确保一组相关的数据库操作作为一个原子单元执行，要么全部成功，要么全部失败。
- **隔离级别**: 根据业务需求选择合适的事务隔离级别，以平衡数据一致性和并发性能。
- **短事务**: 尽量保持事务的简短，减少锁的持有时间，提高并发性。

## 4. 连接管理

- **连接池**: 使用数据库连接池来管理数据库连接，避免频繁地建立和关闭连接，提高效率。
- **连接复用**: 尽可能复用现有连接，减少资源消耗。

## 5. 缓存策略

- **读写分离**: 对于读多写少的应用，可以考虑读写分离，将读请求分发到只读副本。
- **应用层缓存**: 缓存频繁访问的、不经常变动的数据到应用内存或 Redis 等缓存系统中，减少数据库负载。
- **缓存失效策略**: 设计合理的缓存失效策略（如 LRU、TTL、写穿透、写回），确保数据一致性。

## 6. 错误处理与重试

- **数据库连接错误**: 妥善处理数据库连接中断、超时等错误。
- **幂等性**: 设计数据库操作为幂等的，以便在网络波动或服务重启时可以安全地重试。
- **指数退避**: 对于可重试的错误，采用指数退避策略进行重试。

## 7. 数据库迁移

- **版本控制**: 使用数据库迁移工具（如 Alembic, Django Migrations）来管理数据库 schema 的版本控制和变更。
- **自动化**: 自动化数据库迁移过程，确保开发、测试和生产环境的数据库结构一致。

