01. 数据库系统概述与分类

数据库系统全景:关系型、NoSQL、NewSQL、时序数据库分类,OLTP vs OLAP 差异,以及数据库选型决策树。

1. 数据库分类全景

现代数据库生态已经形成了极为丰富的产品矩阵。从上世纪七十年代的层次与网状模型,到关系模型的诞生,再到二十一世纪初 NoSQL 运动的兴起,以及近年来 NewSQL、多模型数据库和向量数据库的涌现,数据库技术持续演进,以应对不同场景对数据规模、访问模式和一致性要求的多样性挑战。

当前主流的数据库可按数据模型划分为以下七大类别:

数据库系统
  ├── 关系型数据库 (RDBMS)
  │     ├── 商业:Oracle、SQL Server、DB2
  │     ├── 开源:PostgreSQL、MySQL、MariaDB
  │     └── 特点:ACID、SQL、强一致性、成熟生态
  │
  ├── NoSQL 数据库
  │     ├── 文档型:MongoDB、CouchDB、Firestore
  │     ├── 键值型:Redis、DynamoDB、Riak
  │     ├── 列族型:Cassandra、HBase、ScyllaDB
  │     ├── 图数据库:Neo4j、Dgraph、JanusGraph
  │     └── 搜索引擎:Elasticsearch、OpenSearch
  │
  ├── NewSQL 数据库
  │     ├── Google Spanner、CockroachDB、TiDB、YugabyteDB
  │     └── 特点:水平扩展 + ACID + SQL 兼容
  │
  ├── 时序数据库
  │     ├── InfluxDB、TimescaleDB、TDengine、IoTDB
  │     └── 特点:高吞吐写入、时间序列索引、降采样
  │
  ├── 向量数据库
  │     ├── Pinecone、Milvus、Weaviate、pgvector、Qdrant
  │     └── 特点:高维向量索引、相似度搜索、AI  embeddings
  │
  └── 专用数据库
        ├── 内存数据库:Redis、SAP HANA、MemSQL
        └── 嵌入式数据库:SQLite、RocksDB、LevelDB

关系型数据库(RDBMS)至今仍是企业业务系统的核心底座,凭借其成熟的事务机制、丰富的查询能力和完善的生态工具链,在金融、电信、政务等关键行业占据主导地位。PostgreSQL 和 MySQL 作为开源双雄,分别在功能深度与部署广度上各领风骚。文档型数据库以 MongoDB 为代表,通过灵活的 JSON 文档模型消除了对象关系映射的阻抗,特别适合内容管理、产品目录和快速迭代的互联网应用。键值型数据库追求极致的读写性能,Redis 以内存存储引擎支撑了缓存、会话管理和实时排行榜等高频场景,而 DynamoDB 则依托云原生设计实现了全局分布式键值存储。列族型数据库面向海量分布式写入优化,Cassandra 和 HBase 在日志存储、物联网数据采集和大数据平台中广泛应用。图数据库则将数据建模为节点与边的关系网络,天然契合社交网络分析、知识图谱构建和反欺诈等场景。时序数据库和向量数据库则是近年来随着物联网与人工智能浪潮而崛起的专用引擎,分别在监控指标存储和大模型 embeddings 检索领域开辟了新战场。

2. ACID 与 BASE 一致性模型对比

分布式数据库的设计哲学在很大程度上受到一致性模型的影响。传统关系型数据库遵循 ACID 原则,而许多 NoSQL 系统则拥抱 BASE 模型,两者之间并非简单的优劣之分,而是针对不同的业务诉求作出的工程权衡。

ACID 包含四个核心属性:原子性(Atomicity)确保事务中的操作要么全部成功要么全部回滚,不会出现中间状态;一致性(Consistency)保证事务执行前后数据库始终处于合法状态,所有约束和规则均得到满足;隔离性(Isolation)使并发事务的执行效果等同于某种串行顺序,避免脏读、不可重复读和幻读等问题;持久性(Durability)承诺一旦事务提交,数据将永久保存,即使系统崩溃也不会丢失。这四个属性共同构成了银行转账、订单支付等关键业务场景的信任基石。

BASE 则是面向高可用分布式系统的另一种设计范式:基本可用(Basically Available)意味着系统在分区故障时仍能响应部分请求;软状态(Soft State)允许节点间数据存在暂时的不一致;最终一致性(Eventual Consistency)保证在没有新更新的情况下,所有副本终将收敛到同一值。BASE 模型通过放宽强一致性要求,换取了更高的可用性、更大的分区容错能力和更优的水平扩展性。

维度ACIDBASE
一致性强度强一致性,事务结束立即可见最终一致性,存在短暂不一致窗口
可用性表现分区时可能拒绝服务分区时优先保证可用性
典型延迟毫秒级,含锁等待与两阶段提交开销微秒至毫秒级,异步复制
适合场景金融交易、库存扣减、订单状态机社交网络 feed、点赞计数、推荐结果
代表系统PostgreSQL、Oracle、TiDB、SpannerCassandra、DynamoDB、Couchbase
容错策略故障时回滚或阻塞故障时降级并异步修复

在实际工程中,许多现代数据库不再严格二选一,而是提供可调的一致性级别。例如 Cassandra 支持 ONE、QUORUM、ALL 等多种读写一致性级别,TiDB 和 CockroachDB 则在分布式架构下实现了可串行化的 ACID 事务,将两种模型的优势融合于同一平台。

3. CAP 定理实践解读

CAP 定理指出,在一个分布式数据存储系统中,一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)这三个属性无法同时完全满足,系统设计者最多只能同时保证其中两项。由于网络分区在分布式环境中不可避免,因此实际上是在 CP 和 AP 之间的权衡,CA 组合仅在单机或具有绝对可靠网络的系统中成立。

CP 系统选择在发生网络分区时牺牲可用性以维持强一致性。这类系统适用于数据准确性不容妥协的场景,例如银行账户余额、库存核心账本。ZooKeeper 和 etcd 是典型的 CP 键值存储,它们采用共识算法保证集群状态的一致性,但在leader 选举或多数节点不可用期间会拒绝写入请求。Google Spanner 和 CockroachDB 也属于 CP 阵营,通过全局时钟和分布式事务协议实现了外部一致性。

AP 系统则选择在分区时优先保证可用性,容忍暂时的数据不一致。这类系统适合对可用性要求极高、短暂不一致可接受的业务,例如电商商品浏览页、社交媒体内容流。Cassandra 和 DynamoDB 是 AP 架构的代表,它们允许任意可用节点响应读写请求,待网络恢复后再通过反熵机制或读取修复来同步数据差异。

CA 分类在理论上存在争议,因为严格意义上的 CA 系统无法应对网络分区。但在实践中,传统单机或共享磁盘架构的关系型数据库(如单机 PostgreSQL、Oracle RAC)被近似归入 CA 范畴——它们在本地网络内同时提供强一致性和高可用性,但一旦跨数据中心网络中断,整个系统将失去分区容错能力。

类型系统示例核心取舍典型场景
CPetcd、ZooKeeper、Spanner、CockroachDB分区时拒写保一致配置中心、金融核心、分布式锁
APCassandra、DynamoDB、CouchDB分区时继续服务内容分发、会话缓存、边缘写入
CA单机 RDBMS、Oracle RAC依赖可靠网络单体应用、中小规模企业系统

4. OLTP vs OLAP vs HTAP

数据库按工作负载类型可划分为事务处理(OLTP)、分析处理(OLAP)以及混合事务分析处理(HTAP)三大范式。理解它们之间的差异对于数据架构设计至关重要。

OLTP 系统面向日常业务操作,处理大量短事务和点查请求。其核心特征是低延迟、高并发和频繁的增删改操作。在 OLTP 场景中,一笔下单请求可能涉及订单表插入、库存表扣减和日志表写入,所有操作必须在毫秒级内完成并保证 ACID 语义。MySQL、PostgreSQL 和 Oracle 等经典关系型数据库是 OLTP 的主力。

OLAP 系统则面向数据分析、报表生成和商业智能。其查询模式以复杂聚合、大范围扫描和多表 JOIN 为主,单次查询可能涉及数十亿行数据。为了优化这类工作负载,OLAP 数据库普遍采用列式存储、向量化执行和智能物化视图等技术。ClickHouse、Apache Doris 和 Snowflake 是 OLAP 领域的明星产品。

维度OLTP(在线事务处理)OLAP(在线分析处理)
用途日常业务操作、交易系统数据分析、报表、决策支持
数据规模GB ~ TBTB ~ PB
查询模式点查、短事务、少量行全表扫描、聚合、多表 JOIN
写入方式高并发随机写入、行级更新批量导入、ETL、追加为主
更新频率频繁 UPDATE/DELETEmostly 追加(Append-only)
响应时间毫秒级秒 ~ 分钟级
存储格式行式存储、B+ 树索引列式存储、压缩编码、倒排索引
代表产品MySQL、PostgreSQL、OracleClickHouse、Snowflake、BigQuery、Doris

