数据库选型

数据库选型从数据模型与访问模式出发:关系型适合事务与复杂查询,文档型适合聚合读写的半结构化数据,宽列适合海量写入,图库适合多跳关系;再叠加一致性与运维要求。

数据库选型是什么

数据库选型的起点是数据模型与访问模式,而不是产品热度:关系型适合强事务与多表关联查询,文档型适合以聚合为单位读写的半结构化数据,宽列适合海量顺序写入与按行键查询,图数据库适合多跳关系遍历。确定类型之后再叠加一致性等级、扩展方式、团队运维能力与成本约束,最后用贴近生产规模的数据做基准验证,而不是靠功能演示下结论。

基本信息

选型输入数据模型、读写比例、一致性要求、数据规模与增长速度
硬约束事务边界、查询模式、可用性目标、合规与数据驻留要求
配套能力备份恢复、监控告警、扩容路径、团队既有经验
验证方式用同量级数据做 PoC,量化 P99 延迟与写入吞吐

典型使用场景

  • 交易与账务:多表关联、强事务,优先关系型并明确隔离级别
  • 内容与目录:整篇聚合读写、结构多变,文档型更贴合存取路径
  • 时序与日志:写入量大、按时间与行键扫描,宽列或专用时序库更合适
  • 关系网络:好友推荐、风控关联、多跳遍历,图库比递归 SQL 更直接
  • 全文与多条件检索:把检索交给搜索引擎,源数据仍留在主库
  • 分析与报表:列式存储或独立只读仓库,避免压榨在线库

选型问题清单

选型问题清单
# 1 访问模式:主键查询、范围扫描、聚合、多跳,各占多少比例
# 2 事务范围:单行、单表还是跨表跨库,能否接受最终一致
# 3 规模假设:三年后的行数与日写入量,分片键是否已确定
# 4 一致性:读己之写是否必须,跨区域复制能否接受延迟
# 5 运维代价:备份窗口、版本升级、故障切换由谁负责
# 6 退出成本:导出格式是否通用,迁移脚本是否已演练过

类型与取舍

类型数据特征典型场景常见坑
关系型强事务、多表关联交易、账务、订单单库扛不住写时改造代价高
文档型半结构化聚合读写内容、目录、配置跨文档事务弱,一致性靠应用保证
宽列海量写入、按行键查询时序、日志、消息归档查询模式受限,二级索引设计不当会拖慢
图多跳关系遍历风控关系网、推荐超大规模下的分片与跨片遍历复杂
先明确一致性与查询模式再选类型:用产品热度做对比维度,很容易选出与业务访问路径不匹配的库,后期靠应用层补丁硬撑。
多存储并用是常态,但要限制种类:每引入一种数据库,就多一套备份、监控、升级与值守流程,团队规模撑不住时应先合并同类项。

易错点

  • 按热度或社区口碑选型,忽略访问模式:上线后大量查询需要应用层拼接
  • 忽略团队运维能力:库上线了却没人会调优、扩缩容与故障恢复
  • 只测功能不做基准:小数据集跑通就下结论,真实规模下延迟与吞吐不达标
  • 把最终一致当作默认假设:金额、库存等场景出现账实不符后才回头补强事务

数据来源与参考

  • 《数据密集型应用系统设计》(Kleppmann)第 2 章
  • AWS 架构中心:数据库选型指南
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