Files
gym-manage/docs/02-ARCHITECTURE/架构决策记录/ADR-003-数据库选型.md
T
张翔 35dc950e4f docs: 创建架构决策记录(ADR)
- ADR-001: 单体应用架构选型
- ADR-002: 响应式编程选型
- ADR-003: 数据库选型
- 记录架构决策的背景、理由、影响和演进路径
2026-04-04 14:08:53 +08:00

2.8 KiB
Raw Blame History

ADR-003: 数据库选型

文档编号: GYM-ADR-003
版本: v1.0
日期: 2026-03-04
作者: 张翔
状态: 已采纳


状态

已采纳


决策时间

2026-03-04


决策背景

健身房管理系统需要选择合适的关系型数据库,支持响应式编程模型,满足业务需求和性能要求。


决策内容

选择 PostgreSQL 作为主数据库,而非 MySQL、Oracle 或 SQL Server。


决策理由

1. R2DBC支持完善

数据库 R2DBC支持 成熟度 社区活跃度
PostgreSQL 完全支持
MySQL 完全支持
Oracle ⚠️ 支持有限
SQL Server ⚠️ 支持有限

2. 金融级数据库

  • ACID事务支持完善
  • 数据可靠性高
  • 适合金融支付场景

3. JSONB支持

  • 灵活存储配置数据
  • 支持复杂查询
  • 减少表关联

4. 全文搜索

  • 内置全文搜索功能
  • 支持中文分词
  • 减少对Elasticsearch的依赖

5. 社区活跃

  • 文档完善
  • 问题解决快
  • 生态成熟

替代方案

MySQL

优势

  • 社区活跃
  • 文档丰富
  • 运维简单

劣势

  • JSON支持不如PostgreSQL
  • 全文搜索功能较弱
  • 事务隔离级别支持有限

不选择原因

  • JSONB功能不如PostgreSQL
  • 全文搜索需要额外组件

Oracle

优势

  • 企业级特性完善
  • 性能优秀
  • 技术支持好

劣势

  • 商业数据库,成本高
  • R2DBC支持有限
  • 学习曲线陡峭

不选择原因

  • 成本过高
  • R2DBC支持不完善

影响范围

  • 数据库设计
  • SQL编写方式
  • 性能优化
  • 运维管理

后果

正面影响

  • R2DBC支持完善,响应式编程无缝集成
  • JSONB功能强大,配置管理灵活
  • 全文搜索内置,减少组件依赖
  • 金融级可靠性,数据安全有保障

负面影响

  • ⚠️ 团队需要学习PostgreSQL特性
  • ⚠️ 运维工具与MySQL不同
  • ⚠️ 部分ORM工具支持不如MySQL

技术栈

核心组件

  • PostgreSQL: 15.x
  • R2DBC PostgreSQL: 1.0.0.RELEASE
  • Spring Data R2DBC: 3.2.x

连接池

  • R2DBC Pool: 连接池管理
  • 配置: 最小连接数10,最大连接数50

监控

  • PostgreSQL Exporter: Prometheus监控
  • pg_stat_statements: 慢查询分析

相关文档


参考资料

  • PostgreSQL官方文档
  • R2DBC PostgreSQL驱动文档
  • PostgreSQL性能优化指南