1.TIKV的特征
TIKV模块可以说是TIDB分布式数据库中一个最重要的模块,因为数据全部部署在其中,
分布式数据库的可扩展性也是TIKVE的分布式特性之一。
TIKV 是一个分布式事务键值存储引擎,专为满足现代大规模数据存储和处理的需求而设计。
(1)TIKV具有以下特征
TIKV使用 RocksDB 作为数据持久化的存储引擎,它基于LSM-TREE (log-structured Merge tree)
数据结构,这种结构在写入时具有较高的吞吐量。ROCKSDB 还通过 WAL 预写日志等机制确保
数据的持久化性和一致性。数据被组织成以KEY-VALUE 形式存储的键值对。每行数据对应一个唯一
的键。 这个键对应一个值,这个值就是各个列的数据。
(2)多副本的一致性与高可用性
TIKV 采用multi raft 机制实现多副本之间的一致性和高可用性。
数据被分成多个region,并在多个节点上进行复制。RAFT分布式协议确保了数据的一致性和副本
间的同步。同时,tikv 还支持自动分裂和合并region,以实现动态的扩展和负载均衡。
通过与PD的协作,可以灵活地调度region,以避免热点和均衡负载。
(3)多版本并发控制
MVCC 是TIKV实现高并发性能和事务隔离级别的重要机制,每个键对应的数据都会有多个版本,
通过在键后添加版本号来实现。这样读操作可以同时访问多个版本的数据,而不会阻塞写操作。
同时,TIDB SERVER 负责对历史版本数据进行垃圾回收,以及处理数据的恢复和冲突
检测等任务。
(4)分布式事务支持
TIKV支持强强一致性的分布式事务。它采用percolator事务模型,在分布式环境中实现了两阶段提交。
每个TIKV节点上都有单独的存储锁的空间,称为列族。通过与TIDB SERVER 和PD的协作,
TIKV实现了全局时间戳分配和多节点之间的数据一致性。
(5)Corprocessor功能
TIKV 的 corprocessor 功能可将部分计算任务下推到存储节点上执行。减少了网络传输和中间
结果传递的开销。corprocessor 通过执行预定义的计算函数,可以在存储节点上进行数据过滤,
聚合,转换等操作。从而提高计算效率和系统整体性能。
TIKV 是一个高性能,高可靠和可扩展的分布式事务键值存储引擎。它通过数据持久化,分布式事务支持,
多副本一致性与高可用性,MVCC 和 corprocessor 等功能,为TIDB 数据库提供了强大的存储和处理能力。
2.TIKV的架构和作用
TIDB SERVER 作为SQL层通过MySQL协议与客户端进行连接,并负责执行SQL解析,优化和生成分布式
执行计划,需要注意,TIDB SERVER 本身是无状态的,是没有数据要持久化保存在TIDB SERVER 中的。
TIKV 的主要功能是持久化存储TIDB数据库的数据,这个功能是通过集成ROCKSDB来实现的 。
在TIDB数据库中,TIKV是一个分布式存储引擎,数据以Region为单位进行分布式存储。为了实现数据的强一致性,
其使用了raft共识算法。每个region及其副本构成一个raft组,多个raft组组合成为Multi-raft;
基于raft共识算法的写入读取与之前提到的rocksDB的写入读取与之前提到的ROCKSDB的写入和读取有所不同。
ROCKSDB的写入和读取主要指的是在单个TIKV节点上保证数据的持久性和一致性读取,而基于RAFT 共识算法
的写入读取主要是针对由多个TIKV节点组成的集群进行操作,可以认为是在横向上进行的。
TIKV 的另一个功能是支持分布式事务和MVCC.
Corprocessor ,这个功能组件为TIKV提供了算子下推的能力。可以利用这个功能组件将部分过滤,聚合
和投影等SQL计算交给TIKV完成,无须将TIKV的所有数据通过网络发送给TIDBSERVER,也无需将所有
计算压力放在TIDB SERVER 上。这样即节省了网络带宽,又减轻了tidb server的CPU负载。
TIKV 的实现:先实现持久化数据不丢失,然后实现分布式一致性使得多个副本的数据一致,
实现了高可用性,再加上MVCC和分布式事务机制,最后用corprocessor 实现了分布式的并行协同计算。