从巴别塔开始
我们先从一个神话故事开始本专栏的内容:
在人类的早期,世界上的所有人说着同一种语言,彼此之间沟通毫无障碍。这种统一的语言让人们心生野心,他们决定联合起来建造一座高耸入云的塔,这座塔就是巴别塔。人们希望通过这座塔能够直达天堂,以此展示他们的力量和智慧。
然而,他们的行为引起了上帝的关注。上帝看到人类如此团结,担心他们一旦成功建造巴别塔,将会变得无比强大,甚至可能威胁到神的权威。于是,上帝决定采取行动,他让人们说不同的语言,使他们之间无法沟通。这样一来,原本统一的团队陷入了混乱,巴别塔的建造计划也因此搁置。
巴别塔的故事很有意思,就我个人理解来说,沟通协作其实正是人类的进步的关键。而在沟通中,最重要的是降低他人的理解成本。
我很喜欢Flink官网的这个图,我们技术的发展也是类似,通过一层层封装和抽象,一步步降低使用者的使用门槛,也就是理解成本。
就像我在深入HDFS中提到的一样,我们的技术发展,最底层的思想就是抽象和封装。从古至今,能够风靡世界的技术,都采用了抽象和封装的思想,通过隐藏底层细节,提供简单实现方式,让很多没有相关底层知识的人,也能够快速上手使用。比如大家耳熟能详的JVM,其本质就是通过抽象和封装的思想,提供一套标准化的使用规则,让任何通过实现它这套规则的语言,就能借助它轻松获取跨平台,内存管理,垃圾回收等能力。
关于SQL
而我们本专栏的主角SQL也是类似的。它的设计思路很像领导思维,强调的是要什么结果,即只需要执行查询或数据操作,去获取想要的结果就行,而不需要详细说明要如何执行这些操作。尽管不同的数据库产品之间存在一些差异,但是SQL的基本结构和语法在大多数关系型数据库中都是通用的。这意味着一旦用户掌握了SQL的基本语法和特性,便可以在不同的数据库系统中进行数据查询等操作,而无须重新学习新的语言或工具。除此之外,SQL这种声明式语言支持多种底层实现策略,这意味着在不改变目标的前提下,可以不断地对实现方式进行优化。
正是这种能降低用户理解成本的哲学,结合SQL标准化的定义,使得SQL在大数据体系中得到广泛应用。
但还是那句话——No Silver Bullet。
使用SQL作为统一查询语言的优势我们已经大概梳理了,但它也是有一些局限性的。
-
表达能力有限:SQL在处理某些复杂业务逻辑时可能不够灵活。例如,对于需要复杂过程计算