内容参考

对分布式对定义参考这篇文章:

微服务都想用,先把分布式和微服务之间的关系说清楚

对分布式架构中心或无中心对比参考这篇文章:

分布式存储单主、多主和无中心架构的特征与趋势

对HDFS对内部机制参考这篇文章:

Hadoop分布式文件系统I/O原理机制的深度解读

分布式文件系统HDFS无索引就无K/V

首先分布式数据并不是绝对的喜欢使用kv存储模式,例如分布式数据库里面mongodb和elasticsearch是文档形式存储,若把HDFS也算进去的话,它是无索引的存储。

上图是HDFS作为分布式数据存储的文件分块存储模式,简单直接,并没有进行任何的kv索引建立。我们可以看到图中Nginx日志被切割成duo多份,然后分布在三台数据节点上,要注意的是,HDFS的副本一般是三份,图中只做了两份代表副本的意思,但实际上是三份。客户端在进行访问通信是时候,都是通过数据块scan的方式进行,没有索引,就没有随机访问机制。

TiDB的架构特征

像cockroach,tidb,明明是关系库,为啥非要弄个key,即使业务逻辑不需要表有unique key,也要给每条记录硬加一个key,这是什么目的?

其实cockroach,tidb都叫NewSQL,是NoSQL+关系型数据库的合体,认为它们是关系库,说得不恰当。

例如:tidb分为PD、TIKV、TIDB,PD管理者kv的关系结构,这部分可以对标关系型数据库。

上图是TIDB的架构图,图中可以看到TIDB形成的集群主要是接收外部应用的SQL,处理SQL的逻辑,与PD交互获取KV地址,与KV交互获取数据;

PD组成的集群主要是通过元数据的语义理解kv在集群中的位置,实现对KV集群的调度和负载均衡,分配全局事务ID;

TIKV就是我们说到的重点,通过Key-Value存储引擎,提供分布式事务能力。每个节点有多个Region,Region存储一个范围Key的数据——Key Range,主要是为了形成连续的小组,在局部提供写入和读取的性能优势。并且以Region作为原子单元,实现集群跨节点的副本复制,复制方式用Raft协议实现。

实际上TIKV部分就是标准的NoSQL为基础的数据持久化层了,TIKV的持久化数据层就是RocksDB,同样的cockroach持久化数据层也用的是RocksDB,RocksDB的就是LSM-Tree的日志追加方式WAL (write ahead log)快速写入数据,再通过LSM-Tree的memtable,sstable结构,索引key,获取value,所以就是个标准的key/value数据库。

RocksDB的核心优势LSM-Tree结构

为什么它们不约而同的都选择了RocksDB,因为作为核心结构LSM树的WAL,memtable,sstable方式具有写入数据的巨大优势并保证数据可靠性,形成很多小的顺序分组,同时又得到局部热点上的惊人查询优势,在内存中完成查找。

而且LSM-Tree配合Bloom Filter又能将时间线作为优先级,快速索引数据在磁盘中的位置范围,这就大大减少扫描磁盘的动作。

若遇到大范围随机查找,Bloom Filter有也查不到位置的情况,才会通过二分查找,并在树的不同层进行多路合并,取优先级最高的数据。

那么通过这种思路,就能比关系型数据库的b/b+树索引在写的性能方面带来质的提升,而且对于局部热点,也就是近期数据带来惊人的查询性能,虽然全局范围的查询有所降低,数据段合并会带来的资源消耗(rocksdb通过多线程合并提升了这一过程的效率),但数据库读写的整体性能的平衡性变得更合理了,总之将来通过集群处理读的问题总是比处理写的问题更容易,这就是选择key/value数据库的底层逻辑。

NewSQL相对于MySQL的优势

反观关系型数据库,例如要给MySQL加上一条索引,那么索引字段就是key。所以RDBMS也不能说自己跟key/value存储没啥联系。

作为业务逻辑上不需要unique key而非要加一个key,这是因为关系型数据库设计的初衷就不是为了海量数据的快速写入和查找所设计的,即便没有索引,行集扫描也没有问题,这才是常态是其本质,这和Hadoo HDFS的按块扫描一样,都是一种原始的状态,HDFS之上依然需要HBase数据库来解决海量数据的随机查找场景,本质上作为列族分类的HBase也是Key/Value模式。

NewSQL选择了RocksDB,也就是选择了业务记录中key存在的必须,但换来的是海量数据的高效写入和查找,非常划算。

前往读字节的知乎——了解更多关于大数据的知识

公众号 "读字节" 大数据(技术、架构、应用)的深度,专业解读

