跳到正文
Elaine Blog
返回

数据存储选型:MySQL、PostgreSQL、MongoDB、ClickHouse、对象存储

MyBatis、MySQL 与数据架构

存储选型先看数据不变量和访问模式,再看团队能否可靠运维。多数业务系统以成熟关系库为默认起点更稳妥;只有明确收益超过同步、一致性和运维成本时,才引入专用存储。

Table of contents

Open Table of contents

五类候选的重心

候选擅长方向重点验证
MySQL通用 OLTP、成熟生态、复制与运维SQL/索引、事务、扩展边界
PostgreSQL丰富 SQL、类型、扩展与复杂查询团队经验、扩展治理、复制方案
MongoDB文档聚合、结构演进、按文档访问文档边界、跨文档事务、索引与膨胀
ClickHouse列式分析、聚合和高吞吐扫描写入模型、更新删除、查询并发
对象存储大文件、低成本容量、生命周期管理一致性需求、元数据、权限与删除

OLTP 是面向短事务的在线交易处理;OLAP 是面向扫描与聚合的在线分析。把分析查询直接压到核心交易库,或把逐行交易更新硬塞进分析库,都会违背存储的主要工作负载。

用六个问题做决策

  1. 必须原子维护哪些不变量?
  2. Top 查询按什么键过滤、关联、排序和聚合?
  3. 读写量、数据量、保留期和增长率是多少?
  4. 允许多旧的数据,故障时 RPO/RTO 是多少?
  5. 团队能否完成监控、备份、升级和恢复?
  6. 将来如何迁移、双写、校验与退出?

StorageAdvisor.java下载只是把工作负载映射为调查起点,它故意不返回“万能答案”。真实 ADR 应附数据规模、候选版本、实验结果和淘汰理由。

多存储架构的隐性税

每增加一种数据库,就增加驱动、账号、备份、监控、升级、值班和数据同步链路。同步又带来重复、乱序、延迟、删除传播和 Schema 演进问题。能由一个关系库加对象存储清晰解决时,不必为了“技术栈完整”引入五种系统。

最小验证应使用真实查询与数据分布,测吞吐和 P99,同时演练节点故障、恢复、扩容与版本升级。基准快但恢复不了的数据系统不能进入生产。

本阶段检查点

完成本章后,你应能从 Mapper 代理追到 JDBC 和 InnoDB,能用执行计划解释索引选择,能设计事务、恢复和迁移验证,也能说明一个存储“不适合”的边界。

下一步

当前 06.MyBatis与MySQL 阶段到此完成。按照暂停约定,本轮不进入 07.Redis与分布式缓存;恢复目标后再从 Redis 数据结构与单线程模型开始。


分享这篇文章:

上一篇
JDBC、连接池、JPA/Hibernate 与 Spring Data
下一篇
CAP、PACELC 与一致性模型