数据库查询语言的进化(上)

数据库产生的背景

从分析个人网购喜好到总统选举投票;从车辆每日碳排放量统计到全球气温统计……

时下,人类正处于大数据时代,数据将人与人、人与世界联结起来,构成了一张繁密的网络,每个人都在影响着世界同时又被影响着。此外,传统的统计方法已无法快速且精准地处理各种相互影响的数据并挖掘出其背后的关系。
图片

与此同时,数据专家们也深刻地认识到,面对互联网和移动互联网络的极速发展,如何挖掘、运用和处理人们不断产生出的海量数据已成为一个棘手的问题。
互联网和移动互联网的快速发展带来了数据产生速率的极大增长,同时,人们也在面临着怎么去处理这些巨大体量的数据的难题
于是乎,数据库应运而生,旨在解决不断增长的数据挑战。还有其它类似的概念、工具和解决方案,例如数据仓库、数据集市、数据湖泊等,来解决我们日常所面对的数据存储、数据转换、数据分析、汇总、报表等一些列工作。
在这里插入图片描述

数据库的核心竞争力

是什么让数据库变得如此重要?笔者认为以下两点是其核心“竞争力”:

· 性能(Performance)
· 查询语言(Query Language)

性能
在现代商业社会中,性能从来都是“一等公民”。一个数据库之所以被称作是数据库,意味着它可以在合理的,通常是最小的,至少是符合商业诉求的延迟内来完成规定工作。

值得一提的是,在这一点上,数据库区别于商务智能时代的很多数据仓库或Hadoop大数据阵营的解决方案。后者或许有着很好的分布式、可扩展的能力,但是其性能绝不是“令人骄傲”的优势之一。这或许可以解释为什么我们在近年看到了市场上关于Hadoop已经死亡的一些看法,至少越来越多的商业落地场景中,基于内存计算的Spark和其它一些新型的基础架构正在不断取代Hadoop。
从大数据向快数据转型或迁移的趋势是为了做到让底层的数据库框架可以应对不断增长的数据规模,而不至于牺牲掉数据处理性能(数据吞吐率)。

在这里插入图片描述

该图展示了以数据库为中心的数据处理基础架构和技术的进化路径:从数据到大数据、从大数据到快数据、从快数据到深数据

查询语言
查询语言是计算机编程领域最伟大的发明之一。专家们希望计算机程序可以具备和人类一样的对数据智能化、深度化的筛选能力,但是这种强人工智能的诉求到目前为止还从未被真正实现过。于是退而求其次,聪明的程序员们、语言学家们通过创建人造的计算机编程语言来帮助机器去理解和实现人类的意图或指令,而数据库中的查询语言就是这种可以面向数据的“半智能化的”数据处理语言。

浅谈非关系型数据库查询语言

在我们准备进入众所周知的SQL的世界之前,让我们来先概览一下非关系型数据库(例如NoSQL等)所支持的查询语言的一些特性。

首先,我们来看一下键值数据库(KV Store)。常见的键值库的实现有Berkeley DB、 Level DB等。技术上而言,键值库并不支持或使用确切的查询语言,这是因为它之上所支持的操作实在太简单了,使用API就已足够!

典型的键值库支持三种操作:

· 插入(Insert)
· 读取(Get)
· 删除(Delete)

你可能会质疑说Cassandra支持CQL(Cassandra Query Language)。没有问题,Cassandra实际上是一种宽列库(wide-column store),我们可以把它看做是一种二维的键值库。对于Cassandra所支持的数据操作复杂度极高且高度分布式的架构而言,提供一层抽象查询语言来减少程序员的工作负担是绝对具有其正面意义的,否则程序员就需要记住那些复杂的API调用函数的各种参数集合。此外,CQL使用了与常规SQL类似的概念,例如表、行、列等概念。

目前业界对于Apache Cassandra的一个批评,也可以说是针对整个NoSQL数据库的设计而言——CQL并不支持SQL中常见的JOIN(表连接)操作。很显然,这种批评的思路是深植于SQL的思维方式之中的 。JOIN是把双刃剑,它在解决一件事情的同时亦带来一个问题,比如巨大的性能损耗的问题。事实上,Cassandra可以支持JOIN操作,通过以下两种解决方案:

· SPARK SQL:Apache Spark’s Spark SQL with Cassandra
· ODBC驱动:Cassandra with ODBC driver

在Spark结构化数据架构上的Spark SQL查询语言

然而,这些解决方案并不是没有代价的,例如ODBC在面向大数据集或集群化操作时性能始终是个问题。而Spark SQL则是在Cassandra的基础上又叠加了一层新的系统复杂度,这对于多系统维护、系统稳定性来说均是个挑战。此外,学习新知识、了解新系统、重新解锁一套新技能,这也让不少程序员心存畏难甚至望而却步。

在这里插入图片描述

Spark的初衷就是去应对Apache Hadoop的低效性和低性能。Hadoop从谷歌的GFS(谷歌文件系统)以及Map-Reduce理念及实现中借鉴了两个关键概念,并由此而创造了HDFS(Hadoop分布式文件系统)以及Hadoop MapReduce。

Spark则相当于利用了分布式共享内存架构实现了100倍的相对于Hadoop而言的性能提升。打一个比方,仅仅是简单把数据从硬盘移入到内存中来处理,你就会获得100倍左右的性能提升,因为内存的吞吐率就是硬盘的100倍之高。

Spark SQL是提供了一个SQL兼容的查询语言接口来支持访问Spark中的结构化数据,相比于Spark原生的RDD API而言,Spark SQL已经算作是一种进步了。

如前所述,如果API变得过于复杂的时候,对查询语言的诉求就变得越来越强烈——因为它更加灵活、实用、强大。

用进化的视角看未来

数据库和数据处理技术的演进历程
从数据到大数据到快数据到深数据,这是数据处理技术的演化路径,故,对应的底层的数据处理技术的演进路径已然明晰:从关系型数据库主导的时代朝向非关系型数据库(例如NoSQL/Spark等)、NewSQL和图数据库的框架演进。 我们可以大胆的预判未来的核心数据处理基础架构一定是至少包含或由图架构主导的。

换个角度思考:人类终极的数据库是什么?
在这里插入图片描述
·未完待续·
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值