Apache Flink 漫谈系列 - SQL概览
副问题[/!--empirenews.page--]
一、SQL简述 SQL是Structured Query Language的缩写,最初是由美国计较机科学家Donald D. Chamberlin和Raymond F. Boyce在20世纪70年月早期从 Early History of SQL 中相识相关模子后在IBM开拓的。该版本最初称为[SEQUEL: A Structured English Query Language](布局化英语查询说话),旨在哄骗和检索存储在IBM原始准相关数据库打点体系System R中的数据。SEQUEL其后改为SQL,由于“SEQUEL”是英国Hawker Siddeley飞机公司的商标。我们看看这款用于绝技航行的英国皇家空军豪客Siddeley Hawk T.1A (Looks great): 1. 第一款SQL数据库 在20世纪70年月后期,Oracle公司(其时叫 Relational Software,Inc.)开拓了基于SQL的RDBMS,并但愿将其出售给美国水师,Central Intelligence署理商和其他美国当局机构。 1979年6月,Oracle 公司为VAX计较机推出了第一个贸易化的SQL实现,即Oracle V2。 2. ANSI-SQL尺度的回收 直到1986年,ANSI和ISO尺度组正式回收了尺度的"数据库说话SQL"说话界说。该尺度的新版本宣布于1989,1992,1996,1999,2003,2006,2008,2011,以及最近的2016。Apache Flink SQL 焦点算子的语义计划也参考了1992 、2011等ANSI-SQL尺度。 3. SQL操纵及扩展 SQL是专为查询包括在相关数据库中的数据而计划的,是一种基于SET操纵的声明性编程说话,而不是像C说话一样的呼吁式编程说话。可是,各大相关数据库厂商在遵循ANSI-SQL尺度的同时又对尺度SQL举办扩展,由基于SET(无一再元素)的操纵扩展到基于BAG(有一再元素)的操纵,而且添加了进程编程说话成果,如:Oracle的PL/SQL, DB2的SQL PL,MySQL - SQL/PSM以及SQL Server的T-SQL等等。 跟着时刻的推移ANSI-SQL类型不绝完美,所涉及的成果不绝富厚,好比在ANSI-2011中又增进了Temporal Table的尺度界说,Temporal Table的尺度在布局化相关数据存储上添加了时刻维度信息,这使得相关数据库中不只可以对当前数据举办查询操纵,按照时刻版本信息也可以对汗青数据举办操纵。这些不绝富厚的成果极大加强了SQL的应用规模。 4. 大数据计较规模对SQL的应用 (1) 离线计较(批计较) 说起大数据计较规模不得不说MapReduce计较模子,MapReduce最早是由Google公司研究提出的一种面向大局限数据处理赏罚的并行计较模子和要领,并发于2004年颁发了论文Simplified Data Processing on Large Clusters。 论文颁发之后Apache 开源社区参考Google MapReduce,基于Java计划开拓了一个称为Hadoop的开源MapReduce并行计较框架。很快获得了环球学术界和家产界的广泛存眷,并获得推广和遍及应用。 但操作Hadoop举办MapReduce的开拓,必要开拓职员能干Java说话,并相识MapReduce的运行道理,这样在必然水平上进步了MapReduce的开拓门槛,以是在开源社区又不绝涌现了一些为了简化MapReduce开拓的开源框架,个中Hive就是典范的代表。HSQL可以让用户以类SQL的方法描写MapReduce计较,好比本来必要几十行,乃至上百行才气完成的wordCount,用户一条SQL语句就能完成了,这样极大的低落了MapReduce的开拓门槛,进而也乐成的将SQL应用到了大数据计较规模傍边来。 (2) 及时计较(流计较) SQL不只仅被乐成的应用到了离线计较,SQL的易用性也吸引了流计较产物,今朝最热的Spark,Flink也纷纷支持了SQL,尤其是Flink支持的越发彻底,集成了Calcite,完全遵循ANSI-SQL尺度。Apache Flink在low-level API上面用DataSet支持批计较,用DataStream支持流计较,但在High-Level API上面操作SQL将流与批举办了同一,使得用户编写一次SQL既可以在流计较中行使,又可以在批计较中行使,,为既有流计较营业,又有批计较营业的用户节减了大量开拓本钱。 二、SQL高机能与简捷性 1. 机能 SQL颠末传统数据库规模几十年的不绝打磨,查询优化器已经可以或许极大的优化SQL的查询机能,Apache Flink 应用Calcite举办查询优化,复用了大量数据库查询优化法则,在机能上不绝追求极致,可以或许让用户体谅但不消担忧机能题目。如下图(Alibaba 对 Apache Flink 举办架构优化后的组件栈) 相对付DataStream而言,SQL会颠末Optimization模块透明的为用户举办查询优化,用户用心编写本身的营业逻辑,不消担忧机能,却能获得最优的查询机能! 2. 简捷 就简捷性而言,SQL与DataSet和DataStream对比具有很大的良好性,我们先用一个WordCount示例来直观的查察用户的代码量:
我们直观的领会到沟通的统计成果行使SQL的简捷性。 三、Flink SQL Job的构成 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |