暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TIDB 读书笔记

dba笔记 2018-03-17
558

随着Paxos, Raft协议的应用,多家数据库产品都实现了金融级别的分布式强一致协议。但是实现分布式数据库我直到的只有TIDB。做为dba,没道理不跟进一款好的db产品。


三篇文章了解 TiDB 技术内幕——说存储


key - value

1. 这是一个巨大的 Map,也就是存储的是 Key-Value pair;

2. 这个 Map 中的 Key-Value pair 按照 Key 的二进制顺序有序,也就是我们可以 Seek 到某一个 Key 的位置,然后不断的调用 Next 方法以递增的顺序获取比这个 Key 大的 Key-Value。

RocksDB

RocksDB 是一个非常优秀的开源的单机存储引擎

Raft

Raft 是一个一致性算法,它和 Paxos 等价,但是更加易于理解。

1. Leader 选举

2. 成员变更

3. 日志复制

Region

  • 以 Region 为单位,将数据分散在集群中所有的节点上,并且尽量保证每个节点上服务的 Region 数量差不多

  • 以 Region 为单位做 Raft 的复制和成员管理

MVCC

TiKV 的 MVCC 实现是通过在 Key 后面添加 Version 来实现。注意,对于同一个 Key 的多个版本,我们把版本号较大的放在前面,版本号小的放在后面(回忆一下 Key-Value 一节我们介绍过的 Key 是有序的排列),这样当用户通过一个 Key + Version 来获取 Value 的时候,可以将 Key 和 Version 构造出 MVCC 的 Key,也就是 Key-Version。然后可以直接 Seek(Key-Version),定位到第一个大于等于这个 Key-Version 的位置。

事务

TiKV 的事务采用乐观锁,事务的执行过程中,不会检测写冲突,只有在提交过程中,才会做冲突检测,冲突的双方中比较早完成提交的会写入成功,另一方会尝试重新执行整个事务。当业务的写入冲突不严重的情况下,这种模型性能会很好,比如随机更新表中某一行的数据,并且表很大。但是如果业务的写入冲突严重,性能就会很差,举一个极端的例子,就是计数器,多个客户端同时修改少量行,导致冲突严重的,造成大量的无效重试。


本文分享自微信公众号 - dba笔记,如有侵权,请联系 service001@enmotech.com 删除。
最后修改时间:2019-12-18 15:44:27
文章转载自dba笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论