前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈关系型数据库的演变

浅谈关系型数据库的演变

作者头像
sean.liu
发布2022-09-07 10:46:55
5410
发布2022-09-07 10:46:55
举报

总结一下对关系型数据库变化粗浅的认识。

前言

第一次知道数据库,是在大学时的数据库课程,那个时候的数据库特指关系型数据库。到后面工作后,才知道除了MySQLOralce这类关系数据库之外,还有NoSQL。 印象中,当时NoSQL由于优秀的性能和扩展性,发展迅速。但技术并非一成不变,二者可以相互借鉴。 待NoSQL潮水褪去,NewSQL出现,就像是是NoSQLSQL在易用性和可扩展性上的平衡。

技术线

关系型数据库的特点

1.SQL。 2. 事务,符合ACID原则。 3. 结构化存储。 这些特点的关键,就是易用性。 比如世界上使用最多的数据库SQLite,常用于手机App的本地存储。它就是一个lib库,小巧而精悍。但也支持上述的特点。因此也是一款关系型数据库。

可用性需求

主备同步的优化

MySQL,PostgreSQL,都是流行的数据库之一,它们广泛用于在线交易,或近线计算中。它们都有主备同步的方案。

默认方案

比如MySQL基于Binlog同步数据,有异步同步和半同步,通常使用外部高可用组件来控制流量。 但由于binog并非强同步,所以主库彻底挂掉的情况下,会存在丢数据的风险。 PostgreSQL可以强同步,但同样存在问题,备库异常会影响主库可用性。

引入分布式共识

可用性和一致性无法两全其美,但可以尽可能的优化。比如使用3个节点,相比2节点强同步,能达到同等一致性,也有更好的可用性。 使用分布式共识算法来同步日志是目前的标准做法,类似SpannerTiDB,OceanBaseNewSQL也都是基于分布式共识算法来保证数据的一致性。

使用Mulit-Paxos算法的产品

传统数据库: AliSQL X-Cluster,TDSQL,MySQL Group Replication NewSQL: Spanner,Oceanbase

使用Raft算法的数据库

Tidb,CockroachDB

两种算法各有千秋。

更大的吞吐能力

当单台服务器的资源不足以支撑数据库的需求时,我们需要进行扩容,提升资源。 1. ScaleUp: 提升单机的性能,比如使用更好的CPU,更大的内存,更大更快的SSD存储。 2. ScaleOut: 使用更多的服务器。

硬件提升终归有限,所以ScaleOut是最后的办法。目前,ScaleOut有两种Shared-Nothing,Shared-Disk.

Shared-Disk

在这个方向,有一个优化思路是将本地存储使用分布式存储替换。 1. 适合容量非常大,但写较少的场景。 2. 完全兼容单机数据库。 2. 缺点则是只解决了存储瓶颈,并没有解决计算和内存的瓶颈。

使用这种方案最经典的产品是 1. Oracle RAC,使用专用存储,应该是比较费钱。 2. Amazon Aurora/PolarDB MySQL,改造了Innodb,使用分布式存储的方式存储文件。 3. OceanBase0.5,最早的OceanBase,ChunkServer其实就是分布式存储,UpdateServer则是单点的修改入口。因此当时的结构,更像是Shared-Disk的设计。 4. 使用虚拟机运行数据库也是个不错的办法,因为云上的分布式存储本身就具备很高的可用性,比如直接将数据库跑在使用云盘的ECS上,也差不多可以达到这个效果。较好的云盘,可能也会使用RDMANVME等技术。搭车很不错。

Shared-Nothing

使用分布式集群的方式来提升系统容量。简单说,就是将请求分散到多台服务器上处理。

分布式中间件

分布式中间件是在NewSQL出现前,最常用的解决办法。

关键功能
  1. 分库分表访问
  2. 全局Sequence,全局递增但不一定连续。
  3. 小表广播
  4. 全局索引
几个分布式中间件
  1. Taobao Distributed Data Layer,淘宝分布式中间件,外号头都大了。是基于客户端实现的中间件,没有Proxy,承担淘宝很多核心的数据库访问。
  2. MariaDB MaxScale/Spider,开源的Proxy式中间件,基于MySQL内核实现。

分布式中间件具备了一定分布式的能力,但依然有很多限制,但已经非常接近NewSQL了。 有的NewSQL产品就是分布式中间件的实现。

分布式事务的需求

在解决了上面的各种问题之后,NewSQL还要解决的问题就是分布式事务。 比如常见的交易系统实现,我们可以使用中间件来做分库分表,达到很快的订单创建。订单创建同时,我们需要扣减库存,需要扣款。这些动作分布式中间件不能支持事务,通常需要另一个中间件来实现分布式事务。 因为事务的实现并不能简单的在中间件层面完成,也涉及存储。分布式事务需要全局时钟,2PCMVCC配合实现

NewSQL

NewSQL是上述特点的集大成者。 1. 原始数据库的特性。 2. 基于分布式共识的多副本同步。 3. 分库分表技术。 4. 分布式事务。

在NewSQL的实现中,有部分基于现有的数据库和中间件。有部分借鉴Spanner,使用KV存储上增加SQL解析层。但也是大同小异。

几款NewSQL
  1. Spanner/F1,基于truetime的数据库。也只有这样,才能实现全球化部署。其它基于中央授时,或逻辑时钟的关系型数据库,都无法做到全球化部署生产。
  2. TiDB/TiKV,Spanner/F1,的乞丐版实现,由于使用了TSO所以集群通常不会跨城市。此外,事务的实现是在TiDB上,和Spanner略有不同。但事务隔离性强于Spanner,可能是因为不用考虑truetime的延时.
  3. Ocaenbase,蚂蚁金服的分布式数据库,于TiDB/TiKV不同,KV层和SQL层不做分离。

总结

技术的发展总归不是一蹴而就,而是一步步变化的,是易用性和业务需求的相互作用。 1. 最早的关系型数据库,是易用性占主导地位。 2. NoSQL崛起,则是更高性能的业务需求占主导地位。 3. 随着硬件提升和技术发展,重新回归SQLNewSQL,则是易用性重新占据主导地位。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年1月1日18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 技术线
    • 关系型数据库的特点
      • 可用性需求
        • 主备同步的优化
      • 更大的吞吐能力
        • Shared-Disk
        • Shared-Nothing
      • 分布式事务的需求
        • NewSQL
    • 总结
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档