分布式数据库

核心提示归纳一下,数据库就是要做好五件事,存储、事务、查询、复制和其他。对分布式数据库来说,不仅要继续做这五件事,还要多出一件事,分片。在这六件事中,存储和其他这两件事与单体数据库差不多,难点就在事务、查询、复制和分片这四件。分布式数据库的六个外部

归纳一下,数据库就是要做好五件事,

存储、事务、查询、复制和其他。对分布式数据库来说,不仅要继续做这五件事,还要多出一件事,

分片。在这六件事中,存储和其他这两件事与单体数据库差不多,

难点就在事务、查询、复制和分片这四件。

分布式数据库的六个外部特性,分别是

写多读少、低延时、海量并发、海量存储、高可靠性、关系型数据库。

之所以强调写多读少,因为写操作的负载只能是单体数据库的主节点上,是无法转移的;而读操作,如果对一致性要求不高可以转移到备节点,甚至在某些条件下还能保证一致性。就是说单体数据库可以通过一主多备解决读负载大的问题,而无需引入分布式数据库

从状态视角看,数据一致性只有两种状态,强一致或弱一致从操作视角看,线性一致性 > 顺序一致性 > 因果一致性 > { 写后读一致性,单调一致性,前缀一致性 }

分片是分布式数据库的关键设计,以此实现多节点的存储和访问能力。分片机制的两个要点是分片策略和调度机制,分片策略包括 Hash 和 Range 两种,调度机制则分为静态和动态。

NewSQL 的 Range 分片称为动态分片,主要有两个原因:

分片可以自动完成分裂与合并

可以根据访问压力调度分片

分片与高可靠的关系

高可靠是分布式数据库的重要特性,分片是数据记录的最小组织单位,也必须是高可靠的。

NewSQL 的实现方式是复制组。在产品层面,通常由一个主副本和若干个副本组成,通过 Raft 或 Paxos 等共识算法完成数据同步,称为 Raft Group 或 PaxosGroup,所以我们简称这种方式为 Group。

Hash 一般是指一致性 Hash,可以最大程度规避节点扩缩带来的影响。Hash 分片写性能出众,但查询性能差,Range 则相反。

NewSQL 的默认分片策略通常是 Range 分片。分片调度机制为了实现存储平衡和访问压力平衡的目标,会将分片动态调度到各个节点。Spanner 的设计又将在分片下拓展了Directory,通过对 Directory 的调度实现减少分布式事务和缩短延时的目标,但在其他分布式数据库中尚未看到对应的实现。

NewSQL 架构下,分片采用 Paxos 或 Raft 算法可以构成复制组,这种复制机制相比PGXC 的主备节点复制,提供了更高的可靠性,资源使用也更加高效。

 
友情链接
鄂ICP备19019357号-22