HTAP 是近年来兴起的新范式,旨在打破 OLTP 与 OLAP 之间的数据壁垒。传统架构中,业务数据通过 ETL 管道从 OLTP 数据库定期导入数据仓库,存在延迟高、链路复杂和数据一致性问题。HTAP 数据库通过行列混存、资源隔离和实时复制技术,在同一系统中同时支撑事务处理和分析查询,无需额外的数据搬运。TiDB(TiFlash 列存引擎)、SingleStore 和 Oracle HeatWave 是 HTAP 理念的优秀实践者,它们让运营人员可以在交易发生的下一秒就获得实时业务洞察,极大缩短了决策反馈周期。

5. NoSQL 选型指南

NoSQL 数据库牺牲了部分 SQL 通用性和强一致性,换来了数据模型的灵活性和水平扩展的便利性。不同类型的 NoSQL 产品对应迥异的访问模式,选型时需要从数据模型、一致性需求和查询模式三个维度切入。

文档型数据库将数据组织为自描述的 JSON 或 BSON 文档,无需预定义严格模式,非常适合数据结构频繁演化的应用场景。MongoDB 凭借其强大的聚合管道、分片集群和事务支持,已成为文档类型的绝对主导者。内容管理系统、产品目录、游戏用户档案和移动应用后端是文档数据库的典型用例。

键值型数据库提供了最简化的数据接口,通过主键实现 O(1) 级别的读写性能。Redis 不仅支持基础键值,还内置了字符串、哈希、列表、集合、有序集合和流等丰富数据结构,成为缓存、分布式锁、消息队列和实时计算的热门选择。DynamoDB 作为全托管云原生键值服务,则通过自动分区和按需容量模式,帮助开发者彻底摆脱运营负担。

列族型数据库采用宽列存储模型,将同一列族的数据在物理上连续存放,对写入密集型和大范围扫描型负载尤为高效。Cassandra 的无主架构和对等复制机制使其能够线性扩展到数百个节点,广泛部署于日志存储、物联网时序数据和全局分布式应用。

图数据库将实体建模为节点、将关系建模为边,使多跳关联查询的性能不再随数据规模指数级劣化。Neo4j 的 Cypher 查询语言和原生图存储引擎在金融反欺诈、社交网络推荐和知识图谱构建中展现了关系型数据库难以企及的效率。

搜索引擎型数据库基于倒排索引和分词技术,专精于海量文档的全文本检索。Elasticsearch 不仅支持复杂的全文查询和模糊匹配,还提供了强大的聚合分析和地理空间检索能力,是现代日志平台和站内搜索的核心基础设施。

类型数据模型核心优势适用场景代表产品
文档型JSON/BSON 文档模式灵活、嵌套对象内容管理、用户资料、产品目录MongoDB
键值型key-value极简模型、极致性能缓存、会话、购物车、排行榜Redis、DynamoDB
列族型宽列存储高吞吐写入、线性扩展时序数据、日志、IoT、TelemetryCassandra、HBase
图数据库节点 + 边 + 属性多跳关联高效遍历社交网络、知识图谱、反欺诈、推荐Neo4j、Dgraph
搜索引擎倒排索引全文检索、聚合分析站内搜索、日志分析、APM 追踪Elasticsearch、OpenSearch

6. 选型决策树

面对琳琅满目的数据库产品,系统化的选型框架比单纯比较基准测试数据更有价值。以下决策树从业务本质需求出发,逐步收敛到最适合的数据库类别:

需要水平扩展?
  ├── 是 → 需要 ACID 事务和 SQL 兼容?
  │         ├── 是 → NewSQL / HTAP (TiDB / CockroachDB / YugabyteDB / Spanner)
  │         └── 否 → NoSQL
  │               ├── 键值查询为主、需要缓存 → Redis / DynamoDB / KeyDB
  │               ├── 文档模型、灵活 schema → MongoDB / Couchbase
  │               ├── 超高吞吐时序数据 → InfluxDB / TimescaleDB / TDengine
  │               ├── 图关系、多跳查询 → Neo4j / Dgraph
  │               └── 向量相似度检索 → Milvus / Weaviate / pgvector / Qdrant
  └── 否 → 复杂分析查询为主?
            ├── 是 → OLAP / 云数据仓库 (ClickHouse / Doris / Snowflake / BigQuery)
            └── 否 → 关系型数据库 (PostgreSQL / MySQL)
                  ├── 需要高级功能(JSONB / 全文 / GIS / 窗口函数 / CTE)→ PostgreSQL
                  └── 追求简单部署、广泛社区兼容 → MySQL / MariaDB

