第1章 概述

1.1 背景

1.1.1 大数据时代下的数据增长

在过去的20年中,各个领域如医疗保健、科学传感器、用户生成数据、互联网以及金融公司等都出现了大规模的数据增长。另外,随着以博客、社交网络、基于位置的服务(LBS)为代表的新型信息发布方式的不断涌现,以及云计算、物联网等技术的兴起,数据正以前所未有的速率不断地增长和累计。国际数据公司(IDC)报告称,2010年全球数字世界的规模首次达到了ZB(1 ZB=1012GB)级别,为1.227 ZB,而2005年只有130 EB(1 EB=109GB),5年增长了约10倍。2011年全球被创建和复制的数据总量为1.8 ZB,而且预计这一数字每两年至少会翻一番。这种爆发式的增长意味着到2020年我们的数字世界规模将达到40 ZB,即15年增长300倍!如果单就数量而言,40 ZB相当于地球上所有海滩上沙粒数量的57倍。如果用蓝光光盘保存40 ZB的数据,这些光盘的重量(不包括任何光盘套和光盘盒)将相当于424艘尼米兹级航空母舰的重量(满载排水量约10万吨),或者相当于世界上每个人拥有5 247 GB的数据。大数据这一术语正是产生在全球数据爆发式增长(如图1-1所示)的背景下,用来形容庞大的数据集合。

与传统的数据集合相比,大数据通常包含大量的非结构化数据,且大数据需要更多的实时分析。此外,大数据还为挖掘隐藏的价值带来了新的成就,同时也给我们带来了新的挑战,即如何有效地组织管理这些数据。如今,工业界、研究界甚至政府部门都对大数据这一研究领域产生了巨大的兴趣。就学术界而言, Nature杂志早在 2008 年就推出了Big Data专刊[1]。计算社区联盟(Computing Community Consortium)在 2008 年发表了报告 Big Data Computing:Creating Revolutionary Breakthroughs in Commerce,Science,and Society,阐述了在数据驱动的研究背景下解决大数据问题所需的技术以及面临的一些挑战。Science杂志在2011年2月推出专刊Dealing with Data,主要围绕科学研究中大数据的问题展开讨论,说明大数据对于科学研究的重要性。美国一些知名的数据管理领域的专家学者则从专业的研究角度出发,联合发布了一份报告Challenges and Opportunities with Big Data。该报告从学术的角度介绍了大数据的产生,分析了大数据的处理流程,并提出大数据所面临的若干挑战。

图1-1 数据爆发式增长

就工业界而言,谷歌(Google)创建了谷歌文件系统(GFS)和MapReduce编程模型来应对网络规模的数据管理和分析所带来的挑战。此外,用户生成数据、各种传感器和其他的数据源也助长了这种势不可挡的数据流,这就需要对计算架构和大规模数据处理机制进行一次根本的转变。2007年1月,吉姆·格雷(Jim Gray)——图灵奖获得者、数据库软件的先驱,将这种转变称为“第四范式”(The Fourth Paradigm)。他还认为,应对这种范式的唯一方法就是开发新一代的计算工具,以对海量数据进行管理、可视化和分析。科学发现的4种范式见表1-1。2011年6月, EMC/IDC发表了一篇题为《从混沌中提取价值》的研究报告,首次对大数据的概念和其潜在性进行了讨论。2012年1月在达沃斯世界经济论坛上,大数据是主题之一,该会议还特别针对大数据发布了报告Big Data,Big Impact:New Possibilities for International Development,探讨了在新的数据产生方式下,如何更好地利用数据来产生良好的社会效益。该报告重点关注了个人产生的移动数据与其他数据的融合与利用。

无疑,我们已经进入了大数据时代。

表1-1 科学发现的4种范式

1.大数据的基本概念、来源与应用

大数据本身是一个比较抽象的概念,但从字面来看,它表示数据规模的庞大。但是仅仅数量上的庞大显然无法看出大数据这一概念和以往的“海量数据”(Massive Data)、“超大规模数据”(Very Large Data)等概念之间的区别。目前对于大数据尚未有一个公认的定义,不同的研究者对大数据的定义不一。

所谓“大数据”,是指数据量太大,以至于目前手头的数据管理工具已经不便于管理的数据。——维基百科

