TIKV的特征

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 实现了分布式的并行协同计算。

1. 内容概要 本项目是一个支持科学函数的命令行计算器,兼容 C++98 标准。它实现了中缀表达式词法分析、后缀表达式转换与求值,支持常见数学运算(如幂、三角函数、对数等)与括号优先级解析。程序还提供了角度版三角函数、角度与弧度互转功能,并支持函数调试输出与函数演示模式。 2. 适用人群 * C++ 初中级学习者,特别是希望深入理解表达式求值机制者 * 需要一个可扩展的计算引擎的项目开发者 * 想通过项目实践词法分析、调度场算法、数学函数封装的开发者 * 高校学生课程设计、编译原理实践者 3. 使用场景及目标 * 实现中缀表达式的完整求解器,支持函数嵌套、优先级与结合性处理 * 提供角度与弧度版本的三角函数,以适应不同输入偏好 * 演示中缀转后缀过程,辅助编程教育与算法教学 * 提供科学函数辅助计算,如 `log`, `sqrt`, `abs`, `exp`, `ceil`, `floor` 等 4. 其他说明 * 支持函数:sin, cos, tan(弧度);sind, cosd, tand(角度) * 支持函数嵌套,如 `sin(deg2rad(30))` * 支持操作符:+, -, \*, /, ^, \*\*(幂运算)与括号优先级 * 所有函数均通过 map 注册,方便扩展与自定义 * 输入 `help` 查看支持函数,`demo` 观看转后缀过程,`quit` 退出程序 * 提示用户避免使用 `°` 符号,推荐使用角度函数代替 * 可通过 `g++ calculator.cpp -o calculator -lm` 编译(需链接数学库)
### TiKV中的MVCC实现与应用 #### 1. 多版本并发控制(MVCC)概述 多版本并发控制(Multi-Version Concurrency Control,简称 MVCC)是一种用于提升数据库并发性能的技术。其核心思想是在执行更新或删除操作时不直接修改原始数据,而是通过创建新版本来保存变更后的状态[^1]。这种方式使得读操作无需等待写操作完成即可访问旧版本的数据,从而显著减少因锁机制带来的阻塞。 #### 2. TiKV 中的 MVCC 实现细节 TiKV 是一个分布式的键值存储系统,在其实现中也引入了 MVCC 来支持高效的事务管理以及高并发场景下的读写分离需求。以下是具体实现的关键点: - **版本化数据结构** 在 TiKV 中,每条记录都会被赋予多个时间戳标记的不同版本。这些版本按照时间顺序排列,允许用户根据特定的时间点查询对应的历史数据[^3]。 - **两阶段提交协议 (Two-phase Commit)** TiKV 使用两阶段提交协议确保分布式环境下的事务一致性。此过程分为预写入 (`Prewrite`) 和提交 (`Commit`) 阶段: - 在 `Prewrite` 阶段,客户端会向涉及的所有 Region 发送请求,将待修改的内容及其对应的锁信息存入 Default Column Family (CF) 和 Lock CF 中[^2]。 - 进入 `Commit` 阶段后,则进一步确认全局唯一的时间戳作为最终提交标志,并广播至各参与方以同步状态变化。 - **快照隔离级别支持** 借助于内部维护的一套完整的 MVCC 数据模型,TiKV 能够轻松提供一致性的快照视图给上层调用者。这意味着即便面对频繁变动的基础表项集合,应用程序依旧能够稳定获取某一固定时刻的整体镜像副本[^4]。 #### 3. 技术优势分析 采用上述方法论之后,带来了如下几个方面的改进效果: - 极大地降低了传统锁定策略可能引发的竞争压力; - 提供更灵活的时间旅行能力以便追溯过往发生过的事件轨迹; - 更好地适配现代大规模集群架构下复杂的业务逻辑诉求。 ```python # 示例代码展示如何利用 Python SDK 对 TiKV 执行简单增删改查命令 from tikv_client import TransactionClient client = TransactionClient.connect(["127.0.0.1:2379"]) txn = client.begin() key = b"my_key" value = b"my_value" # 插入一条新的 key-value 记录 txn.put(key, value) # 获取指定 key 下最新版次关联的 value 值 result = txn.get(key) print(result.decode()) # 删除目标 entry 同时保留历史痕迹可供后续审计用途 txn.delete(key) txn.commit() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值