在多技术栈并存的现代架构中,Polystore 或多模型策略日益受到青睐。与其强求单一数据库承担所有负载,不如让 OLTP 由 PostgreSQL 支撑事务处理,让 ClickHouse 承载分析报表,让 Redis 承担热点缓存,让 Elasticsearch 提供全文搜索,各司其职并通过 CDC 或消息队列保持数据同步。这种组合不仅优化了每种负载的性能表现,也降低了单点故障的系统性风险。

PostgreSQL 被称为"世界上最先进的开源关系型数据库",其功能涵盖 JSONB 文档存储、数组与范围类型、全文检索、PostGIS 地理空间扩展、递归 CTE 和可插拔存储引擎等。对于不需要即时水平扩展的业务,PostgreSQL 仍然是技术栈中最坚实的通用选择。

7. 云原生数据库趋势

云计算的普及正在重塑数据库的交付形态和架构设计。云原生数据库不再简单地将传统数据库部署到云服务器上,而是从架构层面利用云环境的弹性、分布式存储和自动化运维能力,实现按需扩展、按量付费和自我修复。

Serverless 数据库将基础设施的粒度从实例级压缩到请求级。Amazon Aurora Serverless、PlanetScale 和 TiDB Cloud Serverless 允许开发者在零配置的情况下获得自动伸缩的数据库服务,空闲时缩容至接近零成本,峰值时瞬间扩容应对流量洪峰。这种模式大幅降低了初创团队和微服务架构的数据库持有成本,使开发者可以专注于业务逻辑而非容量规划。

全托管数据库服务将备份、补丁、监控、故障转移和性能调优等运维工作完全交由云厂商处理。RDS、Cloud SQL 和 AlloyDB 让中小企业无需专职 DBA 即可获得生产级数据库的可靠性和安全性。对于开发者而言,全托管的核心价值在于将不可预测的运维风险转化为可预测的运营成本。

Multi-Model 数据库代表了另一个重要趋势。传统上,应用需要为文档、键值、图和全文等不同类型的数据分别部署独立的数据库系统,导致架构复杂度和数据同步成本的攀升。现代多模型数据库如 ArangoDB 和 Azure Cosmos DB 在同一引擎中支持多种数据模型和查询语言,使开发者可以在一个平台上处理异构数据访问需求。甚至在关系型阵营中,PostgreSQL 也通过丰富的扩展生态演变成了事实上的多模型平台——JSONB 处理文档、PostGIS 处理地理空间、pg_trgm 和全文检索处理搜索、pgvector 处理向量 embeddings。

8. 迁移与多模型策略

数据库迁移是技术演进中无法回避的挑战。无论是从技术债务清理、性能瓶颈突破,还是从云厂商锁定规避的角度出发,系统化的迁移策略决定了项目的成败。

评估阶段是迁移的起点。需要全面梳理现有系统的数据模型、查询模式、事务依赖和性能瓶颈。数据量、表关系复杂度、存储过程和触发器的使用密度,都会直接影响迁移难度。对于大规模数据集,DMS(Database Migration Service)等工具可以实现不停机的持续复制,将停机窗口压缩至分钟级甚至秒级。

schema 迁移是技术层面的核心任务。关系型数据库之间的迁移通常涉及数据类型映射、索引重建和约束检查;从 SQL 到 NoSQL 的迁移则需要更深入的数据模型重构,将规范化表结构反规范化为嵌入式文档或宽列结构。增量测试和影子流量验证是降低迁移风险的关键实践——在正式切换前,让新数据库并行处理生产流量的副本并进行结果比对,确保功能等价性和性能达标。

多模型共存是现代分布式架构的主流模式。不同数据库在各自擅长的领域发挥优势,通过事件驱动或变更数据捕获(CDC)保持最终一致。例如,交易数据写入 PostgreSQL 后,Debezium 捕获 WAL 变更并推送到 Kafka ;下游消费者将数据同步到 Elasticsearch 构建检索索引、同步到 ClickHouse 构建分析模型、同步到 Redis 更新缓存热数据。这种架构虽然引入了组件数量,但通过清晰的分层和数据流动线,避免了单一数据库承载异构负载时的性能冲突和功能妥协。

延伸阅读

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「database」更多文章

  1. PostgreSQL 锁与阻塞分析
  2. COPY 与批量数据加载优化
  3. pgvector 向量检索与混合查询