大数据处理技术代表了新一代的技术架构,这种架构通过高速获取数据并对其进行分析和挖掘,从海量且形式各异的数据源中更有效地抽取出富含价值的信息。——IDC

海量数据可广泛获取,所稀缺的是如何从中挖掘出智慧和观点。——谷歌

大数据是指无法在一定时间内用传统数据库软件工具对其内容进行抓取、管理和处理的数据集合。——麦肯锡

比较有代表性的是4V定义(Volume、Velocity、Variety以及Value),即大数据不仅仅是数据的“大量化”,而是包含“快速化”“多样化”和“价值化”等多重属性的。

2.大数据与传统数据库的区别

从数据库到大数据,看似只是一个简单的技术演进,但仔细考究后不难发现,两者有着本质上的差别。大数据的出现必将颠覆传统的数据管理方式。在数据来源、数据处理方式和数据思维等方面都会带来革命性的变化。传统的数据库和大数据的区别主要表现在以下几方面。

(1)数据规模

数据库规模相对较小,即便是以前认为比较大的数据库,如超大型数据库(Very Large Database,VLDB)和大数据相比仍旧偏小。数据库的处理对象通常以MB为基本单位,而大数据则常常以GB,甚至是TB、PB为基本处理单位。

(2)数据类型

在过去的数据库中,数据的种类单一,往往仅有一种或少数几种,这些数据又以结构化数据为主。结构化数据通常是指可以用二维关系表达的数据,如关系型数据库和非关系型数据库存储的数据。而在大数据中,80%以上的数据则是难以用二维关系表达的非结构化或半结构化数据。这些数据种类繁多,如科学研究中用到的基因组、LHC加速器、地球与空间探测数据,企业应用中的E-mail、文档、文件、应用日志、交易记录等数据,Web 1.0中的文本、图像、视频以及Web 2.0中的查询日志/点击流、社交网站(Twitter、Facebook上的视频、图片、音频)等。非结构化数据的存储方式有非结构化数据库、文件系统、内容管理系统,如WinFS、EXT3、HDFS、GFS、TFS 等。因此,大数据的另一层含义是“能够在不同的数据类型中,进行交叉分析的技术”。在这里,语意分析技术、图文转换技术、模式识别技术、地理信息技术等都会在大数据分析时获得应用。

(3)模式(Schema)和数据的关系

传统的数据库都是先有模式,然后才会产生数据。这就好比是先选好合适的数据库,然后才会向其中存储适当类型的数据。而大数据时代很多情况下难以预先确定模式,模式只有在数据出现之后才能确定,且模式随着数据量的增长处于不断的演变之中。

(4)处理工具

传统的数据库代表着数据工程(Data Engineering)的处理方式,大数据时代的数据已不只是工程处理的对象,因此需要采取新的数据思维来应对。Jim Gray博士观察并总结出,人类自古以来,在科学研究上,先后经历了实验、理论和计算3种范式。在Jim Gray的“第四范式”中,其实质就是从以计算为中心转变到以数据处理为中心,也就是我们所说的数据思维。在大数据时代,数据不再仅仅是一种分析的对象,而应当转变成一种基础资源,用数据这种资源协同解决其他诸多领域的问题。计算社会科学(Computational Social Science)基于特定的社会需求,在特定的社会理论指导下,收集、整理和分析数据足迹(Data Print),以便进行社会解释、监控、预测与规划的过程和活动。计算社会科学是一种典型的需要采用第四范式来做指导的科学研究领域。Watts在Nature杂志上的文章A Twenty-first Century Science [2]也指出,借助于社交网络和计算机分析技术,21世纪的社会科学有可能实现定量化的研究,从而成为一门真正的自然科学。

1.1.2 上层应用对数据服务的需求

随着科学、技术和工程的迅猛发展,近20年来,许多领域(如光学观测、光学监控、健康医护、传感器、用户数据、互联网和金融公司以及供应链系统)都产生了海量的数据。数据是IT时代的血液,不断为信息服务提供“能量来源”。经过加工之后的数据更加重要,这就要求我们进行动态资源的整合,对数据进行智能加工,并且按需进行服务。在大数据时代,如何更好地发挥和挖掘数据的价值并为不同的应用按需提供服务是终极目标。但不可否认的是,由于大数据存在许多的问题,这就造成了对大数据处理的困难。上层应用在获取数据时,对底层数据的处理也有了新的需求。

