File contents 数据库算法规则
本规则集定义了在 Python 容器化应用中与数据库交互时应遵循的算法和设计原则,旨在确保数据操作的效率、可靠性和可扩展性。
1. 数据模型设计
范式化与反范式化 : 根据业务需求和查询模式,权衡数据库范式化(减少数据冗余)和反范式化(优化读取性能)的程度。
索引策略 : 为频繁查询的列创建合适的索引,包括单列索引、复合索引和全文索引。避免过度索引。
数据类型选择 : 选择最合适的数据类型,以优化存储空间和查询性能。
2. 查询优化
避免 N+1 查询 : 在 ORM 中使用 select_related 或 prefetch_related 来减少数据库查询次数。
批量操作 : 对于大量数据的插入、更新或删除,使用批量操作而非逐条操作,减少数据库往返次数。
分页查询 : 对于大数据集,始终使用分页查询,避免一次性加载所有数据导致内存溢出和性能下降。
避免全表扫描 : 优化查询语句,确保能够利用索引,避免不必要的全表扫描。
3. 事务管理
原子性 : 确保一组相关的数据库操作作为一个原子单元执行,要么全部成功,要么全部失败。
隔离级别 : 根据业务需求选择合适的事务隔离级别,以平衡数据一致性和并发性能。
短事务 : 尽量保持事务的简短,减少锁的持有时间,提高并发性。
4. 连接管理
连接池 : 使用数据库连接池来管理数据库连接,避免频繁地建立和关闭连接,提高效率。
连接复用 : 尽可能复用现有连接,减少资源消耗。
5. 缓存策略
读写分离 : 对于读多写少的应用,可以考虑读写分离,将读请求分发到只读副本。
应用层缓存 : 缓存频繁访问的、不经常变动的数据到应用内存或 Redis 等缓存系统中,减少数据库负载。
缓存失效策略 : 设计合理的缓存失效策略(如 LRU、TTL、写穿透、写回),确保数据一致性。
6. 错误处理与重试
数据库连接错误 : 妥善处理数据库连接中断、超时等错误。
幂等性 : 设计数据库操作为幂等的,以便在网络波动或服务重启时可以安全地重试。
指数退避 : 对于可重试的错误,采用指数退避策略进行重试。
7. 数据库迁移
版本控制 : 使用数据库迁移工具(如 Alembic, Django Migrations)来管理数据库 schema 的版本控制和变更。
自动化 : 自动化数据库迁移过程,确保开发、测试和生产环境的数据库结构一致。
1 --- 2 name: python-containerization-database-algorithm-rules 3 description: 数据库算法规则 4 --- 5 6 # 数据库算法规则 7 8 本规则集定义了在 Python 容器化应用中与数据库交互时应遵循的算法和设计原则,旨在确保数据操作的效率、可靠性和可扩展性。 9 10 ## 1. 数据模型设计 11 12 - **范式化与反范式化**: 根据业务需求和查询模式,权衡数据库范式化(减少数据冗余)和反范式化(优化读取性能)的程度。 13 - **索引策略**: 为频繁查询的列创建合适的索引,包括单列索引、复合索引和全文索引。避免过度索引。 14 - **数据类型选择**: 选择最合适的数据类型,以优化存储空间和查询性能。 15 16 ## 2. 查询优化 17 18 - **避免 N+1 查询**: 在 ORM 中使用 `select_related` 或 `prefetch_related` 来减少数据库查询次数。 19 - **批量操作**: 对于大量数据的插入、更新或删除,使用批量操作而非逐条操作,减少数据库往返次数。 20 - **分页查询**: 对于大数据集,始终使用分页查询,避免一次性加载所有数据导致内存溢出和性能下降。 21 - **避免全表扫描**: 优化查询语句,确保能够利用索引,避免不必要的全表扫描。 22 23 ## 3. 事务管理 24 25 - **原子性**: 确保一组相关的数据库操作作为一个原子单元执行,要么全部成功,要么全部失败。 26 - **隔离级别**: 根据业务需求选择合适的事务隔离级别,以平衡数据一致性和并发性能。 27 - **短事务**: 尽量保持事务的简短,减少锁的持有时间,提高并发性。 28 29 ## 4. 连接管理 30 31 - **连接池**: 使用数据库连接池来管理数据库连接,避免频繁地建立和关闭连接,提高效率。 32 - **连接复用**: 尽可能复用现有连接,减少资源消耗。 33 34 ## 5. 缓存策略 35 36 - **读写分离**: 对于读多写少的应用,可以考虑读写分离,将读请求分发到只读副本。 37 - **应用层缓存**: 缓存频繁访问的、不经常变动的数据到应用内存或 Redis 等缓存系统中,减少数据库负载。 38 - **缓存失效策略**: 设计合理的缓存失效策略(如 LRU、TTL、写穿透、写回),确保数据一致性。 39 40 ## 6. 错误处理与重试 41 42 - **数据库连接错误**: 妥善处理数据库连接中断、超时等错误。 43 - **幂等性**: 设计数据库操作为幂等的,以便在网络波动或服务重启时可以安全地重试。 44 - **指数退避**: 对于可重试的错误,采用指数退避策略进行重试。 45 46 ## 7. 数据库迁移 47 48 - **版本控制**: 使用数据库迁移工具(如 Alembic, Django Migrations)来管理数据库 schema 的版本控制和变更。 49 - **自动化**: 自动化数据库迁移过程,确保开发、测试和生产环境的数据库结构一致。
liaosw97/awesome-rules-skills/tree/main/plugins/docker/skills/python-containerization-database-algorithm-rules commit 9d2d0355e7
Frequently asked questions How do I install the Python Containerization Database Algorithm Rules skill? Run npx skillmds@latest add liaosw97/python-containerization-database-algorithm-rules in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Python Containerization Database Algorithm Rules skill do? 数据库算法规则 It is listed under DevOps & Infra on SkillMD.
Is Python Containerization Database Algorithm Rules safe to use? This skill has not completed SkillMD's automated safety review yet. Capability flags: docs only. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Python Containerization Database Algorithm Rules? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Python Containerization Database Algorithm Rules free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Python Containerization Database Algorithm Rules? liaosw97 (@liaosw97) published this skill. Their other Agent Skills are listed on their SkillMD profile.