本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。

回顾历史

自1970年 Codd 祖师爷提出关系模型开始,关系型数据库在五十多年的时间中蓬勃发展。早期互联网的流量并不想我们现在所处的年代,QPS的需求往往百级别就绰绰有余,但是2000年左右互联网应用如雨后春笋,一时间庞大的资源要求远超传统的软件服务,在这种日益增长的极端需求下,对并发性能,可用性的需求变得极为迫切。

传统数据库注重于实现强ACID特性,在可用性和性能上有所损失,这种 trade-off 与一些互联网应用的需求背道而驰。其次关系模型在一些场景下表达能力过强,在这些场景下使用SQL似乎有些大材小用,带来了不必要的性能损失,相比之下在这些场景各种垂直领域的数据库优势显然更大。后者直接导致了2005年到2010年间 “NoSQL运动”的兴起,一时间百家争鸣,KV,Document,Wide column,graph,Spatial,Time Series,Search engines等等数据模型好不风光。

虽然NoSQL一时间风光无限,但是关系模型带来的ACID理念仍旧深入人心,而且很多场景非常需要事务带来的强一致能力,这就意味着SQL仍然占据了主要的市场份额:

此时我们的处境是传统数据库逐渐成为了互联网应用的瓶颈,NoSQL系统使用强一致性交换高可用性,而且传统的升级机器和中间件解决方案治标不治本[1]。自1960年第一个数据库管理系统 Integrated Database System(IDS) 诞生之初的理念就是“应用程序逻辑与数据操作逻辑分离”,显然对于并发,可用等需求最优雅的解决方案莫过于在数据库管理系统中满足这些需求。

在这种大环境的推动下,New-SQL这个术语在2011年在[3]中被第一次提出,自此浩浩荡荡的“New-SQL运动”开始了。在[1]中Andy对New-SQL下对定义是:

NewSQL is that they are a class of modern relational DBMSs that seek to provide the same scalable performance of NoSQL for OLTP read-write workloads while still maintaining ACID guarantees for transactions.

且针对的读写事务有如下特征:

  1. are short-lived (i.e., no user stalls)
  2. touch a small subset of data using index lookups (i.e., no full table scans or large distributed joins),
  3. are repetitive (i.e., executing the same queries with different inputs).

下图是[1]中的对当时已有New-SQL对一个总结:

大数据领域的绝对大哥Google(Amazon当然也是大哥)从 2011 Megastore 这个过渡品到 2012 Spanner 的究极完全体为 “New-SQL运动”带来精神寄托,一时间涌现出很多类Spanner的New-SQL系统,比如TiDB,yugabyteDB,CockroachDB,这些大名到今天听来仍然是如雷贯耳。

但是不得不提到的是[1]中提到New-SQL其实其实并没有在架构上做出突破性进展,更多的是一种把已有的研究成果伴随以极致工业化的结果。从[2]中我们也可以看到Andy对于New-SQL这个术语其实并不认同,并提到目前只有中国的数据库创业公司称自己为New-SQL,对此类数据库主流的称呼为Distributed SQL。不过有一说一,确实Distributed SQL听起来确实名副其实一些。

展望未来

那么未来会如何发展呢?

Andy在[1]中提到认为以下四类数据库会在未来逐渐融合:

  1. the older DBMSs from the 1980-1990s
  2. the OLAP data warehouses from the 2000s
  3. the NoSQL DBMSs from the 2000s
  4. the NewSQL DBMSs from the 2010s

看了这个列表,不禁感叹,这不就是HTAP+多模吗。确实,未来把这些本来业务无关的代码下沉到DB层是一种趋势,倘若业务眼前有一个集存储,分析,多模型,gloabl为一体的数据库,那么只需要注重业务代码的编写即可,这对人心智的解放和降本都是大有裨益的。

[5]中李飞飞大佬提到未来数据库技术的发展趋势将集中于以下六点:

  1. 云原生与分布式
  2. 大数据与数据库一体化
  3. 软硬件协同
  4. 多模型
  5. 智能化运维,自治性与智能性
  6. 安全可信

站在我个人现在这一时刻的角度来看,第三点和第五点不会是我个人的发展方向,因为目前对硬件和AI并无太多了解。至于第二点和第六点,OLAP以及大数据分析工具目前并不擅长,安全可信这一点目前中国的各大厂商并不重视,暂时没有发展前景。所以我更愿意押宝云原生与分布式以及多模型。

云原生数据库

称云计算为一次计算机产业的变革我认为并无不妥,其解决了IT基础设施构建的痛点,利用容器化,虚拟化,编排系统组成了一个云端操作系统,为各种资源使用带来了一个令人无法拒绝的优势,即“弹性”。

云原生其实到今天也没有一个官方的定义,但可以大致理解为下:

一个灵活的工程团队,遵循敏捷开发的原则,使用高度自动化的研发需求,开发专门基于并部署在云基础设施上的应用,以满足快速变化的客户需求。

