Python Containerization Database Algorithm Rules

数据库算法规则

liaosw97 Updated

File contents

数据库算法规则

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

1. 数据模型设计

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

2. 查询优化

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

3. 事务管理

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

4. 连接管理

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

5. 缓存策略

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

6. 错误处理与重试

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

7. 数据库迁移

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

liaosw97/awesome-rules-skills/tree/main/plugins/docker/skills/python-containerization-database-algorithm-rules commit 9d2d0355e7

Frequently asked questions

npx skillmds@latest add liaosw97/python-containerization-database-algorithm-rules