Calcite数据管理实战经典语录

简介: Calcite数据库原理及应用教程,SQL大数据技术原理及应用,帮助你解决数据源管理难题。

第1章

Calcite的前世今生

20世纪40年代以来,人类逐渐进入“信息化时代”,数据管理和应用技术层出不穷。随着人类社会的不断发展,人们对于数据管理的需求在不断变化,相应的数据管理技术也在不断发展。从早期使用文件来进行数据管理,到后面的单机版关系数据库的出现,接着为了应对海量数据的管理而出现了分布式数据管理系统,再到如今的多元数据融合。每一次技术更迭,都能够听到人类社会发展的脚步声。

然而,到如今,随着各行各业逐渐走上数字化转型的道路,原有的技术陷入非常多的困境。一方面,需要将原有的千奇百怪的数据结构进行统一,使其在共同框架下进行更为复杂的计算;另一方面,需要让更多的人能够利用通用的数据操作方式来进行数据的计算和管理。

对于解决这些问题,Calcite做出了非常重要的贡献。一方面,Calcite可以对不同的数据源进行统一的管理;另一方面,它利用结构化查询语言(Struct-ured Query Language,SQL)这种非常简单的数据操作语言,非常便捷地实现对不同数据源的统一计算和管理。

作为时空数据引擎的开发人员,我们经常会接触到不同行业的数据,按照很多传统的组件,往往需要对不同行业的数据进行单独的处理,非常麻烦。而接触Calcite以后,我们瞬间就被其便捷性、扩展性深深吸引,有时甚至会拍案称奇。那么Calcite究竟是什么呢?它在数据管理的历史长河当中扮演了什么样的角色呢?看官莫慌,且听我们细细道来。

1.1

数据管理系统的发展历史

数据管理系统是人们用来组织、存储和检索数据的技术。人们管理和存储数据最早是使用“打孔卡”的方式来实现的。图1-1展示了在IBM 402上使用的穿孔卡片,其历史可以追溯到100多年以前。1890年,赫尔曼·霍利里思(Herman Hollerith,见图1-2)将打孔卡与织布机结合,用作机械制表机的存储器,至此数据库诞生了。

▲图1-1 在IBM 402上使用的穿孔卡片(源于快科技网站)

图1-2 赫尔曼·霍利里思(源于UC电脑园网站)

在数据库的发展过程中出现了非常多优秀的数据库产品,比如Oracle、MySQL、PostgreSQL等。

随着数据量的不断增加,数据结构变得越来越多样,传统的关系数据库面临巨大的挑战。为了管理海量的非结构化数据,NoSQL(Not Only SQL,泛指非关系数据库)数据库出现了。NoSQL数据库有速度快和使用灵活等特点,它们在很多非表格类场景当中,往往比传统关系数据库更可取。甚至在表格类数据超出一定数据量以后,传统关系数据库无法满足应用需求,需要使用NoSQL数据库来替换。在这个背景之下,针对不同业务场景的NoSQL数据库产生了,有基于Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)的键值数据库HBase,有面向全文检索场景的Elasticsearch,有文档数据库MongoDB,等等。现在的关系数据库和NoSQL数据库俨然已经成为两大阵营,都有其具有代表性的产品。图1-3展示了关系数据库和NoSQL数据库的产品。

图1-3 关系数据库和NoSQL数据库的产品

1.2

当前数据管理系统的困境

如今,情况又发生了非常大的变化。随着各个行业数字化转型脚步的加快,原有不同行业内部使用的数据管理系统面临整合,其中的核心是如何让开发人员便捷地整合不同结构的数据,完成查询和计算任务。

在这个大背景下,Calcite作为一个支持多种数据源进行统一查询和计算的数据库优化器,迅速地脱颖而出。一方面,Calcite使用SQL作为与开发人员进行交互的查询语言,极大地降低了开发人员的入门门槛;另一方面,它实现了自己的查询优化模型,数据源可以作为插件灵活地注册到其中,实现不同数据源的数据查询和计算。因此,很多有影响力的开源数据仓库(后文简称数仓),例如基于MapReduce的离线框架Hive,主打实时数据处理的Flink,等等,都用Calcite作为自身查询优化的核心组件。

版权:人民邮电出版社