不夸张,关于数据库顶级会议 SIGMOD 2018,这多是“最”有看点的一篇了!

摘要:SIGMOD数据管理国际会议是数据库领域具备最高学术地位的国际性学术会议,位列数据库方向的三大顶级会议之首(其次是VLDB及ICDE)。OceanBase的核心团队成员有幸参与到了SIGMOD 2018会议中,本文由蚂蚁金服OceanBase研究员日照为你们带来最专业、最前沿的大会独家报道。

接下来几天,咱们将为你们持续带来SIGMOD系列论文解读,如下是精彩预告:算法

1. 细微处见匠心—2018 SIGMOD论文之传统SQL领域数据库

2. Joining the best—2018 SIGMOD论文之JOIN系列api

3. 新硬件的舞台—2018 SIGMOD论文之硬件发展下的数据库系统安全

本文做者:日照markdown

现任蚂蚁金服OceanBase研究员,OceanBase初创成员之一,负责OceanBase 0.5 / 1.0 / 2.0版本的技术架构,著有《大规模分布式存储系统:原理解析与架构实践》。
网络

正文:session

今年的SIGMOD第一次在美国南部的石油城市休斯顿举办。提到休斯顿,大多数知道它以能源、航空和运河而闻名于世,固然,对于不少中国人来说,最知名的仍是姚明所在的休斯顿火箭队。现在,这座城市却由于SIGMOD这一数据库领域的顶级盛世而再次热闹非凡。数据结构

这一次,来自全球各地的800名参会者,济济一堂,共襄盛会,于休斯顿,共同见证数据库行业的飞速发展,探讨业界最领先的数据库应用方向。架构

