分布式数据库系统概述
分布式数据库系统(Distributed Database System, DDBS)是指在地理位置不同的多台计算机(节点)上,通过网络连接,在逻辑上作为一个整体进行管理和使用的数据库系统,其核心目标是通过资源共享、提高可靠性和增强扩展性,来解决单机数据库在处理海量数据和高并发请求时的瓶颈问题。
核心特征
一个成熟的分布式数据库系统通常具备以下关键特征:
- 透明性 (Transparency):用户在操作数据库时,无需感知数据的物理分布情况,包括:
- 位置透明:用户不需要知道数据存储的具体节点。
- 分片透明:用户无需关心数据是如何切分的。
- 复制透明:用户无需感知数据的备份副本。
- 故障透明:当某个节点失效时,系统能自动切换,用户感知不到中断。
- 局部自治 (Local Autonomy):每个节点可以拥有自己的本地数据库管理系统,并能独立处理本地事务。
- 水平扩展性 (Scalability)
:可以通过增加廉价的服务器节点(Scale-out)来线性提升系统的处理能力。
- 高可用性 (High Availability):通过数据冗余和自动故障转移机制,确保系统在部分硬件故障时仍能持续提供服务。
数据分布策略
为了实现高效的分布式存储,通常采用以下两种主要技术:
- 分片 (Fragmentation):将一个逻辑上的大表拆分为多个小块。
- 水平分片 (Horizontal Fragmentation):按行拆分,每一片包含部分行,但包含所有列。
- 垂直分片 (Vertical Fragmentation):按列拆分,每一片包含部分列,但包含所有行。
- 复制 (Replication):将相同的数据存储在多个不同的节点上。
- 全量复制:每个节点都拥有完整的数据副本。
- 部分复制:仅部分核心数据或热点数据进行多副本存储。
核心理论:CAP 定理
在设计分布式系统时,必须面对 CAP 定理 的权衡,该定理指出,在一个分布式系统中,以下三个特性无法同时完全满足:
- 一致性 (Consistency):所有节点在同一时间看到的数据完全一致。
- 可用性 (Availability):每个请求都能在有限时间内收到响应(无论成功或失败)。
- 分区容错性 (Partition Tolerance):当网络发生分区(节点间通信中断)时,系统仍能继续运行。
在分布式环境下,分区容错性 (P) 是必须保证的,因此架构师必须在 一致性 (C) 和 可用性 (A) 之间做出取舍(即 CP 或 AP 架构)。
关键技术挑战
- 分布式事务 (Distributed Transactions):如何在多个节点间保证事务的 ACID 特性,常用的协议包括 两阶段提交 (2PC) 和 三阶段提交 (3PC)。
- 共识算法 (Consensus Algorithms):确保分布式节点之间达成一致意见,主流算法包括:
- Paxos:经典的共识协议,逻辑严密但实现复杂。
- Raft:设计目标是易于理解和实现,目前在许多现代分布式系统中广泛应用。
- 数据一致性模型:
- 强一致性:读到的永远是最新的数据。
- 最终一致性 (Eventual Consistency):数据在经过一段时间的同步后,最终会达到一致(常见于 NoSQL 系统)。
分布式数据库的主要分类
- NewSQL:试图结合关系型数据库的 ACID 特性和 NoSQL 的 水平扩展性。
- 代表产品:TiDB、CockroachDB、Google Spanner。
- NoSQL:针对非结构化数据或超大规模并发场景,牺牲部分一致性以换取极高的可用性和扩展性。
- 键值存储 (Key-Value):如 Redis、Riak。
- 文档存储 (Document):如 MongoDB。
- 列族存储 (Column-family):如 Apache Cassandra、HBase。
- 分布式关系型数据库:传统数据库厂商推出的分布式版本。
- 代表产品:Amazon Aurora、Oracle RAC。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/493026.html