云原生数据库则可以理解为充分利用云计算基础设施的特性设计的数据库,最大的特点是可伸缩,细粒度弹性,按需取用的服务化能力。与其对应的Distributed SQL则强调线性扩展能力,完全ACID语义和sql支持

其实如何理解云原生数据困扰过我一段时间,但其实其强调的就是利用云赋予的弹性去实现按需使用,这就意味着:

  1. 存算分离
  2. 极致弹性
  3. 高可用
  4. 高性能

这几点是必不可少的。这样看来云原生的最终形态不就是Serverless吗,这是目前我能想到的最弹性的按需获取。阿里至少在这条路上已经走到了前面,[6]中提出的计算,内存,存储分离的架构实在是过于先进,不过现在广为人知的不也是几十年前无人问津的吗。

不过一个云原生数据库的架构应该是什么样子呢?我们以PolarDB-X举一个简单的例子[5](因为细节的我也不懂…),PolarDB-X采用Shared nothing 和 Shared Everything 结合的架构。单个PolarDB中利用RDMA和PolarFS[7]的极致工业用户减少 Shared Everything 带来的网络瓶颈(X-Engine也是秀的人头皮发麻[9]),同时多个PolarDB之间采用 Shared nothing, 这种混合架构的好处是它减轻了小碎片过多的缺点。特别是降低跨分区事务的概率(单个PolarDB内提交无冲突),且Re-balence也更为轻松。

最重要的优点如下:

  1. 计算和存储资源被解耦,计算和存储节点可以使用不同类型的服务器硬件,并且可以单独定制。例如,计算节点不再需要考虑内存大小与磁盘容量的比率,这高度依赖于应用场景,并且很难预测。
  2. 它突破了单节点数据库(如 MySQL、PostgreSQL)的局限性。存储节点上的磁盘形成一个存储池,这降低了碎片化、使用不平衡和空间浪费的风险.
  3. 由于数据都存储在存储集群上,计算节点上没有本地持久状态,这使得执行数据库迁移更容易、更快
  4. PolarFS 提供的数据复制和其他高可用特性,数据可靠性也可以得到提高。

其实这已经满足了我们上面提到的那几点。

多模型数据库

从 DB Ranking 就可以看出多模型无疑是一个趋势:

前二十中有十三个产品中已经支持多模型,从[5]中可以看到李飞飞对于多模多未来预期是:

An important application scenario at Alibaba is to support multi-model analysis, which consists of two aspects: southbound and northbound multi-model access. The southbound multi-model access indicates that the underlying storage supports different data formats and data sources. The stored data can be either structured or non-structured, e.g., graph, vector and document storage. The database then provides a unified query interface, such as a SQL or SQLlike interface, to query and access various types of data sources and formats, forming a data lake service. The northbound multi-model access indicates that a single data model and format (e.g., key-value model in most cases) is used to store all structured, semi-structured and unstructured data in a single database. On top of this single storage model, the database then supports multiple query interfaces, such as SQL, SPARQL and GQL depending on the application needs. Microsoft CosmosDB [9] is a representative system of this kind.
In addition to addressing our internal business operation needs, being able to support multi-model analysis is also an essential requirement for cloud database services. Many cloud applications require to collect large-volumes of data from heterogeneous sources, and conduct federated analysis to link different sources and reveal business insights (i.e., south-bound multi-model access). On the other hand, a cloud database (e.g., a large KV store such as HBase) is often a central data repository accessed by multiple applications with various application needs. They may prefer to use different query interfaces due to usability and efficiency, where northbound multi-model analysis is needed.

基本上这个领域的大哥还是Azure CosmosDB[8]。可能是我见识短浅,其实目前看起来我相对熟悉的更多的产品还是走向 northbound,比如yugabyteDB,Redis,包括我现在所在部门做的产品,更强调易用性。

而 lake service base multi model(southbound) 我认为更多的用于数据分析中,其更加强调与多模型分析。

总结

其实数据库融合的趋势已经是可以预料到的事情了,虽然题目中我提到Distributed SQL,云原生数据库,多模型数据库,但是在很多实例上这些特征在现在这一时刻已经融为一体了。

历史的车轮滚滚向前,谁也无法阻挡。

目前看来笃学好古才是真真切切需要去做的,一只眼睛看前面的路,两只脚和另外一只眼睛负责脚下的路,如是而已。

参考:

  1. What’s Really New with NewSQL
  2. The Official Ten-Year Retrospective of NewSQL
  3. How will the database incumbents respond to NoSQL and NewSQL?
  4. TiDB使用实践
  5. Cloud-Native Database Systems at Alibaba: Opportunities and Challenges
  6. PolarDB Serverless: A Cloud Native Database for Disaggregated Data Centers
  7. PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Database
  8. Azure Cosmos DB
  9. X-Engine: An optimized storage engine for large-scale e-commerce transaction processing
  10. What is Distributed SQL?
  11. Distributed SQL vs. NewSQL

