Skip to content

数据库技术概览

数据库专题面向后端服务、数据平台和运维场景,重点解决三类问题:业务数据如何建模和持久化,读写压力如何拆解,数据链路出现慢查询、丢失、延迟或不一致时如何定位。阅读时可以先从选型和数据生命周期建立边界,再进入具体数据库或大数据组件。

数据库选型流程

阅读路径

如果目标是支撑订单、账户、权限、支付等核心业务,先阅读 MySQLPostgreSQL,再补充索引、事务、备份恢复和高可用内容。关系型数据库仍然是大多数业务系统的主存储,优先承担强一致、结构化建模和事务提交。

如果目标是降低接口延迟、承接热点数据或做临时状态存储,阅读 Redis。Redis 适合缓存、计数器、排行榜、分布式锁、会话和轻量消息场景,但不应替代主数据库保存不可丢失的核心交易数据。

如果数据结构经常变化,或者业务对象天然是聚合文档,阅读 MongoDB。文档数据库适合内容、配置、画像、事件载荷等半结构化数据,但跨文档事务、强约束关系和复杂关联查询仍要谨慎。

如果主要诉求是搜索、日志检索和聚合分析,阅读 Elasticsearch。它适合倒排索引、全文检索、日志分析和搜索推荐,不适合作为强一致的交易主库。

如果数据以时间为主轴增长,查询经常围绕时间窗口、指标聚合和降采样展开,阅读 InfluxDB。时序数据库适合监控、物联网、设备指标、行情和链路观测。

如果问题核心是关系路径、层级追踪、相似关系或关联推理,阅读 图数据库。图数据库适合社交关系、风控网络、知识图谱、权限继承和供应链影响分析。

如果数据规模已经超出单库分析能力,或者需要批处理、流处理、离线仓库和湖仓体系,阅读 大数据技术。这部分关注从采集、存储、计算、调度到治理的完整链路。

选型边界

选型不应从产品名称开始,而应从数据形态、读写模式、一致性目标和运维能力开始。数据库选型最常见的误区,是把缓存当主库、把搜索引擎当事务库、把文档数据库当任意关系查询工具,或者在数据量尚未形成瓶颈时过早引入复杂分布式架构。

问题优先选择判断标准
核心交易、订单、账户、库存MySQL、PostgreSQL需要事务、约束、审计、备份恢复和稳定 SQL 能力
热点读取、临时状态、排行榜Redis数据可重建,访问延迟要求高,能接受内存成本
内容、配置、画像、事件载荷MongoDB字段变化快,读写多围绕单个文档聚合
搜索、日志、文本检索Elasticsearch需要分词、相关性排序、复杂过滤和聚合
监控指标、设备数据、行情InfluxDB、TimescaleDB数据按时间追加,查询围绕时间窗口和聚合函数
关系网络、路径分析、知识图谱Neo4j、JanusGraph 等图数据库查询重点是多跳关系、路径和关系权重
离线分析、报表、数据湖Spark、Flink、Kafka、HDFS、湖仓组件数据来自多个系统,需要批流处理、分层建模和调度

典型组合

大多数生产系统不是只使用一种数据库,而是围绕主存储建立配套组件。组合时要明确每个组件的数据权责,避免同一份业务事实在多个系统里同时被写入。

业务系统

text
应用服务 -> MySQL/PostgreSQL -> binlog/WAL -> Kafka -> 搜索、缓存、数仓
             |
             +-> Redis 缓存热点查询结果

关系型数据库保存权威数据,Redis 缓存可重建数据,Kafka 承接变更事件,Elasticsearch 或数据仓库用于检索和分析。应用写入链路应以主库提交为准,其他系统通过事件或同步任务异步更新。

搜索系统

商品、文章、工单、日志等场景通常使用关系型数据库保存原始记录,再将可搜索字段同步到 Elasticsearch。搜索结果只返回标识和排序信息,详情页仍回查主库或读取经过校验的缓存,避免搜索索引过期导致业务状态错误。

指标与观测

监控和设备采集链路通常由采集器写入消息队列,再进入时序数据库或日志系统。高频指标要设计保留策略、降采样规则和标签基数限制,否则存储成本和查询延迟会快速失控。

数据平台

业务库不直接承担大规模报表查询。常见做法是通过 CDC、日志或批量同步进入数据湖、数据仓库或湖仓表,再由 Spark、Flink、Trino、ClickHouse 等组件处理分析查询。调度系统负责依赖编排、补数和失败重试。

排查入口

数据库问题通常先区分是写入失败、读取变慢、数据不一致还是容量告警。不要直接从调参开始,先确认影响面和证据链。

现象优先检查常用入口
接口变慢慢 SQL、索引命中、锁等待、连接池耗尽EXPLAIN、慢查询日志、数据库连接数、应用线程栈
写入失败唯一键冲突、事务超时、磁盘空间、主从状态错误码、事务日志、磁盘监控、复制延迟
数据不一致缓存更新顺序、异步消息丢失、重复消费、读写分离延迟主库记录、缓存 TTL、消息位点、从库延迟
查询结果缺失同步任务失败、搜索索引延迟、分区裁剪错误CDC 状态、任务日志、索引刷新、分区范围
成本异常大 Key、高基数标签、历史数据未归档、索引膨胀Redis 内存分析、时序标签统计、表大小、索引大小

能力验证清单

  • 能根据业务事实表、缓存、搜索索引和分析表的不同职责拆分读写链路。
  • 能解释事务隔离级别、索引选择、锁等待和慢查询之间的关系。
  • 能为核心业务库设计备份策略,并说明 RTO、RPO、恢复演练和权限控制。
  • 能判断 Redis、Elasticsearch、MongoDB、InfluxDB、图数据库分别适合和不适合承接哪些数据。
  • 能把业务库数据进入大数据链路的方式讲清楚,包括 CDC、消息队列、离线同步、分层建模和任务调度。
别急,先让缓存热一下。