Skip to content

数据库技术栈

核心原则

数据库设计和操作必须使用本文档指定的技术栈,确保数据一致性和性能。

技术栈清单

MySQL 8.0+

版本要求:8.0 或更高

技术特点

  • 成熟稳定的关系型数据库
  • 丰富的特性(事务、索引、外键)
  • 优秀的性能和社区支持
  • 与 GORM 完美集成
  • 企业级应用的主流选择

核心特性

  • ACID 事务支持
  • InnoDB 存储引擎
  • 索引优化(B-Tree、全文索引)
  • JSON 数据类型支持
  • 分区表支持

使用约束

  • 必须使用 InnoDB 存储引擎
  • 必须为关联字段创建外键(除非有性能考虑)
  • 应该为高频查询字段创建索引
  • 应该使用事务保证数据一致性
  • 禁止使用 MyISAM 存储引擎

参考文档数据库设计


InnoDB 存储引擎

版本要求:MySQL 8.0 默认

技术特点

  • 支持事务(ACID)
  • 支持外键约束
  • 支持行级锁,并发性能好
  • 自动崩溃恢复

使用约束

  • 必须使用 InnoDB(MySQL 8.0 的默认引擎)
  • 禁止使用 MyISAM(不支持事务和外键)

GORM AutoMigrate(数据库迁移)

版本要求:GORM v1.31

使用场景:开发环境自动迁移

核心特性

  • 自动创建表结构
  • 自动更新字段
  • 保留现有数据

使用约束

  • 应该在开发环境使用 AutoMigrate
  • 禁止在生产环境直接使用 AutoMigrate
  • 应该为生产环境编写独立的迁移脚本
  • 必须在迁移前备份数据

参考文档数据库迁移


数据库命名规范

表名

规范

  • 必须使用小写单数名词 + 下划线分隔
  • 应该使用英文单词,避免拼音
  • 示例:user, order_item, product_category

字段名

规范

  • 必须使用小写 + 下划线分隔
  • 应该见名知意
  • 示例:user_id, created_at, updated_at

索引名

规范

  • 必须使用 idx_表名_字段名 格式(普通索引)
  • 必须使用 uk_表名_字段名 格式(唯一索引)
  • 示例:idx_user_email, uk_user_username

外键名

规范

  • 必须使用 fk_从表_主表_字段 格式
  • 示例:fk_order_user_user_id

参考文档数据库命名规范


数据库设计规范

字段类型选择

常用字段类型

数据类型选用类型说明
主键BIGINT UNSIGNED使用自增 ID 或雪花算法
字符串VARCHAR(n)n 根据实际需求设置
文本TEXT长文本内容
布尔值TINYINT(1)0 或 1
时间DATETIME精确到秒
时间戳BIGINTUnix 时间戳(毫秒)
金额DECIMAL(10,2)避免浮点数精度问题

使用约束

  • 必须为主键字段设置 AUTO_INCREMENT(自增 ID)
  • 应该为所有表添加 created_atupdated_at 字段
  • 应该使用 deleted_at 实现软删除
  • 禁止使用 FLOAT 或 DOUBLE 存储金额

索引设计

原则

  • 应该为外键字段创建索引
  • 应该为高频查询字段创建索引
  • 应该为联合查询创建联合索引
  • 避免创建过多索引(影响写入性能)

事务使用

使用约束

  • 必须使用事务处理多表操作
  • 应该使用事务保证数据一致性
  • 应该合理控制事务范围,避免长事务

参考文档数据库设计


技术栈关系图


开发工具

MySQL Workbench

用途:数据库设计和管理

使用约束

  • 应该使用 MySQL Workbench 设计 ER 图
  • 应该使用可视化工具管理数据库

数据库版本管理

工具:GORM AutoMigrate 或独立迁移脚本

使用约束

  • 必须版本化管理数据库结构变更
  • 应该为每次迁移编写回滚脚本

性能优化

查询优化

原则

  • 应该使用 EXPLAIN 分析查询计划
  • 应该避免 SELECT *,只查询需要的字段
  • 应该使用 JOIN 代替子查询(性能更好)
  • 避免在 WHERE 条件中使用函数(导致索引失效)

连接池配置

使用约束

  • 应该配置合理的连接池大小
  • 应该设置连接超时时间
  • 应该定期回收空闲连接

备份和恢复

备份策略

  • 必须定期备份生产数据库
  • 应该使用增量备份(节省存储空间)
  • 应该定期测试备份恢复流程

相关文档