大数据SQL优化:原理与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言 Preface

为什么写这本书

结构化查询语言(Structured Query Language,SQL)是一种目的特殊的数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库系统。

自从Edgar Frank Codd于1970年发表了文章“Relational Model of Data Large Shared Data Banks”(大型共享数据库的关系数据模型)后,关系代数模型成为数据库领域的主流模型,他使用“关系”的数学概念来弥补当前数据库模型的诸多不足。1974年,Boyce和Chamberlin提出了一种介于关系代数与关系演算之间的结构化查询语言(SQL),至此关系型数据库理论与查询方式都有了完整的定义。1981年Codd因在关系型数据库方面的突出贡献获得了图灵奖。

数据已经成为各行各业的核心资产。为了更好地存储和管理数据,关系模型和关系型数据库应运而生。随着数字化程度不断提高,数据量发生指数级增长,传统的数据库系统不再能够支撑海量数据的存储与计算。传统的关系型数据库更加适合进行联机事务处理(On-Line Transaction Processing,OLTP),对数据的处理方式是以增、删、改为主,并支持较为简单的数据查询。在联机分析处理(On-Line Analytical Processing,OLAP)的业务场景下,传统的关系型数据库对数据的处理以查询操作为主。除了数据的海量增长,传统数据库对于OLAP场景的支持不足,也是大数据技术出现的背景之一。

大数据系统有强大的存储能力,同时也可以保证数据的完整性和安全性。大数据计算技术可以快速检索、分析和可视化数据,将海量的数据变成高价值的财富。大数据系统能够高效、快速、准确地对数据进行管理,使数据得到有效的存储。大数据系统没有彻底抛弃关系模型,关键查询语言——SQL依然有广泛应用,SQL领域中的理论与优化方法仍在大数据系统中发挥作用。

数据是数字文明中的要素,大数据系统可以通过对这些数据进行管理以将其转化为知识资产,而SQL语言则是开启这份宝库的钥匙。无论是关系型数据库还是大数据系统,SQL都是一把万能钥匙。

大数据发展至今已有近20年的历史,各类思想和框架日新月异、层出不穷。然而,在大数据SQL查询优化领域,缺少能够帮助数据开发人员或大数据技术爱好者掌握大数据SQL查询优化的全貌和精髓的书籍。因此,笔者决心将自己从业多年的经验及心得汇集于此。

本书的主要内容

本书主要由以下四篇构成。

❑ 认知篇。阐述大数据计算或存储引擎发展至今,最终都会选择SQL作为统一查询语言的原因及这种选择的利弊。

❑ 原理篇。透过现象看本质,以几个主流的引擎框架为例,通过深入源码的方式探索SQL执行背后的秘密。

❑ 实践篇。详细描述引擎查询优化器的两大优化策略,以及各自的实现原理、示例和局限性。以Hive、Spark、Flink等主流引擎为蓝本,探索SQL优化的解决思路和方法论。在实践中,通过配置参数、调整存储和改写查询语句等方法,从不同的视角对SQL语句进行优化。

❑ 案例篇。以实践篇的各种真实需求调优历程为基础,以点带面,以小明大,带领读者一同体验各类公司和行业在不同业务场景中所面临的问题、重难点以及最终输出的解决方案。

勘误及支持

由于笔者的水平和认知有限,书中难免会有笔误、差错、格式错误或其他问题,希望广大读者能够把发现的错误告诉笔者(ccchenhe@gmail.com),笔者将不胜感激。本书有各位读者的帮助和爱护,相信定能再上一层楼。

致谢

奋笔疾书,废寝忘食,心中一直牵挂的是父母及妻女,感谢父母给予了笔者生命并养育笔者成人,感谢妻子李雪朝夕相伴给予笔者鼓励,他们是笔者写作的动力源泉,也是笔者得以完稿的坚实后盾。

感谢PowerData社区的大力支持,包括张博、李奇峰、赖志明、朱胜涛、徐振超,以及名单之外的更多朋友,没有他们就没有本书。本书的内容源于社区成员在日常工作中遇到的问题或困惑,笔者认为本书也应该回归社区为众人服务。开源精神中最重要的就是参与和分享,能够坚持写下自己的所见所闻,与他人共享,是一件快事。

感谢每一位读者,让我们一起进步,你们将是本书继续完善的新动力。

陈鹤

于深圳