分布式数据库新秀TIDB初探

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 背景随着社会数字化程度的加深,网络逐渐成为了社会的基础设施。随着互联网渗透程度的不断深入和互联网的进一步下沉,人们会在互联网上面 花费更多的时间,产生更多的数据。作为数据存储基石的DB面临着新的挑战和发展空间,由于数量的增长,之前的单机DB将面临越来越多的挑战,此时就出现数据库扩展的多种方案以满足海量数据的存储。目前主流的应对方案主要是分库分表,但是也存在着分布式事务,跨节点 join,扩容复杂等

背景

随着社会数字化程度的加深,网络逐渐成为了社会的基础设施。随着互联网渗透程度的不断深入和互联网的进一步下沉,人们会在互联网上面 花费更多的时间,产生更多的数据。作为数据存储基石的DB面临着新的挑战和发展空间,由于数量的增长,之前的单机DB将面临越来越多的挑战,此时就出现数据库扩展的多种方案以满足海量数据的存储。目前主流的应对方案主要是分库分表,但是也存在着分布式事务,跨节点 join,扩容复杂等局限。

分布式数据TIDB简介

TIDB是一款同时支持在线事务处理和在线分析处理数据(Hybrid Transactional and Analytical Processing, HTAP)的关系性分布式数据库。在线事务处理,一般日常的事务处理数据库类型。在线分析处理,指由于数据分析的数据库类型,侧重于数据分析与决策,大多是基于MR模型的分布式存储系统或者是列式存储,例如clickhouse。

  • 一键水平扩容或者缩容

由于采用计算与存储分离,可针对不同场景对计算模块或者存储模块快速透明化扩容。

  • 金融级高可用

多副本存储,基于raft协议的事务日志

  • 实时 HTAP

通过基于两种不同的存储模型TIKV和列式存储TiFlash,同时支持OLTP和OLAP,通过raft协议保持两者数据的强一致性。

  • 云原生的分布式数据库

可以基于TIDB生态的 TI oprator,在私有云、公有云或者混合云实现工具化部署。

  • 兼容 MySQL 5.7 协议和 MySQL 生态

兼容大部分Mysql 5.7协议,用户可以在原有代码不做变更的基础上,在Mysql和TIDB之间实现透明化迁移。

架构

(图片来自Pingcap官网)

TIDB整个集群主要分为TIDB Server、PD Server、TIKV Server 、TIFlash(可选)

TIDB Server:这部分主要负责Sql 解析、优化,生成执行计划,此部分是无状态的。TIDB 还扮演着计算下推的角色,

同步对SQL的解析和分析,推断是适用TIKV还是TIFlash,将数据计算下推到数据存储层。例如要按照某一个字段的一段范围的内单位时间的度量,将会下推给TIflash引擎,利用列式存储提高查询性能。

PD Server:元信息模块。主要负责数据在TIKV的分布情况和集群的拓扑情况,协调数据数据迁移。

并负责生成分布式事务的唯一ID。

TIKV:TIKV是基于rocksdb二次开发的KV存储引擎。Region为最基本数据存储单元,在每一个region中按序存储一段数据,Region的迁移、合并、迁移受PDServer的调控。

TIFlash:列式存储引擎、记得之前是基于clickhouse开发的存储引擎。作为TIKV learner的角色提交数据。异步复制、一致性(读之前会校验与Leader的数据同步状态)。clickhouse特点,多线程并发查询,海量数据情况下并能比较优异,确定就是并发度不高。

分布式事务

TIDB的分布式事务是基于Google 的Percolator二阶段提交算法实现的。从3.0开始默认实现是悲观事务,参考TiDB 新特性漫谈:悲观事务。并且基于MVCC多版本控制实现了事务的并发控制,详细可以参考TiKV 的 MVCC(Multi-Version Concurrency Control)机制

Region存储模型

大数据量的KV存储目前有两种存储方案。

  1. 基于Hash 的 Map存储方案,例如redis。
  2. 基于LSM Tree的有序分块存储的方案,例如mongodb,rocksdb。

TIDB的KV实现 是基于第二种的实现,Region是数据在TIKV中的存储基本数据模型,为了方便数据在rocksdb的存储和迁移,tidb将数据以region为单位组织存储。在每一个region中数据均顺序组织(startKey,endKey),方便PD的调度迁移与写入。并且数据的复制与分发也已region为单位组织。

详细可以参考TIDB存储-region

性能分析

下面是之前做的一份压测数据。

  • 1 TIDBServer,3 TIKV,同城三机房部署。
  • 并发10qps,同时查询数8SQL。
  • 工具Jemter
  • 数据量200-300G
  • TIDB 4.x版本

机器性能暂时没有打满,可以看到响应时间基本在15ms左右

除了这份数据和pingcap公布的官方tpc数据,还有其他部分公司DBA在自己测试环境做了压测。得出结论,在数据量达到一定程度下,与mysql性能相比差距不大,并且在某些场景会超过mysql的性能。当然刚刚发布的5.0版本性能又有了一定提升

其他以官方公布的数据为准 TiDB Sysbench 性能对比测试报告 - v5.1.0 对比 v5.0.2

使用现状

TIDB作为国内公司开发的分布式数据库新秀,受到国内许多互联网、金融、银行等行业公司的关注,并投入了一定的资源参与到了TIDB的生态建设。例如美团、伴鱼、bilibili等。

总结

随着数字化加深、数据量的暴增,分布式数据库是未来解决海量数据的唯一途径。同时随着云原生基础设施不断地完善,作为整条链路的最后一块单点阵地-数据库,基于云设施的分布式方案前景看好。并且随着国内技术行业的升级,相信会有更多像TIDB这种自研的优秀的基础技术产品涌现。去探寻技术附加值更高的市场,打造数据我们自己的技术壁垒。支持国产!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
13天前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
12天前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
59 0
|
17天前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
44 5
|
18天前
|
运维 安全 Cloud Native
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
|
11天前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
26 0
|
13天前
|
Cloud Native 关系型数据库 分布式数据库
什么是云原生数据库PolarDB分布式版
本文介绍什么是云原生数据库PolarDB分布式版,也称为PolarDB分布式版,本手册中简称为PolarDB-X。
31 0
|
1月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
85 1
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
中国金融分布式数据库,双料冠军!
中国金融分布式数据库同比增长12.1%,阿里云绝对优势夺得公有云市场冠军
|
1月前
|
存储 负载均衡 中间件
构建可扩展的分布式数据库:技术策略与实践
【8月更文挑战第3天】构建可扩展的分布式数据库是一个复杂而具有挑战性的任务。通过采用数据分片、复制与一致性模型、分布式事务管理和负载均衡与自动扩展等关键技术策略,并合理设计节点、架构模式和网络拓扑等关键组件,可以构建出高可用性、高性能和可扩展的分布式数据库系统。然而,在实际应用中还需要注意解决数据一致性、故障恢复与容错性以及分布式事务的复杂性等挑战。随着技术的不断发展和创新,相信分布式数据库系统将在未来发挥更加重要的作用。
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
中国金融分布式数据库,阿里云双料冠军!
中国金融分布式数据库,阿里云双料冠军!
46 1