论分布式数据库TiDB架构的“存”与“算”
作者:何朝洋
原文来源: https://tidb.net/blog/57ed0da1
在云计算基础设施IaaS服务中,“存”与“算”的分界是清晰的,客户会分别为“存”与“算”按需消费。不只是专门的存储服务如S3、对象存储、文件存储、NAS等,即使是在最基本的虚拟机服务ECS上,“存”也需要由消费者进行选择,而选择的对象是云盘,即位置对用户透明,不需要消费者关心是否在计算节点的本地:其实连计算节点本身位于何处也是无需关心,又何谈本地。随着云计算服务的持续发展,“存”与“算”的界限,无论是从消费模式上,还是从技术上,都呈现出越来越清晰的趋势。
而在PaaS层的数据库服务中,则出现两种情况。一种是“存”与“算”也由消费者分别选择并扩缩,而另一种则是购买服务时,“存”与“算”是固定捆绑的架构组合,可以定义大小,但无法相对独立地选择、部署与扩缩。
引发上述数据库服务不同消费模式的因素,实质上是在云中部署的数据库产品本身不同的技术架构,即“存”“算”分离,或“存”“算”一体。由于对单体数据库谈“存”与“算”的分离与一体,并没有多大意义,因此,主要是针对分布式数据库而言,其不同的特性带来了业界较为广泛的讨论。
那么,首先分析一下,在“存”“算”基础设施愈来愈独立清晰的趋势下,建立在其上的数据库服务“存”“算”一体现象从何来呢?不难发现,云平台上这样的数据库服务,大多都是基于“从非云环境中、应企业级On Premise需求产生与发展而来”的数据库产品。也就是说,其产品本初的设计理念就与“云”无关,只是后来为了寻求不同的商业模式而部署在云上而已;而大多数“存”“算”分离的数据库产品,其创始之初,就面向云环境进行设计,其中最典型的就是云原生分布式数据库TiDB。这里,顺便澄清一下现在极为流行的云原生概念,相当多的人混淆了云适配部署与云原生的概念,认为只要部署在云上,就是云原生了。其实云原生的概念与其字面意思极为直白契合,就是指在“云环境”中“原生”的,而不是从别的地方迁来的,即**“云原生”就是生长于云上的,而非云原生则是迁移到云上的,这也正是TiDB区别于同类产品的设计初衷与架构特点**。这与要深入理解目前同样火热的NFT,就必须先正确理解“区块链原生”概念的道理是一样的。
相信现在,关于“云”的问题应该是比较清晰了:“存”“算”分离是云原生的架构,而“存”“算”一体则不是,这一点相信读者不会有太多的疑问。那么,接下来的问题是:“云原生”就一定好吗?面向企业级的需求,“存”“算”分离与“存”“算”一体孰优孰劣?
世界上本来就没有绝对的好与绝对的坏,“存”“算”一体架构的设计,也是在满足企业需求的过程中自然产生的,对分布式数据库而言,“存”“算”一体的设计,无论是对传统单体数据库的替代上,还是对采用业务单元化策略的局部性满足上,还是对基于已有成熟数据库体系以二次开发构建分库分表数据库产品的方便性上,都产生了积极的历史作用。在那种情况下,不去考虑“云”的趋势与设计需求,也是合理的。
然而,过去几十年的历史已经证明,计算机技术的发展是极为迅速的,无论是软件还是硬件,当然包括数据库技术同样如此。
首先,往远处看的话:从计算机科学发展的角度,在云计算大趋势的驱动下,“计算”与“存储”技术相对独立的发展道路已经越来越明显,越来越清晰。可以想见,未来“计算”力相关的技术、架构与产品必将会发展到比如今所有极为先进的状态;未来“存储”相关技术、架构与产品也必将会进展到一个无法完全预计的崭新阶段,同时越来越“智能”。并且从目前的形势看,这个未来并不会太久远,如TiDB这样的“存”“算”分离架构无疑是适合那个未来的各种可能的,因为它本身就是为此而原生的,而“存”“算”一体在未来或许将变得无从谈起;而从国际上先进数据库技术发展的实际情况来看,绝大多数崭新的、最前沿的数据库相关技术与产品,都是云原生的,换句话说,都是采用“存”“算”分离的架构,这一点,几乎少有例外;而近期TiDB Cloud产品与相关的云运营策略发布与实施以后,为了在存储与计算层面都能很适配各种优秀的云基础设施,“存”“算”分离的架构就显得更加必要与先进了。
(或许可以猜测,把磁盘挂在本地这种现存商业计算机的架构,也是由企业/个体对计算机使用的商业模式驱动的,而不一定是技术驱动的必然结果)
其次,往近处看:对企业级现阶段数字化转型中,传统单体数据库替换的紧迫需求而言,大量的事实已经证明,TiDB“存”“算”分离的架构的云原生架构的数据库完全可以满足各种实际的业务转型需求:
. 对于企业在线弹性伸缩的业务发展需求,多地多中心多活的可靠性需求来讲,云原生架构无疑是最为得心应手的,因为这本就是其设计的初衷;
. 对于企业业务运行的性能诉求,首先从架构上并没有分布式架构中“存”“算”分离就劣于“存”“算”一体的技术理由;同时,近年来国际上云计算基础设施(存、算、网)的高速进展以及其上云原生数据库惊人的性能飞跃事实,也证明了云原生数据库的高性能与无限发展潜能;或许有人说“存”“算”一体同时还可以兼容单体数据库的优势,1. 试问,在新一代业务发展升级对分布式数据库提出强烈诉求的前提下,单体数据库的适配还有意义吗?2. 其实,云原生数据库厂商如果想做,也完全可以实现对单体数据库的兼容。但大多数的云原生数据库开发者并不想做这样的事情:有开发带宽为什么不用在更有意义的进展上呢?
. 对于从传统数据库时代就一直强调的、CPU级别的多租户功能,试问:在现阶段K8S容器化云计算标准环境进展普及如此迅猛的时代,这个级别的多租户还有意义吗?其实还是同样的逻辑,这样的功能开发也并不困难,云原生的厂商应该也不会把带宽优先放到这里来;
. 对于企业降本增效的诉求,“存”“算”分离不但可以各自根据“计算”与“存储”不同的发展速度(多数情况下各有增长快慢)与不同的服务级别要求(有的是计算要求高,有的是数据量大)灵活设计各自的方案规模,同时,对于脍炙人口的通过数据压缩“降本”,很明显也是“存”“算”分离能够真正产生降本的实效,因为它可以把“降本”与“增效”分开来看,而不是“降本”的同时必须“降效”,那这种降本的意义就会大打折扣。
例子还有很多.......
还有一个比较重要的方面: TiDB一直认为自己最开始并不是面向开发一个数据库而设计的,其最初的价值观就是提供未来社会的新一代“数据服务平台”,因此它更加需要一个“存”“算”分离的设计架构,而不是传统数据库领域最常见的存算一体。
最后还有一点需要强调:除了TiDB Cloud之外,对于其它 将“云”策略当成技术与业务核心发展战略 的企业来讲, 云原生架构 无论是面向现在与未来,自然是 最为适合 的;
或许可以这样说,“存”“算”一体的架构是现代分布式数据库技术进化过程中的一个重要过渡阶段,其历史作用不可否认,毋庸质疑;而不久的将来,以TiDB为典型代表与先行者的分布式数据库架构向云原生快速发展普及的趋势将会越来越明显,步伐将会越来越加快......
世界潮流,浩浩荡荡;顺之者昌,逆之者亡,顺应历史的潮流与趋势的选择一般都是明智的。
论分布式数据库TiDB架构的“存”与“算”相关推荐
- 最火的HTAP数据库 京东云新一代分布式数据库TiDB架构揭秘
作者丨京东智联云数据库团队 2020年伊始,一场突如其来的新冠疫情, 席卷了华夏大地.为了抵抗疫情,全国人民众志成城,共同抗疫.疫情期间,各行各业受到了巨大影响,多数线下服务和活动基本陷入了停滞状态. ...
- 分布式数据库TiDB是如何结合OLTP和OLAP的?
TiDB是一款开源.云原生.MySQL兼容的分布式数据库,可以处理混合事务和分析处理(HTAP)工作负载.它是"NEWSQL"关系数据库的一员,被设计为方便大规模部署.也许有人想知 ...
- Zabbix+分布式数据库TiDB实现分布式数据库监控
Zabbix+分布式数据库TiDB实现分布式数据库监控 一.Tidb的简介 1.什么是TiDB 2.TiDB 整体架构 2.主要模块简介 1) TiDB Server 2) PD Server 3) ...
- 论分布式数据库架构的“存”与“算”
在云计算基础设施IaaS服务中,"存"与"算"的分界是清晰的,客户会分别为"存"与"算"按需消费.不只是专门的存储服务如 ...
- 分布式数据库——TiDB的介绍和基本原理
1.TiDB 介绍 1.1 TiDB 介绍 1.1.1 TiDB 是什么? TiDB 是一个分布式 NewSQL 数据库.它支持水平弹性扩展.ACID 事务.标准 SQL.MySQL 语法和 MySQ ...
- PingCAP 开源分布式数据库 TiDB 论文入选 VLDB
8 月 31 日 - 9 月 4 日,第 46 届 VLDB 会议以线上直播的方式举行(原定于日本东京召开),PingCAP 团队的论文<TiDB: A Raft-based HTAP Data ...
- 猿创征文 | 国产数据库TiDB架构特性
前言 TiDB 是 PingCAP 公司自主设计.研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Pr ...
- 分布式数据库TiDB介绍
TiDB 是一款定位于在线事务处理 / 在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致 ...
- 分布式数据库 TiDB
一.TiDB介绍 与传统的单机数据库相比,TiDB具有以下优势: 纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容 支持SQL,对外暴露MySQL的网络协议,并兼容大多数MySQL的语法,在大多数场景 ...
最新文章
- 2022-2028年中国电商物流行业投资分析及前景预测报告
- 一个公众号可以绑定几个小程序_如何实现微信小程序和公众号的绑定
- 计算字符串相似度算法—Levenshtein
- J2EE (六) 详解 java 中文乱码
- Nginx设置静态页面压缩和缓存过期时间的方法 (转)
- Linux下如何删除长时间不使用的旧文件?
- 香港传媒高层访团莅临深之蓝参观访问
- Html中版权符号的字体选择问题(如何让版权符号更美观)
- vscode英文感叹号没出现提示文本解决方法!
- nginx 引号 x22
- Ubuntu系统中如何删除一个用户
- ppt转换成pdf格式转换器怎么使用
- html显示latex公式,wordpress显示数学公式插件【LaTeX转HTML】
- 编译原理—语法制导翻译、S属性、L属性、自上而下、自下而上计算
- JAVA技术交流(学习群):51194570;JAVA技术交流(应用群):51194804
- Excel如何提取指定位数数字
- Linux进程描述符task_struct结构体
- IE浏览器图片不显示,报DOM7009: 无法解码 URL 处的图像问题的解决方法
- 实例分享--消消乐也能做H5游戏?
- 【课程设计】通讯录管理系统(源码 + 详解)
热门文章
- 计算机专业项目指导教师评语,指导教师评语
- 知道c语言第三章节答案,《R语言入门与实践》第三章:R 对象
- 招标投标管理微信小程序解决方案
- 一键实现打release包 -> 360加固 -> 存档,并在后期一键实现针对某一版本生成Sophix补丁的gradle脚本
- vue3+ts 引入ztree插件
- Cadence软件包工具及功能介绍
- 【2019.3】Mysql8.0免安装版本数据库配置问题修改密码
- 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day4-判断和循环
- TE、TM、TEM波、垂直极化波和水平极化波
- MySQL 复习存储过程游标使用