北京中医院治疗白癜风效果怎么样 http://m.39.net/pf/a_4513684.html墨墨导读:数据技术嘉年华于11月21日落下帷幕,大会历时两天,来自全国各地的数据领域学术精英、领袖人物、技术专家、从业者和技术爱好者相聚北京,见证了个人的快速成长、技术的迭代进步、行业的蓬勃发展、生态的融合共赢,以及市场的风云变迁。
本文根据盖国强老师在数据技术嘉年华演讲速记以及PPT整理而成。
(全文第一人称描述,代指盖老师)
以下为正文:
数据技术嘉年华盖国强先生现场演讲
数据库的发展,我仍然是看成三个时代:从Oracle代表的商业数据库时代,MySQL代表的开源时代,以及云数据库时代,或者新数据库时代。在云数据库时代中,真正有一大批国产数据库成长起来了,走上了历史的舞台。
国产数据库中,OceanBase是从年开始的(今年是他们的十周年);年的TDSQL;年的GoldenDB;年的TiDB;年的PolarDB;以及年的GaussDB,并且GaussDB在今年6月份,开源了openGauss这个品牌。所以整个数据库进展到一个新的时代,这个新的时代不仅仅是云,还有国产各种形态百花齐放。
我把以上六位嘉宾的产品各自选择了一个案例,给大家推荐一下。
我们知道阿里云的PolarDB已经支持了国计民生很多领域,去年支持了中国邮*,双11也取得了非常好的成绩;GaussDB在工商银行的金融场景中替代了国外的产品;北京银行使用了TiDB;OceanBase在上海外滩大会发布了西安银行的互联网交易替换;GoldenDB在中信银行,从去年的信用卡核心到今年的交易核心上线;TDSQL最新的案例则是昆山银行。
我们看到这些数据库产品都在非常重要的生产实践中得到应用,而且几乎都是分布式数据库,不经意间,分布式数据库已经走上了历史舞台,并且落地开花了。那么分布式数据库是什么时候流行起来的,并且可能成为未来的演进趋势呢?
分布式数据库来源于用户需求的驱动,用户的需求是什么呢?是海量高并发的应用场景、是互联网式的应用创新,在这样的业务驱动之下,用户的原生自主演进就是读写分离、分库分表。有了用户的业务驱动创新,最后数据库厂商把这些特性做进了数据库产品里面去,到数据库内部其实是什么呢?是分区、分片、分块,进程的拆分。数据库内部的分区分表,最后演进到了分布式。
不管我们谈的是Scale-Out还是Scale-Up,本质上都是希望通过各种技术提高性能和承载能力,这些本质上的技术是什么?不外乎是并行和分布式。技术的进步来自于用户的需求驱动。
在很长一段时间内,分布式和集中式是存在争议的,这是一个路线之争。分布式技术在什么时间取得了突破式进展呢?谷歌的三驾马车在这起到了奠基作用,Google的FileSystem、GoogleMapReduce、GoogleBigTable,这几篇论文奠定了分布式数据库的基础,分布式技术在这之后得到了很好的发展。为什么在这个演进过程中几乎没有人提到Oracle?
我在这里引用了一篇文章,年Oracle有一篇非常好的文章,他说GlobalScaleWeb2.0,这是一个非常久远的历史了,Web2.0大家可能都不记得了。这篇文章描述了,在分布式架构下应用的设计和局限,这里引用了其中一些关键的观点。
Sharding,它是联合使用众多独立数据库的应用管理扩展技术,本身是应用管的,在应用上要做出很多的适配,数据要切分成多个数据库,每个数据库存储一个数据子级,是这样来实现的。
要实现这样的架构(使用分片),应用程序要为此做出让步,做出大量的修改,要基于Shard去做应用的设计,要尽量避免跨库的join。为了实现本地化的连接,可能要反范式去设计你的数据模型。所以你面对的是这样的一些挑战。
分片式架构的一个变体实现是,在分布式里面每个数据库都承载了全量数据,其中有一个数据库承载了写请求,其他是承载读,这样我将读写分开。它的好处是每个库承载全量数据,复杂查询就在本地完成了,还不需要进行re-Shard。阳老师所讲的OceanBase就是类似于这样架构的变体实现。每个库都是一个全量库,当然它的每个数据库又可以进行分区分布。
这几个观点来自于Oracle的这篇文章,当然它是作为反面示例来陈述的,它们都有缺陷。在那之后,一直到了年Oracle才推出了Sharding数据库组件,也就是分布式的数据库,整整过去了十年。
Oracle数据库历程是怎样走过来的?它如何走过了从单机、主备、集群到分布式?
Oracle走过的这条路很难被超越,我们要学习和借鉴、研究它,这条路仍然不会变。
从8i这个时代,年Oracle这时候的版本叫Internet,它理解互联网的历史非常久远。这个时代我认为有非常重要的一件事情,今天对于所有的国产数据库厂商要借鉴的,这个时候就做了在线支持系统-Metalink,很多同学知道它意味着什么,能够及时的获取你想知道的知识,解决问题的提示,已知的bug,提交的问题,每个厂商都应该建立的一个系统。
到了年,9i那个年代,Oracle做了Linux发行版;还有7版开始、8版改进的OPS,到了9的时候真正成熟了叫OracleRAC,然后开始做什么呢?把Automatic-自动化技术放到数据库里面,我们今天很多国产数据库提到的AI,很大程度上是自动化的,Oracle在这个方面做了大量的迭代。
到了10g的时候做了ASM存储管理软件。到了11g的时候做了ADG,当年的淘宝在第一个阶段就使用了。
然后Oracle在年开始跟进了Cloud,这也是Oracle唯一的一次错判市场,亚马逊在年推出S3的时候,Oracle认为这不是未来,到年才开始跟随,至今仍然在追赶。
再往前演进,进入了云数据时代-12c(C代表Cloud),年的时候推出了Sharding,这是分布式技术进入了Oracle。然后到了年18c,做了ShardedRAC,这是将分布式技术局部引入了集群中。
到19c做了自动化索引技术,我们认为它是具备AI属性的技术。到了今年20c,它引入了区块链、AutoML等。
Oracle公司有一个非常强大的能力,它会快速的能够把那些非常具有实践价值、领先价值的技术,嵌入到数据库内部去。在外部的时候很难应用,比如说machinelearning-它的门槛特别高,但是Oracle把它放在数据库中,应用门槛就降低了,包括区块链技术,这是特别值得学习的。
我跟大家稍微分享了一下Oracle在宏观上的演进,它今天真的把AI的技术放到数据库内部了,但是更重要的几点是什么呢?包括持久性内存-这里面其实就看出了数据库技术演进的方向了-包括软硬结合,包括多模,分布式等等。其实这也是前面几位嘉宾讲到的,我们看到数据库发展的方向,是确立的,大家的认知是相同的。
除了宏观上的演进,微观上的演进来自于实践。当用户应用中遇到问题的时候,反馈出来并做了修正。我举了六个小的案例。
1.Oracle在9i的时候把共享内存做了分片,以前是一个共享内存段,存在高竞争的问题,闩锁竞争会很激烈,9i进行分区细化,缺省可以有7个子池,并发性就更好了。
2.Oracle在10g的时候做了ASM自动存储技术,其实就是一个分布式存储。
3.到了11g,Oracle把每个磁盘组设立独立的进程维护、守护。O调度B、B...子进程。以前是用一个进程的,可是当你有一百个、一千个磁盘组的时候,它的维护就变得非常复杂漫长,你要经历很长时间的等待,现在进程拆分通过并行解决了这一问题。
4.到了12.1,它多日志写进程变成并行处理,这是Oracle数据库内部最重要的,最后的并发瓶颈点了。
5.到了12.2LMS和很多进程几乎都拆分了,包括RM、CR进程,所以你在Oracle数据库里,有时候能看到数据库自身的后台进程,很多都是成百运行起来的。
6.19c的统计信息,偏静态和偏动态的,隔离处理、并行处理、实时处理。
很多特别高大上的理念在数据库里边要真正落地才算数。Oracle在19c开始引入AI自动化索引技术,我认为是非常重要的,我也期待国产数据库里也能快速实现它,它能根据应用的SQL自动的分析,应该创造什么样的索引对查询有帮助。它是一个模拟的专家系统,就跟我们人的思考是一模一样的,Oracle把它实现出来了。
然后我们再来看这一侧,Oracle原本因为今年要发布20c,但是因为疫情没有全面公众发布,但是再过两个月它要发布21c了,迭代进步是非常快的。
20c里面有几个非常小的细节:
引入了表达式的参数-我们经常遇到这样的情况,一个DBA装完数据库了,没有去看硬件配置,用初始化配置就去跑了,或者用经验配置往往不是优化的,现在把大量的参数变成了表达式参数,你可以为他设置一个表达式,可以自动的根据你的系统配置进行调节,更加自治。
Oracle实现了一键式自动升级,这从18c开始实践,20c更进一步了;
AutonomousDataGuard:主备自治切换,当你发生故障时,判定零数据损失情形下,数据库就自动切过去了,不需要你干预。
这些细节上的变化,我个人认为特别值得我们学习和