关于数据库:云原生数据库设计新思路

40次阅读

共计 2075 个字符,预计需要花费 6 分钟才能阅读完成。

在讲新的思路之前,先为过来没有关注过数据库技术的敌人们做一个简略的历史回顾,接下来会谈谈将来的数据库畛域,在云原生数据库设计方面的新趋势和前沿思考。首先来看看一些支流数据库的设计模式。

常见的分布式数据库流派

分布式数据库的倒退历程,我依照年代进行了分类,到目前为止分成了四代。第一代是基于简略的分库分表或者中间件来做 Data Sharding 和 程度扩大。第二代零碎是以 Cassandra、HBase 或者 MongoDB 为代表的 NoSQL 数据库,个别多为互联网公司在应用,领有很好的程度扩大能力。

第三代零碎我集体认为是以 Google Spanner 和 AWS Aurora 为代表的新一代云数据库,他们的特点是交融了 SQL 和 NoSQL 的扩大能力,对业务层裸露了 SQL 的接口,在应用上能够做到程度的扩大。

第四代零碎是以当初 TiDB 的设计为例,开始进入到混合业务负载的时代,一套零碎领有既能做交易也能解决高并发事务的个性,同时又能联合一些数据仓库或者剖析型数据库的能力,所以叫 HTAP,就是交融型的数据库产品。

将来是什么样子,前面的分享我会介绍对于将来的一些瞻望。从整个工夫线看,从 1970 年代倒退到当初,database 也算是个古老的行业了,具体每个阶段的倒退状况,我就不过多开展。

数据库中间件

对于数据库中间件来说,第一代零碎是中间件的零碎,基本上整个支流模式有两种,一种是在业务层做手动的分库分表,比方数据库的使用者在业务层里通知你;北京的数据放在一个数据库里,而上海的数据放在另一个数据库或者写到不同的表上,这种就是业务层手动的最简略的分库分表,置信大家操作过数据库的敌人都很相熟。

第二种通过一个数据库中间件指定 Sharding 的规定。比方像用户的城市、用户的 ID、工夫来做为分片的规定,通过中间件来主动的调配,就不必业务层去做。

这种形式的长处就是简略。如果业务在特地简略的状况下,比如说写入或者读取根本能进化成在一个分片上实现,在应用层做充沛适配当前,提早还是比拟低的,而整体上,如果 workload 是随机的,业务的 TPS 也能做到线性扩大。

然而毛病也比拟显著。对于一些比较复杂的业务,特地是一些跨分片的操作,比如说查问或者写入要放弃跨分片之间的数据强一致性的时候就比拟麻烦。另外一个比拟显著的毛病是它对于大型集群的运维是比拟艰难的,特地是去做一些相似的表构造变更之类的操作。设想一下如果有一百个分片,要去加一列或者删一列,相当于要在一百台机器上都执行操作,其实很麻烦。

NoSQL – Not Only SQL

在 2010 年前后,好多互联网公司都发现了这个大的痛点,认真思考了业务后,他们发现业务很简略,也不须要 SQL 特地简单的性能,于是就倒退出了一个流派就是 NoSQL 数据库。NoSQL 的特点就是放弃到了高级的 SQL 能力,然而有得必有失,或者说放弃掉了货色总能换来一些货色,NoSQL 换来的是一个对业务通明的、强的程度扩大能力,但反过来就意味着你的业务原来是基于 SQL 去写的话,可能会带来比拟大的革新老本,代表的零碎有方才我说到的 MongoDB、Cassandra、HBase 等。

最有名的零碎就是 MongoDB,MongoDB 尽管也是分布式,但依然还是像分库分表的计划一样,要抉择分片的 key,他的长处大家都比拟相熟,就是没有表构造信息,想写什么就写什么,对于文档型的数据比拟敌对,但毛病也比拟显著,既然抉择了 Sharding Key,可能是依照一个固定的规定在做分片,所以当有一些跨分片的聚合需要的时候会比拟麻烦,第二是在跨分片的 ACID 事务上没有很好的反对。

HBase 是 Hadoop 生态下的比拟有名的分布式 NoSQL 数据库,它是构建在 HDFS 之上的一个 NoSQL 数据库。Cassandra 是一个分布式的 KV 数据库,其特点是在 KV 操作上提供多种一致性模型,毛病与很多 NoSQL 的问题一样,包含运维的复杂性,KV 的接口对于原有业务革新的要求等。

第三代分布式数据库 NewSQL

方才说过 Sharding 或者分库分表,NoSQL 也好,都面临着一个业务的侵入性问题,如果你的业务是重度依赖 SQL,那么用这两种计划都是很不舒服的。于是一些技术比拟前沿的公司就在思考,能不能联合传统数据库的长处,比方 SQL 表达力,事务一致性等个性,然而又跟 NoSQL 时代好的个性,比方扩展性可能相结合倒退出一种新的、可扩大的,然而用起来又像单机数据库一样不便的零碎。在这个思路下就诞生出了两个流派,一个是 Spanner,一个是 Aurora,两个都是顶级的互联网公司在面临到这种问题时做出的一个抉择。

Shared Nothing 流派

Shared Nothing 这个流派是以 Google Spanner 为代表,益处是在于能够做到简直有限的程度扩大,整个零碎没有端点,不论是 1 个 T、10 个 T 或者 100 个 T,业务层基本上不必放心扩大能力。第二个网站监控益处是他的设计指标是提供强 SQL 的反对,不须要指定分片规定、分片策略,零碎会主动的帮你做扩大。第三是反对像单机数据库一样的强统一的事务,能够用来反对金融级别的业务。

正文完
 0