NewSQL分布式数据库,例如TIDB用K/V的底层逻辑的更多相关文章

  1. 从NoSQL到NewSQL,谈交易型分布式数据库建设要点

    在上一篇文章<从架构特点到功能缺陷,重新认识分析型分布式数据库>中,我们完成了对不同"分布式数据库"的横向分析,本文Ivan将讲述拆解的第二部分,会结合NoSQL与Ne ...

  2. 关于时间序列数据库的思考——(1)运用hash文件(例如:RRD,Whisper) (2)运用LSM树来备份(例如:LevelDB,RocksDB,Cassandra) (3)运用B-树排序和k/v存储(例如:BoltDB,LMDB)

    转自:http://0351slc.com/portal.php?mod=view&aid=12 近期网络上呈现了有关catena.benchmarking boltdb等时刻序列存储办法的介 ...

  3. 时间序列数据库概览——基于文件(RRD)、K/V数据库(influxDB)、关系型数据库

    一般人们谈论时间序列数据库的时候指代的就是这一类存储.按照底层技术不同可以划分为三类. 直接基于文件的简单存储:RRD Tool,Graphite Whisper.这类工具附属于监控告警工具,底层没有 ...

  4. erlang 分布式数据库Mnesia 实现及应用

    先推荐一篇:mnesia源码分析(yufeng)   - linear hash   ETS/DETS/mnesia 都使用了linear hash算法 http://en.wikipedia.org ...

  5. 怎样打造一个分布式数据库——rocksDB, raft, mvcc,本质上是为了解决跨数据中心的复制

    摘自:http://www.infoq.com/cn/articles/how-to-build-a-distributed-database?utm_campaign=rightbar_v2& ...

  6. 全球分布式数据库:Google Spanner(论文翻译)

    本文由厦门大学计算机系教师林子雨翻译,翻译质量很高,本人只对极少数翻译得不太恰当的地方进行了修改. [摘要]:Spanner 是谷歌公司研发的.可扩展的.多版本.全球分布式.同步复制数据库.它是第一个 ...

  7. (三)分布式数据库tidb-隔离级别详解

    tidb隔离级别详解: 1.TiDB 支持的隔离级别是 Snapshot Isolation(SI),它和 Repeatable Read(RR) 隔离级别基本等价,详细情况如下: ● TiDB 的 ...

  8. Mycat分布式数据库架构解决方案--Mycat实现读写分离

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 安装完 ...

  9. 分布式数据库中的Paxos 算法

    分布式数据库中的Paxos 算法 http://baike.baidu.com/link?url=ChmfvtXRZQl7X1VmRU6ypsmZ4b4MbQX1pelw_VenRLnFpq7rMvY ...

随机推荐

  1. Linux core dump使用

    什么是 core dump? core dump是一个当进程意外终止时包含进程内存内容的文件.当程序崩溃的时候,core dump由kernel触发.core dump可以作为程序崩溃时的事后快照(p ...

  2. CF1474-B. Different Divisors

    CF1474-B. Different Divisors 题意: 题目给出你一个\(d\),要求你找出一个数字\(y\),找到的\(y\)至少有四个整数因子并且任意两个因子之间的差至少为\(d\). ...

  3. 一篇文章图文并茂地带你轻松学会 HTML5 storage

    html5 storage api localStorage 和 sessionStorage 是 html5 新增的用来存储数据的对象,他们让我们可以以键值对的形式存储信息. 为什么要有 stora ...

  4. Http和Https之为什么Https更安全

    [除夕了,加油干.希望自己新的一年万事顺意,祝大家身体健康,心想事成!] 我们都知道 HTTPS 安全,可是为什么安全呢? 看小电影还是浏览正常网站,一定要检查是不是 HTTPS 的,因为Https相 ...

  5. hdu4801 PocketCube 2阶魔方

    http://acm.hdu.edu.cn/showproblem.php?pid=4801 1. 题目描述给定一个2×2×22×2×2的魔方,当某个面上的4个小块颜色均相同时,称这个面为comple ...

  6. CNN可视化技术总结(三)--类可视化

    CNN可视化技术总结(一)-特征图可视化 CNN可视化技术总结(二)--卷积核可视化 导言: 前面我们介绍了两种可视化方法,特征图可视化和卷积核可视化,这两种方法在论文中都比较常见,这两种更多的是用于 ...

  7. 前端使用 js 如何实现大文件上传

    前端使用 js 如何实现大文件上传 大文件上传 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  8. js var & let & const All In One

    js var & let & const All In One js var & let & const 区别对比 var let const 区别 是否存在 hois ...

  9. macOS warning emoji render bug

    macOS warning emoji render bug ️ macOS render bug Apple Color Emoji fonts install old version fonts ...

  10. how to make one your own promise version Ajax

    how to make one your own promise version Ajax XMLHttpRequest https://developer.mozilla.org/en-US/doc ...