[转帖]TIDB TIKV 数据是怎么写入与通过Region 分割的?
https://cloud.tencent.com/developer/article/1882194
国产的分布式数据库不少,TDSQL, OB, TIDB ,等等都是比较知名的产品,使用的分布式协议也不同,有使用POSTGRES-XL ,也有从外观模仿ORACLE 的,还有借鉴各家所长自己研发的。为什么最近一直在看TIDB,主要有以下几点
1 TIDB 对比其他的分布式数据库是目前影响力较大的产品
2 TIDB 是基于成型的产品的理论以及底层成熟的存储层研发的数据库产品
3 互联网企业使用的量已经成型,经过验证
4 开放,以及国际上的影响
——————————————————————————————
TIDB 的三个模块,TIDB, TIKV, PD ,这三个名词估计是耳熟能详了,接入层,事务隔离级别控制层,信息路由层 , 以及信息存储层。TIKV 作为TIDB 的信息存储层, 首先一个信息是如何存储进TIKV

整体的数据写入的过程采用PUT指令,通过PD来对要写入的数据进行路由,对需要写入数据的目的地进行获取,并将获取后的位置发送给TIDB 模块,TIDB 模块将需要写入的数据直接发送给TIKV , TIKV 通过两阶段提交的方式将信息写入 leader region, 并将数据写入的结果反馈给TIDB , 同时数据线性的在follower region中写入。
反向在数据读取的过程过,会根据raft 协议中的大多数的原理,读取的数据必须在大多数的region 中存在,否则是无法进行数据的读取的。
TIKV 的数据存储的单位是REGION ,REGION 对于TIKV是非常重要的,TIKV 通过REGION 以及RAFT 协议将同样的REGION 分布在不同的TIKV 的主机中。随着数据的不断的写入REGION 承载的数据越来越多就需要开始进行分割。TIKV 中存储的数据也是有序的,并且是通过RAGE 的方式(范围的方式进行数据的存储),数据的增大必然导致范围的粒度越来越细分。

初始化时一个REGION为64MB , 并且标注好REGION 数据存储的范围,当数据灌入超过8MB后,TIKV 产生CHECK 线程对REGION 的大小进行定期的巡检, 当数据在REGION 中超过96MB 就产生一个分割的需求了。根据分割的需求,TIKV 中的RAFTSTORE 线程会将需求发送给PD, PD 会根据需求分配新的REGION的ID ,并且将信息会送给TIKV。
TIKV 获得了新的ID 后根据当前REGION 存储的数据中KEY:VALUE 的情况调整并且重新划分REGION 中的存储数据的范围。由于REGION的拆分仅仅是在元数据上进行范围的重新标定和注册,所以分割本身并不牵扯数据的迁移,速度会比较快。在产生新的REGION 后,并完成注册和分割后,TIKV 会将信息回馈给PD,并进行记录。后续新的数据写入以及提取PD 会根据新的信息进行路由,将信息写入新的REGION。