1.数据源的抽象和聚合

数据源的抽象和聚合要求将物理资源抽象出来,为用户提供一个统一的数据接口。

互联网的快速发展推动着网络感知能力的不断增强,网络感知的内涵从性能感知、状态感知、拓扑感知逐渐扩展到情境感知及业务/内容感知,也促使网络中产生了大量的感知信息,感知数据资源和分散的数据源。而这些信息通常都是多源异构的。对于上层用户来说,他们希望可以不用关心数据存放的具体物理地址,达到“按名存取”的效果,即需要建立一个全局的视图屏蔽各个数据源的差别,从而使用户可以使用统一的接口请求这些源数据,而无须关注各个数据源的具体结构。也就是将消费者和物理数据源隔离开来,使得数据提供者改变数据结构(添加/删除表、列或其他数据库对象)、数据格式(从纯文本变到 XML)、数据持久化机制(从单个数据库变到多个数据库、改变数据库提供商、添加表分区)、数据交换协议(从ODBC驱动改到OLE DB驱动),都不会对消费者产生不利影响。任何这些参数的变化都只会影响提供服务平台的代码,不会要求每个消费者改变其数据访问逻辑。不仅是同构数据源有这样的需求,异构数据源也同样需要。例如,聚合可以在两个数据库之间进行,也可以在一个数据库和一个XML文档之间进行,也能够聚合文本数据(如来自某个数据源的免责信息)和来自另一个数据源的Party Profile数据。这让消费者不需要查询、访问多个数据源和执行聚合就可以得到自己想要的信息。而且,通过执行聚合为消费者提供一个更简单的编程接口去完成数据的访问、错误处理和维护,也就是实现数据源的抽象和聚合。

2.数据实时处理

实时处理是一种比较苛刻的处理方式,它的处理结果能够实时影响当前正在执行的处理进程或者处理数据,该方式下响应时间是系统服务对象和具体物理过程所必须考虑的重要因素,如果处理过程超过限定时间,很可能导致信息丢失或影响即将处理的数据,甚至导致决策的失败。

当前,很多应用都对数据的实时处理有一定的要求。例如,在生产及科研中通常需要采集生产或实验现场的各种参数,然后送入监控中心,系统会根据不同的需要进行相应的计算和处理,从而得到所需的数据。与此同时,为了实现对某些物理量的监视,需要将计算得到的数据按要求进行实时显示或打印。除此之外,传统商业智能系统支撑的决策制定的世界也正在改变,最大的改变就是企业组织必须反应迅速,也必须很快地做决定。对于决策者来说,他们可用于做(某些重要)决策的时间越来越少。有研究可以证明上述现象。Aberdeen Group在2011年3月所做的研究表明,有43%的企业发现要做出及时的决策是很难的。作为企业的决策者,他们了解商业智能对于他们的潜在价值,因此他们希望可以充分利用现有的数据,分析可操作的数据,即100%全新的数据(或者至少是接近于100%全新的数据)。另外,在制造物联网应用中,存在大量传感器节点,所有传感器节点一起完成实时数据的感知、目标监视和感知环境的任务。因此在数据感知过程中,对人员状态、机器状态、物料状态、生产进度、能耗数据、工序状态、环境状态以及质量数据等实时数据单独传输数据的方法是不合适的。因为感知过程中存在大量冗余、无效的数据,直接传输会浪费大量的通信带宽和能量资源,同时还会降低实时数据的感知效率,影响数据感知的实时性。在实现数据的实时性处理过程中主要要求提供者做到以下几方面。 ① 实时接收。系统中应该有一个网络线程,网络线程的责任是负责数据的上下交互,线程的调度算法应该保证当有网络数据分组到达时,网络线程能实时接收从下层传输过来的数据分组。 ② 快速分类。数据的种类不同,系统处理的方式也不相同。因此在解析网络命令分组后,应准确判断命令的种类,分别进入不同的状态,调用该状态下的线程去完成相应的功能。 ③ 合理调度。经过状态机进行分类后,每种状态要调多个线程去实现,合理地调度这些线程,使得花费时间最短。④ 独立处理。当状态机把状态分类后,该状态需要调用线程进行独立运行处理,而不再需要状态机的二次调度。当前的实时数据处理主要面临以下需求和挑战。

(1)多源信息采集费时、滞后、不增值

