NewSQL分布式数据库,例如TIDB用K/V的底层逻辑

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: NewSQL分布式数据库,例如TIDB用K/V的底层逻辑

内容参考


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


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


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


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


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


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


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


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


20210310220137996.png


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


TiDB的架构特征


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


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


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


20210310220138637.png


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


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


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


20210310220138854.png


实际上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方式具有写入数据的巨大优势并保证数据可靠性,形成很多小的顺序分组,同时又得到局部热点上的惊人查询优势,在内存中完成查找。


20210310220139708.png


而且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存在的必须,但换来的是海量数据的高效写入和查找,非常划算。


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
8天前
|
存储 前端开发 中间件
CTO要求把所有逻辑放到数据库:合理性的深度剖析
【8月更文挑战第12天】在软件开发领域,关于系统架构的决策往往能深刻影响项目的成败。当CTO提出将所有逻辑放到数据库中的要求时,这一决策无疑会引发团队内部的广泛讨论。本文将从技术合理性、维护性、性能及可扩展性等多个维度,深入探讨这一要求的合理性与潜在影响,旨在为读者提供全面而深入的技术见解。
18 1
|
13天前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
72 1
|
20天前
|
Cloud Native 关系型数据库 分布式数据库
中国金融分布式数据库,双料冠军!
中国金融分布式数据库同比增长12.1%,阿里云绝对优势夺得公有云市场冠军
|
17天前
|
存储 负载均衡 中间件
构建可扩展的分布式数据库:技术策略与实践
【8月更文挑战第3天】构建可扩展的分布式数据库是一个复杂而具有挑战性的任务。通过采用数据分片、复制与一致性模型、分布式事务管理和负载均衡与自动扩展等关键技术策略,并合理设计节点、架构模式和网络拓扑等关键组件,可以构建出高可用性、高性能和可扩展的分布式数据库系统。然而,在实际应用中还需要注意解决数据一致性、故障恢复与容错性以及分布式事务的复杂性等挑战。随着技术的不断发展和创新,相信分布式数据库系统将在未来发挥更加重要的作用。
|
18天前
|
Cloud Native 关系型数据库 分布式数据库
中国金融分布式数据库,阿里云双料冠军!
中国金融分布式数据库,阿里云双料冠军!
36 1
|
21天前
|
存储 关系型数据库 MySQL
深度评测:PolarDB-X 开源分布式数据库的优势与实践
本文对阿里云开源分布式数据库 PolarDB-X 进行了详细评测。PolarDB-X 以其高性能、强可用性和出色的扩展能力在云原生数据库市场中脱颖而出。文章首先介绍了 PolarDB-X 的核心产品优势,包括金融级高可靠性、海量数据处理能力和高效的混合负载处理能力。随后,分析了其分布式架构设计,包括计算节点、存储节点、元数据服务和日志节点的功能分工。评测还涵盖了在 Windows 平台通过 WSL 环境部署 PolarDB-X 的过程,强调了环境准备和工具安装的关键步骤。使用体验方面,PolarDB-X 在处理分布式事务和实时分析时表现稳定,但在网络问题和性能瓶颈上仍需优化。最后,提出了改进建
6592 2
|
29天前
|
数据库
分布式锁实现问题之数据库中的分布式锁有哪些缺点
分布式锁实现问题之数据库中的分布式锁有哪些缺点
|
1月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中与事务隔离级别结合使用
乐观锁在分布式数据库中与事务隔离级别结合使用
|
13天前
|
SQL 监控 分布式数据库
【解锁数据库监控的神秘力量!】OceanBase社区版与Zabbix的完美邂逅 —— 揭秘分布式数据库监控的终极奥秘!
【8月更文挑战第7天】随着OceanBase社区版的普及,企业广泛采用这一高性能、高可用的分布式数据库。为保障系统稳定,使用成熟的Zabbix监控工具对其进行全方位监控至关重要。本文通过实例介绍如何在Zabbix中配置监控OceanBase的方法,包括创建监控模板、添加监控项(如TPS)、设置触发器及图形展示,并提供示例脚本帮助快速上手。通过这些步骤,可以有效监控OceanBase状态,确保业务连续性。
32 0
|
1月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。