课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库是大多数后端编程开发程序员需要重点掌握的一个计算机编程技术,而今天我们就通过案例分析来了解一下,数据库架构常见基础概念都有哪些。
Key-Value模型
作为保存数据的系统,先要决定数据的存储模型,即数据是以何种形式保存下来的。
在TiKV中,数据以Key-Value模型的形式存储,TiKV可以比作一个巨大的Map,里面有序地存储大量的键值对(Key-Valuepair),其中Key和Value均是原始的Byte数组,且在Map中这些键值对是按照Key的二进制顺序排列的,即可以通过Key进行顺序查找。
RocksDB
TiKV是参考Google的Spanner设计实现的,但是Spanner是使用Goolge文件系统(GFS)作为它的分布式文件系统来存储真实数据的。
TiKV不依赖任何分布式文件系统,它将键值对保存在RocksDB中,具体向磁盘上写数据则由RocksDB完成。
RocksDB是一个开源的、高性能的单机存储引擎,由Facebook团队在做持续优化,可以很容易地调整读写和放大空间,以满足TiKV的要求。
Raft
Raft是一个管理复制日志的一致性算法,提供了与Paxos算法相同的容错功能和性能。但是它的算法结构与Paxos不同,使用Raft算法用户能够更加容易理解,并且更容易构建一个分布式系统。
Raft协议将一致性算法分成了几个关键模块,主要提供以下功能。
者选举,Raft算法使用一个随机计时器来选举者,日志条目只从者发送给其他的服务器。
成员变更,Raft算法为了调整集群中的成员关系使用了新的联合一致性的方法,这种方法中的大多数不同配置的机器在转换关系的时候会重叠。这就使得配置改变的时候,集群仍能够继续操作。
日志复制,者必须从客户端接收日志,然后复制到集群中的其他节点,并且强制要求其他节点的日志与自己保持相同。
TiKV使用Rah来实现数据的复制,每条数据的变更都会被记录成一条Raft日志。
通过Raft的日志复制功能,可将数据安全、可靠地同步到集群的多个节点上,这样,Raft可以保证在单机失效时,数据不会出现丢失和出错。
MVCC
多版本并发控制(Multi-VersionConcurrencyControl,MVCC)是一种并发控制方法,在数据库系统当中实现对数据库的并发访问。
在TiKV中,如果两个Client同时去修改一个键值对,而且没有使用多版本控制,则需要对访问的键值对上锁,保证在同一时刻只有一个Client对这个数据进行操作。
在分布式场景下,采用这种上锁机制可能会带来性能以及死锁的问题,因此,TiKV采用MVCC来完成这种多用户的并发访问。
MVCC的实现是通过在Key后面添加Version来实现的,如下图所示,多个用户可以同时对数据进行写操作,同时也可以提供旧版本给其他用户读取访问。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。