数据规模的日益复杂与大型化、数据产生环境因素随机多变,导致数据信息呈现多源且海量的特征,但由于缺乏对实时、多源信息有效的自动识别和获取的系统解决方案,多源信息在获取时存在采集费时而不增值、滞后严重、易出错等现象。

(2)海量实时数据需要有效的查询分发管理

在很多应用场景下,需要处理的实时数据是持续的。在持续的数据流上的查询需要不同的查询语义,并且需要定义有效的查询操作符以及对查询过程和结果的容错支持。操作符的操作结果必须连续地返回递增的结果,并且操作符可能用来处理输入的子集。同时连续查询是长时间的,所以它随着时间流逝容易受到性能、负载、数据到达率或者数据特性变化的影响。因此,数据访问过程必须减少访问数据积累的状态量,而这一状态必须被保存或者被移植,以保证容错性和负载均衡。

3.数据完整性

数据的完整性要求数据在未经授权的情况下不被修改或者丢弃,完整性是数据安全三大特性之一。所有的存储介质都不能完全地保证数据的完整性,只能尽可能地提高数据的完整度。

上层应用在获取数据时,都是希望获取的数据能够尽可能完整。例如,云计算和云存储这个新兴的技术已经被广泛应用,为公司和个人带来了极大的方便与商机。信息社会的高速发展、信息数据爆发式的增长、应用程序产生的海量数据,都为企业带来了极大的挑战。如何充分利用企业所拥有的大数据、如何利用海量的数据去挖掘有价值的信息,成为企业应对新机遇、新挑战的首要问题。而云存储服务便可为企业解决数据存储问题,毫无疑问,使用云存储是当前大型企业存储数据和应用的首选解决方案,也是扩展自身业务的必要途径。但是,当用户采用云存储模式后,其存储在云中的数据可能遭到其他用户或云计算提供商的窥视、修改或损坏。通常,可通过数据加密、匿名机等机制来确保数据的机密性。云存储中存储着海量的外包数据,如何确保用户的数据在传输与存储过程中的完整性,是云存储服务必须具备的基本保障,也是近年来学术界与企业界研究的热点课题之一。数据的完整性是云存储服务质量的基本体现,因此,对云存储中的数据进行高效、安全、准确的完整性验证,是云存储服务的基本要求。数据完整性验证一般是验证数据从提供者下载到本地后的完整性,通过协议判断存储在提供者处的数据完整性。如果提供者的数据被修改过,则不能通过验证。应用要求保证数据完全是来自数据拥有者,完全具有可靠性和真实性,并且所保护的数据在没有授权的情况下不能被修改。

4.数据的机密性

数据的机密性要求数据库的内容不被泄露,因此需要建立完善、可靠的数据安全机制。

数据的机密性也是上层应用对服务提供者的一个主要需求。例如,信息技术的不断推进使得企业积累了各种形式的海量数据,海量数据管理和维护所需的软、硬件成本压力促使企业寻找可靠第三方进行托管。当然,不管哪种方式用户都需要将其数据置于云端而失去对数据的物理控制,这将引起用户对自己数据的安全和隐私保护的担忧。应用希望经过加密处理的数据,能够保证数据库中的内容在未经授权的情况下绝对不能被访问,甚至是数据库服务提供者也没有权限对其进行访问;即使数据被恶意侵犯,也不能获得秘密的信息和确切详细的数据。这可以保护数据完全不被未经授权的数据请求者进行访问,使不可信任的提供者不能访问数据,并保证机密的信息不被泄露。

伴随着大数据的产生,大数据在现代社会和经济活动中发挥着极其重要的作用,同时有效的利用会使大数据产生不可估量的价值,海量的电子政务数据、移动终端数据、网站日志、社交媒体数据、来自物联网传感器的流式数据、企业长期积累的业务数据等都是大数据的主要来源,如果能够使这些数据互通共享、融合分析,则会产生巨大的经济和社会效益。针对上述提出的各种各样的数据处理的需求,通过数据即服务(Data as a Service,DaaS)来解决这些应用的需求,使与数据相关的任何服务都能够发生在一个集中化的位置,如聚合、数据质量管理、数据清洗等,然后再将数据提供给不同的系统和用户,而无须再考虑这些数据来自哪些数据源。以实现对数据内容的提炼、过滤,为用户提供更有价值的内容。