在云计算基础设施IaaS服务中,“存”与“算”的分界是清晰的,客户会分别为“存”与“算”按需消费。不只是专门的存储服务如S3、对象存储、文件存储、NAS等,即使是在最基本的虚拟机服务ECS上,“存”也需要由消费者进行选择,而选择的对象是云盘,即位置对用户透明,不需要消费者关心是否在计算节点的本地:其实连计算节点本身位于何处也是无需关心,又何谈本地。随着云计算服务的持续发展,“存”与“算”的界限,无论是从消费模式上,还是从技术上,都呈现出越来越清晰的趋势。

而在PaaS层的数据库服务中,则出现两种情况。一种是“存”与“算”也由消费者分别选择并扩缩,而另一种则是购买服务时,“存”与“算”是固定捆绑的架构组合,可以定义大小,但无法相对独立地选择、部署与扩缩。

引发上述数据库服务不同消费模式的因素,实质上是在云中部署的数据库产品本身不同的技术架构,即“存”“算”分离,或“存”“算”一体。由于对单体数据库谈“存”与“算”的分离与一体,并没有多大意义,因此,主要是针对分布式数据库而言,其不同的特性带来了业界较为广泛的讨论。

那么,首先分析一下,在“存”“算”基础设施愈来愈独立清晰的趋势下,建立在其上的数据库服务“存”“算”一体现象从何来呢?不难发现,云平台上这样的数据库服务,大多都是基于“从非云环境中、应企业级On Premise需求产生与发展而来”的数据库产品。也就是说,其产品本初的设计理念就与“云”无关,只是后来为了寻求不同的商业模式而部署在云上而已;而大多数“存”“算”分离的数据库产品,其创始之初,就面向云环境进行设计。这里,顺便澄清一下现在极为流行的云原生概念,相当多的人混淆了云适配部署与云原生的概念,认为只要部署在云上,就是云原生了。其实云原生的概念与其字面意思极为直白契合,就是指在“云环境”中“原生”的,而不是从别的地方迁来的,即“云原生”就是生长于云上的,而非云原生则是迁移到云上的。这与要深入理解目前同样火热的NFT,就必须先正确理解“区块链原生”概念的道理是一样的。

相信现在,关于“云”的问题应该是比较清晰了:“存”“算”分离是云原生的架构,而“存”“算”一体则不是,这一点相信读者不会有太多的疑问。那么,接下来的问题是:“云原生”就一定好吗?面向企业级的需求,“存”“算”分离与“存”“算”一体孰优孰劣?

世界上本来就没有绝对的好与绝对的坏,“存”“算”一体架构的设计,也是在满足企业需求的过程中自然产生的,对分布式数据库而言,“存”“算”一体的设计,无论是对传统单体数据库的替代上,还是对采用业务单元化策略的局部性满足上,还是对基于已有成熟数据库体系以二次开发构建分库分表数据库产品的方便性上,都产生了积极的历史作用。在那种情况下,不去考虑“云”的趋势与设计需求,也是合理的。

然而,过去几十年的历史已经证明,计算机技术的发展是极为迅速的,无论是软件还是硬件,当然包括数据库技术同样如此。

首先,往远处看的话:从计算机科学发展的角度,在云计算大趋势的驱动下,“计算”与“存储”技术相对独立的发展道路已经越来越明显,越来越清晰。可以想见,未来“计算”力相关的技术、架构与产品必将会发展到比如今所有极为先进的状态;未来“存储”相关技术、架构与产品也必将会进展到一个无法完全预计的崭新阶段,同时越来越“智能”。并且从目前的形势看,这个未来并不会太久远,“存”“算”分离无疑是适合那个未来的各种可能的,因为它本身就是为此而原生的,“存”“算”一体在未来或许将变得无从谈起;而从国际上先进数据库技术发展的实际情况来看,绝大多数崭新的、最前沿的数据库相关技术与产品,都是云原生的,换句话说,都是采用“存”“算”分离的架构,这一点,几乎少有例外。

(或许可以猜测,把磁盘挂在本地这种现存商业计算机的架构,也是由企业/个体对计算机使用的商业模式驱动的,而不一定是技术驱动的必然结果)

其次,往近处看:对企业级现阶段数字化转型中,传统单体数据库替换的紧迫需求而言,大量的事实已经证明,云原生架构的数据库完全可以满足各种实际的业务转型需求:

  1. 对于企业在线弹性伸缩的业务发展需求,多地多中心多活的可靠性需求来讲,云原生架构无疑是最为得心应手的,因为这本就是其设计的初衷;
  2. 对于企业业务运行的性能诉求,首先从架构上并没有分布式架构中“存”“算”分离就劣于“存”“算”一体的技术理由;同时,近年来国际上云计算基础设施(存、算、网)的高速进展以及其上云原生数据库惊人的性能飞跃事实,也证明了云原生数据库的高性能与无限发展潜能;或许有人说“存”“算”一体同时还可以兼容单体数据库的优势,1. 试问,在新一代业务发展升级对分布式数据库提出强烈诉求的前提下,单体数据库的适配还有意义吗?2. 其实,云原生数据库厂商如果想做,也完全可以实现对单体数据库的兼容。但大多数的云原生数据库开发者并不想做这样的事情:有开发带宽为什么不用在更有意义的进展上呢?
  3. 对于从传统数据库时代就一直强调的、CPU级别的多租户功能,试问:在现阶段K8S容器化云计算标准环境进展普及如此迅猛的时代,这个级别的多租户还有意义吗?其实还是同样的逻辑,这样的功能开发也并不困难,云原生的厂商应该也不会把带宽优先放到这里来;
  4. 对于企业降本增效的诉求,“存”“算”分离不但可以各自根据“计算”与“存储”不同的发展速度(多数情况下各有增长快慢)与不同的服务级别要求(有的是计算要求高,有的是数据量大)灵活设计各自的方案规模,同时,对于脍炙人口的通过数据压缩“降本”,很明显也是“存”“算”分离能够真正产生降本的实效,因为它可以把“降本”与“增效”分开来看,而不是“降本”的同时必须“降效”,那这种降本的意义就会大打折扣。