从历史见证未来,Distributed SQL?云原生数据库? 多模型数据库?相关推荐

  1. 大数据云原生能力成熟度模型,重磅发布!

    为了分享过去一年云原生产业联盟(CNIA)在标准建设.评估测试.技术研究.实践合作等方面的工作成果.探索行业最新趋势动态,云原生产业联盟于2023年1月9日举办了2022年度线上年会,发布了" ...

  2. 2019年成云原生普及元年 未来或将“云原生一切”

    随着云原生的普及,未来企业IT架构将走向"云原生一切"也未可知. 近几年的IT圈,技术的更迭开始加速,从软件定义一切到Kubernetes编排一切,大有你方唱罢我登场的意思.说到近 ...

  3. 身为程序员,就应该了解微服务的未来发展趋势:云原生应用架构

    微服务发展趋势 随着Docker技术的普及和Kubernetes在互联网公司的大量部署与使用,微服务架构正在围绕应用如何易于开发交付.减少资源消耗.无侵入治理等方面进行变革和演进. 本篇我们将讲解云原 ...

  4. 加速迈入云原生时代,国产数据库行业要变天

    当前,千行百业正处于数字化转型的关键时期,数据已经成为企业重要的生产要素,甚至被业内人士称之为企业资产. 作为承载数据处理的基石,数据库在数字化变革中正在发挥着重要作用. 随着技术创新的加快,以及行业 ...

  5. 云原生项目正确的数据库选择

    项目痛点 本项目为和AWS Proserve  合作自研云原生开发的一期项目:网点价的自动计算,项目痛点:网点价受产品的多种参数影响:包含但不限于具体出轴类型.型号规格.传动比.安装形式.装配形式.电 ...

  6. 【云原生】-国产开源数据库openGauss容器部署

  7. 一年增加1.2w星,Dapr能否引领云原生中间件的未来?

    作者 | 敖小剑 Dapr 将引领云原生时代应用和中间件的未来. Dapr 是由微软发起的云原生开源新项目,在今年 2 月份刚刚发布了 v1.0 正式版本.虽然推出至今不过一年半时间,但 Dapr 发 ...

  8. 安全大讲堂 | 陈屹力:未来云原生安全能力建设将强调体系化的安全防护

    随着云计算技术的成熟与发展,越来越多企业加速"上云"进程,云原生应用也日益普及并开始承载企业核心生产系统. 近日,腾讯安全云鼎实验室「安全大讲堂」邀请中国信通院云大所云计算部副主任 ...

  9. 云原生数据库如荼如火,未来可期

    文章目录 一.云原生数据库解读 1.1 什么是云原生 1.2 什么是云数据库 1.3 云数据库VS传统数据库 二.云数据库技术 2.1 容器化技术 2.2 存算分离 2.2.1 关于存算分离的划分 2 ...

最新文章

  1. Leangoo用户设置在哪里?
  2. 内存映像分析工具Eclipse Memory Analyzer
  3. 链接并执行GitHub上托管的外部JavaScript文件
  4. 广义hough变换matlab,matlab – 广义Hough R表
  5. nedc和epa续航里程什么意思_为何特斯拉的锂电池行驶里程至今仍无人超越?
  6. 充血模型的ORM能做什么?——ORM组件XCode(十八般武艺)
  7. 无法显示论坛的登陆验证码
  8. windows7 x86_64系统安装xampp后apache无法启动,端口冲突
  9. Struts2结果页面配置(Result)
  10. 前端入门: 用css设置文字样式
  11. oracle 常用调优方法
  12. 一文教会你导出微信聊天记录
  13. 文章详情页面评论功能添加及实现原理
  14. c语言课程设计作业心得体会,【c语言课程设计心得体会】 c语言课程设计报告总结...
  15. 第12课:(2)线性回归建模实验
  16. netkeeper代理服务器未响应,使用netkeeper创翼网速慢解决方案(C13)
  17. 2021-01-30
  18. 通过css让图片设置成黑白色
  19. 计算56除以四十可以用计算机,CPU如何来计算除法 一
  20. 高校邦python程序设计基础_高校邦Python程序设计基础【实境编程】答案

热门文章

  1. 初次注册知乎账号,不小心遭受系统限制,该如何解封?
  2. Android 监听系统语言切换
  3. 王延炯_海量数据处理的架构与实践
  4. 作文组装计算机,学组装作文
  5. c语言中完美立方的程序,完美立方,完全立方公式
  6. SLAM求职和学习经验
  7. 5s解决报错:Unbound pointcut parameter ‘xxxxxx‘
  8. 【低代码】ivx与云原生的联系
  9. 短线看盘比较有效的方法
  10. 基于gradle的dependency-management配置实现多模块springboot依赖库的版本管理