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 分割的?的更多相关文章

  1. java下DataInputStream与DataOutputStream写入数据的同时写入数据类型

    package cn.stat.p2.demo; import java.io.DataInputStream; import java.io.DataOutputStream; import jav ...

  2. Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)

    本文使用jxl.jar工具类库将数据按列写入Excel并设置格式(字体.背景色.自动列宽.对齐方式等). /** * 按列写入Excel并设置格式 * * @param outputUrl * 输出路 ...

  3. php从memcache读取数据再批量写入mysql的方法

    这篇文章主要介绍了php从memcache读取数据再批量写入mysql的方法,可利用memcache缓解服务器读写压力,并实现数据库数据的写入操作,非常具有实用价值,需要的朋友可以参考下. 用 Mem ...

  4. 一个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 ...

  5. matlab将数据读取和写入txt文档

    原文链接 matlab中打开文件 fid = fopen(文件名,‘打开方式’): 说明:fid用于存储文件句柄值,如果fid>0,这说明文件打开成功. 另外,在这些字符串后添加一个“t”,如‘ ...

  6. R 数据读取与写入

    路径 getwd() #获取当前工作路径 setwd() #设置工作路径 获取普通文本数据 x = read.table("data.txt") #通过路径直接获取 x = rea ...

  7. C语言中链表任意位置怎么插入数据?然后写入文件中?

    链表插入示意图:(图是个人所画)因为链表指针指来指去,难以理解,所以辅助画图更加方便. 插入某个学号后面图: 定义的结构体: struct student { ]; //学生学号 ]; //学生姓名 ...

  8. C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表

    调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...

  9. SSIS 系列 - 在 SSIS 中使用 Multicast Task 将数据源数据同时写入多个目标表,备份数据表,以及写入Audit 信息

    转自http://www.cnblogs.com/biwork/p/3328838.html 在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge ...

  10. NPOI 创建Excel,数据读取与写入

    <1> using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...

随机推荐

  1. shutdown详解

    linux下shutdown命令详解 shutdown命令安全地将系统关机. 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的.因为linux与windows不同,其后台运行着许多进程 ...

  2. 文心一言 VS 讯飞星火 VS chatgpt (36)-- 算法导论5.3 6题

    六.请解释如何实现算法 PERMUTE-BY-SORTING,以处理两个或更多优先级相同的情形.也就是说,即使有两个或更多优先级相同,你的算法也应该产生一个均匀随机排列. 文心一言: 算法 PERMU ...

  3. 如何更好的分析潜在人脉?聊聊华为云图引擎GES的Cypher子查询

    摘要:本文以华为云图引擎 GES 为例,来介绍如何使用图查询语言 Cypher 表达一些需要做数据局部遍历的场景. 本文分享自华为云社区<使用 Cypher 子查询进行图探索 -- 以华为云图引 ...

  4. 后CNN探索,如何用RNN进行图像分类

    摘要:RNN可以用于描述时间上连续状态的输出,有记忆功能,能处理时间序列的能力,让我惊叹. 本文分享自华为云社区<用RNN进行图像分类--CNN之后的探索>,作者: Yin-Manny. ...

  5. 解析Stream foreach源码

    摘要:串行流比较简单,对于parallelStream,站在它背后的是ForkJoin框架. 本文分享自华为云社区<深入理解Stream之foreach源码解析>,作者:李哥技术 . 前言 ...

  6. 云小课 | 一个三分钟快速定制OCR应用的神器,要不?

    摘要:ModelArts Pro提供了文字识别套件,基于丰富的文字识别算法和行业知识积累,帮助客户快速构建满足不同业务场景需求的文字识别服务.三分钟即可快速定制OCR服务,实现多种版式图像的文字信息结 ...

  7. PPT 玩转形状

    形状 https://www.cnblogs.com/vipsoft/p/16943810.html 形状也可以非常复杂 形状的神奇功能--合并形状 编辑顶点 https://www.cnblogs. ...

  8. 协同导航定位技术:为GPS定位盲区而生

    导航技术和我们的生活息息相关.行人导航系统是一种为行人提供导航服务的便携式设备,可以适应地下.矿洞等卫星信号拒止的地区,以及大商场等拓扑结构复杂的地区,通常基于MIMU实现,本质上是惯性导航系统的一种 ...

  9. ABAP 辨析 标准表|排序表|哈希表

    1.文档介绍 本文档将介绍内表的区别和用法,涉及标准表.排序表.哈希表 2.用法与区别 2.1.内表种类 内表顶层为任意表,任意表分为索引表和哈希表,索引表又可分为标准表和排序表,结构如图: 2.2. ...

  10. 题解 | 【CF896B】 Ithea Plays With Chtholly

    题目链接:Here 给 \(m\) 个数,放到 \(1→n\) 一个位置上,若 \(1→n\) 都被填满且不下降就胜.强制在线. 看到题忽然觉得是水题,这不就最长不下降子序列的那个吗!直接上个二分就准 ...