[转帖]TIDB TIKV 数据是怎么写入与通过Region 分割的?的更多相关文章
- java下DataInputStream与DataOutputStream写入数据的同时写入数据类型
package cn.stat.p2.demo; import java.io.DataInputStream; import java.io.DataOutputStream; import jav ...
- Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)
本文使用jxl.jar工具类库将数据按列写入Excel并设置格式(字体.背景色.自动列宽.对齐方式等). /** * 按列写入Excel并设置格式 * * @param outputUrl * 输出路 ...
- php从memcache读取数据再批量写入mysql的方法
这篇文章主要介绍了php从memcache读取数据再批量写入mysql的方法,可利用memcache缓解服务器读写压力,并实现数据库数据的写入操作,非常具有实用价值,需要的朋友可以参考下. 用 Mem ...
- 一个I/O线程可以并发处理N个客户端连接和读写操作 I/O复用模型 基于Buf操作NIO可以读取任意位置的数据 Channel中读取数据到Buffer中或将数据 Buffer 中写入到 Channel 事件驱动消息通知观察者模式
Tomcat那些事儿 https://mp.weixin.qq.com/s?__biz=MzI3MTEwODc5Ng==&mid=2650860016&idx=2&sn=549 ...
- matlab将数据读取和写入txt文档
原文链接 matlab中打开文件 fid = fopen(文件名,‘打开方式’): 说明:fid用于存储文件句柄值,如果fid>0,这说明文件打开成功. 另外,在这些字符串后添加一个“t”,如‘ ...
- R 数据读取与写入
路径 getwd() #获取当前工作路径 setwd() #设置工作路径 获取普通文本数据 x = read.table("data.txt") #通过路径直接获取 x = rea ...
- C语言中链表任意位置怎么插入数据?然后写入文件中?
链表插入示意图:(图是个人所画)因为链表指针指来指去,难以理解,所以辅助画图更加方便. 插入某个学号后面图: 定义的结构体: struct student { ]; //学生学号 ]; //学生姓名 ...
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...
- SSIS 系列 - 在 SSIS 中使用 Multicast Task 将数据源数据同时写入多个目标表,备份数据表,以及写入Audit 信息
转自http://www.cnblogs.com/biwork/p/3328838.html 在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge ...
- NPOI 创建Excel,数据读取与写入
<1> using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
随机推荐
- shutdown详解
linux下shutdown命令详解 shutdown命令安全地将系统关机. 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的.因为linux与windows不同,其后台运行着许多进程 ...
- 文心一言 VS 讯飞星火 VS chatgpt (36)-- 算法导论5.3 6题
六.请解释如何实现算法 PERMUTE-BY-SORTING,以处理两个或更多优先级相同的情形.也就是说,即使有两个或更多优先级相同,你的算法也应该产生一个均匀随机排列. 文心一言: 算法 PERMU ...
- 如何更好的分析潜在人脉?聊聊华为云图引擎GES的Cypher子查询
摘要:本文以华为云图引擎 GES 为例,来介绍如何使用图查询语言 Cypher 表达一些需要做数据局部遍历的场景. 本文分享自华为云社区<使用 Cypher 子查询进行图探索 -- 以华为云图引 ...
- 后CNN探索,如何用RNN进行图像分类
摘要:RNN可以用于描述时间上连续状态的输出,有记忆功能,能处理时间序列的能力,让我惊叹. 本文分享自华为云社区<用RNN进行图像分类--CNN之后的探索>,作者: Yin-Manny. ...
- 解析Stream foreach源码
摘要:串行流比较简单,对于parallelStream,站在它背后的是ForkJoin框架. 本文分享自华为云社区<深入理解Stream之foreach源码解析>,作者:李哥技术 . 前言 ...
- 云小课 | 一个三分钟快速定制OCR应用的神器,要不?
摘要:ModelArts Pro提供了文字识别套件,基于丰富的文字识别算法和行业知识积累,帮助客户快速构建满足不同业务场景需求的文字识别服务.三分钟即可快速定制OCR服务,实现多种版式图像的文字信息结 ...
- PPT 玩转形状
形状 https://www.cnblogs.com/vipsoft/p/16943810.html 形状也可以非常复杂 形状的神奇功能--合并形状 编辑顶点 https://www.cnblogs. ...
- 协同导航定位技术:为GPS定位盲区而生
导航技术和我们的生活息息相关.行人导航系统是一种为行人提供导航服务的便携式设备,可以适应地下.矿洞等卫星信号拒止的地区,以及大商场等拓扑结构复杂的地区,通常基于MIMU实现,本质上是惯性导航系统的一种 ...
- ABAP 辨析 标准表|排序表|哈希表
1.文档介绍 本文档将介绍内表的区别和用法,涉及标准表.排序表.哈希表 2.用法与区别 2.1.内表种类 内表顶层为任意表,任意表分为索引表和哈希表,索引表又可分为标准表和排序表,结构如图: 2.2. ...
- 题解 | 【CF896B】 Ithea Plays With Chtholly
题目链接:Here 给 \(m\) 个数,放到 \(1→n\) 一个位置上,若 \(1→n\) 都被填满且不下降就胜.强制在线. 看到题忽然觉得是水题,这不就最长不下降子序列的那个吗!直接上个二分就准 ...