(图片来源:SIGMOD 2018官网 https://sigmod2018.org/)
框架

本届SIGMOD和PODS会议合办,一共持续6天,其中3天为正会,其它时间是PODS和workshop。今年总共有90篇学术论文和15篇工业论文,参会的中国人众多,而发表论文的中国人数量也很是可观,阿里巴巴、蚂蚁金服和华为做为中国企业赞助了本次会议,中国已经在最前沿的数据库国际性学术会议中占据了重要的一席

SIGMOD会议包含2个主题演讲(keynote),15个学术报告会(research session)以及4个工业报告会(industry session)。数据库是一门侧重工程的实践类科学,而今年的会议安排和去年最大的差异在于增长了专门的industry session:来自Amazon、Microsoft、Alibaba等工业界的分享都极具含金量。

Alibaba做为赞助商表明组织了一场主题为“数据驱动及机器学习赋能的自治数据库系统”的workshop,内容分为两个部分:第一部分由集团数据库技术负责人分别介绍了阿里巴巴数据库和计算平台等产品,如何依靠创新解决阿里巴巴业务场景中传统数据库面临的挑战,第二部分则是邀请了五位学术界知名教授做为嘉宾分享了他们在“AI+数据库”领域的工做。

SIGMOD会议主题包括传统数据库事务和索引结构、查询处理和优化、并行数据库、图数据库、空间数据库、近似处理和类似度查询、数据集成与挖掘、安全与隐私以及最近几年比较热门的云数据库、新型硬件和机器学习。OceanBase参会人员关注的领域主要涉及事务和索引结构、查询处理和优化、并行数据库,云数据库、新型硬件和机器学习。本文旨在解读工业界论文,后续的文章将进一步解读这些领域的其它论文。

最佳 | 最佳论文花落谁家?

本次会议的最佳论文是CMU的"SuRF:Practical Range Query Filtering with Fast Succinct Tries”。布隆过滤器只适用于单行读取(Get)操做,实际业务场景中OceanBase能够经过对主键的前缀动态建立布隆过滤器来实现范围过滤功能。这种方法不够通用,论文中提出了一种新的数据结构,称为FST(Fast Succint Tries),除了用于过滤单行读取,还能够用来过滤范围扫描(Scan)。FST在以前的研究成果基础上作了进一步优化,很好地平衡了查询性能和内存占用,尤为适用于各类类LSM存储引擎。

论文中还尝试将FST集成到RocksDB,单个key的存储空间只须要10~14个bit,经济实用。最佳论文的第一做者是Huanchen Zhang,是一个华人。其实,SIGMOD大会从2015年开始,每一年最佳论文的第一做者都是华人,2015年的Yufei Tao,2016年的Feifei Li,2017年的Wenfei Fan。PODS的最佳论文是“Entity Matching with Active Monotone Classification”,第一做者仍是YufeiTao。

最火 | 两大议题:Kubernetes & Machine Learning

今年的两场keynote分别是EricBrewer(Google)的“Kubernetes and the New Cloud”以及Pedro Domingos(华盛顿大学)的“Machine Learning for Data Management:Problems and Solutions”。去年的两场keynote分别是OLTP内存数据库以及AQP近似查询处理,聚焦在数据库领域自己,而今年两场keynote严格来说都不属于数据库领域的范畴。

说实话,这两场keynote都没有给我留下特别深的印象。其中,Eric Brewer的演讲大部分是Kubernetes的产品介绍。听演讲的过程当中,我在思考一个问题:阿里巴巴以及不少互联网公司也有相似的容器化产品,为何Google最后成为了标准?是由于技术,是由于生态,又或者是由于Eric Brewer等Google研发人员的业界影响力。这个问题我没有答案,咱们须要不断地探索,才能明白知足某个公司、某个行业、甚至多个行业的需求与成为全行业事实标准之间的巨大鸿沟。

最前沿 | 数据库的五大发展趋势

从数据库发展趋势的角度看,我认为今年SIGMOD主要体如今以下几个方面:云数据库、新型硬件,自治数据库、AI+数据库,图数据库。

  • 云数据库:除了EricBrewer关于Kubernetes的keynote,还有一个关于云数据库的industry session。Amazon Aurora从理论和实践上证实公有云场景能够重构关系数据库底层架构,Vertica这样的老牌OLAP系统也上云了。

  • 新型硬件:存储介质从SSD、大内存到非易失性内存,RDMA、GPU、FPGA这样的硬件技术逐步普及。此次SIGMOD除了一场关于新硬件的research session,即“Databases for Emerging Hardware”,还有一场专门的workshop DaMoN(DataManagement on New Hardware)。Oracle Labs也有一个RAPID项目尝试作一个基于专用的数据处理芯片的SQL执行优化框架,不过经过内部交流了解到,专用硬件在Oracle Labs前景也不明确,RAPID的项目不会集成到Oracle内核,只会考虑MySQL。

  • 自治数据库:自治数据库在学术界和工业界都很热,Oracle数据库最近几年最重要的研发工做就是自治数据库。CMU的Andrew Pavlo团队这几年在学术界特别活跃,每一年都能抓住热点并在SIGMOD和VLDB发表多篇论文,今年的最佳论文就是出自这个团队,他们在自治数据库上作的工做发表在“Query-based Workload Forecasting for Self-Driving DatabaseManagement Systems”。

  • AI+数据库:这几年国内不少高校的数据库团队都转型大数据和AI了,北大数据库实验室在此次SIGMOD会议上也发表了两篇AI方向的论文,可见AI的火热。AI + System是这两年兴起的一个热门方向,Google Jeff Dean团队提出的Learned Index很好地利用AI统计实际数据的规律来设计更加高效的索引结构。此次SIGMOD除了Learned Index相关论文外,还有一个专门的关于机器学习的research session“Machine Learning & Knowledge-base Construction”。目前的AI和数据库的结合仍是比较浅的,将来是否能够用AI的方法来改进数据库内核的核心组件,例如优化器,这点我不太肯定但充满期待。

  • 图数据库:去年SIGMOD的best paper就是关于图计算的“ParallelizingSequential Graph Computations”,第一做者是Wenfei Fan,今年他们团队又发表了多篇关于图数据库的paper,今年SIGMOD的research session和industry session都有关于图数据库的论文。

最独家 | 工业论文全揭秘

总体上看,传统关系数据库内核的突破性工做变得愈来愈少,大部分研究工做是多个领域相结合的成果。相对来说,工业界的实践类论文对于工程人员更有借鉴意义。下面是我对本次大会industry session八篇论文的解读。

1."AmazonAurora: On Avoiding Distributed Consensus for I/Os, Commits, and Membership Changes"

Aurora团队在2017 SIGMOD会议上发表了“AmazonAurora: Design Considerations for High Throughput Cloud-Native RelationalDatabases”。

Aurora数据库采用存储计算分离的技术架构,相比单机MySQL/PostgreSQL的主要优点有两点:一是无损容灾,将数据库容灾问题转化为更加成熟的分布式存储系统的容灾问题,而类Paxos协议在分布式存储中普遍使用;二是存储可扩展。存储单元是分布式的,能够很容易突破单机存储容量限制,而不须要涉及到复杂且性能更差的分布式事务。固然,事务是不可扩展的,Aurora团队正在开发的Multi-Master功能用于解决事务的扩展性问题。

Aurora提出了“the logis the database”的设计理念,数据库实例往底层存储只写redo日志,将日志回放等操做下推到底层存储,从而大大下降网络开销。去年SIGMOD的Aurora论文侧重点在于设计理念和总体架构,而今年SIGMOD的Aurora论文侧重几个关键点的实现方案,包括写流程和宕机恢复,快照读取,如何避免读取操做访问多数派副本,以及成员变动。Aurora不须要使用两阶段提交协议,它的架构相似传统关系数据库的Oracle RAC,并在RAC基础上经过日志下推到存储层来进一步优化。建议读者结合去年的Aurora论文一块儿阅读这篇论文,去年的论文至关于整体设计方案,今年的论文至关于最核心的几个模块的概要设计方案。

2." ComputationReuse in Analytics Job Service at Microsoft "

SCOPE是微软的大数据处理平台,相似阿里巴巴的MaxCompute。大数据平台一个常见的问题是有大量的重复计算,可能的缘由包括schema设计不合理,用户互相拷贝脚本代码,等等。这篇论文提出了一个对重复计算进行在线物化的框架CloudView,有两个主要的特色:一个是在线建立物化视图,另一个是借鉴了关系数据库的渐进式优化思路(progressive query optimization),实现了反馈回路(feedbackloop),将运行时收集到的统计信息反馈到优化器。

做为一篇工业界论文,这篇文章还给出了不少SCOPE的运行数据和一些经验教训,对于阿里巴巴和其它大数据平台都有不错的借鉴意义。固然,物化视图里面有一个经典的难题,即在线更新的处理,这篇论文简单地将物化视图直接失效,这种作法还不够精细。

3."Columnstoreand B+ tree - Are Hybrid Physical Designs Important?"

HTAP混合负载是工业界的一个热点,通常来讲,B+树用于OLTP业务,列存用于OLAP业务。然而,真实的业务场景中很难区分workload究竟是OLTP仍是OLAP,主流的OLTP商业数据库都会有比较强的OLAP分析能力。这篇论文研究如何在同一个数据库中混合使用B+树和列存这两种不一样类型的索引,它首先经过一个benchmark对这两种索引在各类读写场景下的性能作了一个量化对比,接着讲解SQL Server中使用的Database Engine Tuning Advisor来动态地选择和推荐索引。

论文最后的测试代表,Hybrid方案的性能每每是优于单一的B+树或者列存的,不过这件事情最关键的点还在混合负载这一假设的适用范围,实际场景中我看到的OLTP业务每每只有不多一些分析型查询,而专门的OLAP业务每每几乎都是分析型查询。

4."P-Store:An Elastic Database System with Predictive Provisioning"

通常来说,数据库的容量规划都是针对峰值压力,然而,天天高峰期和低峰期的压力差异很是之大,实际生产系统中在线服务的利用率也都很低。P-Store提出,能够经过动态预测负载来提早对数据库扩容或者缩容,而不是等到负载发生变化以后再弹性伸缩。这篇论文最关键的地方在于提出了一个颇有意思的AI和数据库相结合的问题,固然,论文中也给出了算法思路,即如何寻找一条具备最小成本的路径,使得系统有效能力老是大于实际需求。弹性伸缩有一个经典的难题,扩容/缩容操做的代价,在share-nothing架构中由于拷贝大量数据实用性不佳,每每更加适合存储计算分离的架构。互联网在线服务通常均可以借鉴P-Store的思路,固然,对于极端的场景,例如一年一次的双十一,流量突增到日常的几十倍甚至上百倍,我和论文做者在Demo环节作了简单交流,他们没法解决也不许备解决。

5."Pinot:Realtime OLAP for 530 Million Users"

Pinot是Linkedin开源的一个大数据分析系统,相似Apache Druid。Pinot采用Lambda架构,将实时数据流和批处理数据分开处理,支持Kafka准实时数据写入以及Hadoop批量数据导入,支持类SQL查询。这篇论文介绍了Pinot的技术架构、查询执行流程、存储索引结构,等等。相似的产品比较多,包括Apache的Druid和Kylin,Google Dremel以及其开源实现Apache Drill,其中,我认为技术作得最好的是Google Dremel,值得深刻研究,其它论文能够结合起来一块儿阅读。

6."EonMode: Bringing the Vertica Columnar Database to the Cloud"

Vertica是一个分析型数据库,底层存储分为两个部分,一部分为针对写优化的WOS(Write Optimized Store),一部分为针对读优化的ROS(Read Optimized Store),分别对应LSM存储引擎中的MemTable和SSTable,且ROS采用列存实现,须要按期执行Tuple Mover操做,对应LSM存储引擎中的compaction操做。

Eon Mode是Vertica的云版本,有两个主要的架构变化:一个是存储计算分离,抽象了一层通用的文件系统访问接口(UDFS API)支持本地文件系统或者S三、HDFS等通用分布式文件系统;还有一个是线性可扩展的分布式架构,支持动态扩容缩容,涉及的改造点包括数据划分、容错以及SQL优化和执行。采用存储计算分离架构后,Tuple Mover操做也须要相应调整,之前的Enterprise版本每一个副本都须要执行Tuple Mover,如今只须要动态选择一个副本执行Tuple Mover便可。另外,Eon Mode再也不支持WOS,不过我认为这是Eon Mode的实现问题致使的。

7."Survivability of Cloud Databases -Factors and Prediction"

这篇论文出自Azure SQLDatabase团队,提出了一个很好的问题:在公有云环境下预测一个数据库实例会在多久以后被删除,从而将数据库实例分红两类:short-lived(<=30天)以及long-lived(>30天)。

论文中采用了机器学习中的随机森林算法,涉及的特征包括:实例建立时间(例如周末建立的实例颇有可能由程序自动建立),数据库实例的名称(例如名字有意义的数据库实例存活时间相对更长),数据库大小,数据库版本升级频率,数据库实例类型(Basic / Standard / Premium),用户以前建立过的数据库实例存活时间,等等。这种分类对于云数据库的资源调度、用户隔离以及平常运营操做都有不错的指导意义。另外,这篇论文还给出了大量Azure SQL DB团队的运营数据,有很好的参考价值。

8."RapidAdoption of Cloud Data Warehouse Technology Using Datometry Hyper-Q"

数据库上云面临两个主要的问题:一个是数据库迁移,另一个是应用程序迁移。对于第一点,各个云服务产商都有成熟的工具;对于第二点,目前没有成熟的解决方案。Hyper-Q是一个能够将不一样数据库系统的SQL请求互相翻译的中间件,目标是应用代码无需修改直接上云。

这件事情的难度很大,并且极其繁琐,论文中把SQL翻译分红三大类:1) Translation:简单的语法修改,例如关键词替换;2) Transformation:将用户查询转化为目标数据库相似的功能,并对结果作必定的处理,例如不一样数据库的NULL列排序方式不一样;3) Emulation:目标数据库没有相似的功能,须要在应用层模拟实现。演讲者对Hyper-Q的能力很是有自信,让人感受是什么都能作,不过我并无这么乐观,可能只是一个简单的数据类型或者语义的不一样都须要作大量的工做,也可能带来严重的性能问题。

想了解更多?您能够关注OceanBase公众号回复关键词“OB”,快速加入OceanBase数据库技术交流群!
相关文章
相关标签/搜索