例子还有很多.......

最后还有一点需要强调:对于那些将“云”策略当成技术与业务核心发展战略的企业来讲,云原生架构无论是面向现在与未来,自然是最为适合的;

或许可以这样说,“存”“算”一体的架构是现代分布式数据库技术进化过程中的一个重要过渡阶段,其历史作用不可否认,毋庸质疑;而不久的将来,分布式数据库架构向云原生快速发展普及的趋势将会越来越明显,步伐将会越来越加快......

世界潮流,浩浩荡荡;顺之者昌,逆之者亡,顺应历史的潮流与趋势的选择一般都是明智的。

论分布式数据库架构的“存”与“算”相关推荐

  1. 论分布式数据库TiDB架构的“存”与“算”

    作者:何朝洋 原文来源: https://tidb.net/blog/57ed0da1 在云计算基础设施IaaS服务中,"存"与"算"的分界是清晰的,客户会分别 ...

  2. 五分钟DBA:浅谈伪分布式数据库架构

    [IT168 技术]12月25日消息,2010互联网行业技术研讨峰会今日在上海华东理工大学召开.本次峰会以"互联网行业应用最佳实践"为主题,定位于互联网架构设计.应用开发.应用运维 ...

  3. 可扩展的分布式数据库架构 vs 传统关系数据库

    可扩展的分布式数据库架构 7 15th, 2010 | Posted by jacky | Filed under 大话技术 发表评论 | Trackback 本文发表在<程序员>杂志20 ...

  4. 可扩展的分布式数据库架构

    引 言 数据库的可用性和扩展性一直是数据库厂商和用户最关注的问题.过去我们采用高端的设备,比如使用小型机和大型存储来保证数据库的可用 性.而扩展性主要采用向上扩展(Scale up)的方式,通过增加C ...

  5. 昆仑分布式数据库架构介绍

    一.前言 昆仑分布式数据库集群(下文简称昆仑数据库)是一个分布式关系数据库管理系统,面向TB和PB级别海量数据处理,以高吞吐量和低延时处理海量数据高并发读写请求. 它提供健壮的事务ACID保障,高效易 ...

  6. 黄东旭:Cloud-Native 的分布式数据库架构与实践

    19 日,我司 CTO 黄东旭同学在全球云计算开源大会上,发表了<Cloud-Native 的分布式数据库架构与实践>主题演讲,以下为演讲实录~~ 大家好,今天我的题目是 Cloud-Na ...

  7. 基于内存数据库的分布式数据库架构

    [摘要] 本文提出了一种通过引入内存数据库层,建立两层多分区分布式数据库架构.此方案用于解决海量高并发系统的数据存储和访问问题,尤其适用于电子商务等数据模型复杂且业务复杂的互联网站. 这些年互联网站发 ...

  8. Mycat社区出版: 分布式数据库架构及企业实践——基于Mycat中间件

    书名: 分布式数据库架构及企业实践--基于Mycat中间件 作者:周继锋 冯钻优 陈胜尊 左越宗 ISBN:978-7-121-30287-9 出版年月:2016年11月 定价:79元 开本:787× ...

  9. 【转载】分布式数据库架构--分库、分表、排序、分页、分组、实现

    MySQL分库分表总结: 单库单表 : 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 : 随着用户数量的增加, ...

最新文章

  1. Ubuntu下安装Anaconda
  2. OracleJDBC
  3. akcms在模板文件中书写{php},AKCMS支持灵活的模板插件
  4. ASP.NET MVC 入门1、简介
  5. LeetCode 46. 全排列(回溯)
  6. Android 应用开发---ViewPager---4自主实现滑动指示条
  7. is_callable_Python callable()和__call __()
  8. VMware虚拟机中Linux系统如何修改IP地址
  9. 计算机文化与计算机技术有什么区别,什么是计算机文化?
  10. 如何学习计算机思维,刘康平:为什么我们每个人都应该学习计算思维?
  11. CDSP认证是什么?数据安全认证专家含金量大吗?
  12. 联想y9000x做java_联想Y9000X装win7系统及BIOS设置教程(支持9代)
  13. 实现微信公众号评论回复功能
  14. 后台管理----首页布局分析1
  15. 单相变压器的平衡方程式
  16. 用java敲出三角_手敲Java:打印菱形!
  17. 2017亿欧创新者年会暨第三届创新奖颁奖盛典 | 互联网行业公会
  18. 深入Java集合系列之七:Hashtable
  19. 通信教程 | I²C基础原理及通信协议
  20. SQLyog数据库列表(对象浏览器)字体大小设置方法,不是普通字体大小设置

热门文章

  1. 树莓派安装pytorch环境记录
  2. Linux创建空白文件,ubuntu添加右键新建文本文档
  3. pycharm 中的backspace 在ubuntu 16.04 不可以用
  4. 功能:crypto-js加密解密
  5. 自学Unity能找到工作吗
  6. 算是目前看到过最好的面试手册了
  7. Kicad学习笔记1:KLC:Kicad库公约(kicad liberary convertion)
  8. 拥抱智能时代:初探RFID系统
  9. Exchange 2010 POP3客户端响应错误 550 5.7.1
  10. 浙江工业大学大学生程序设计迎新赛预赛( F,小妈妈找蝌蚪 L ,取数游戏 M,小杰的签到题)