第1章 大数据概述
大数据在冲击和挑战已有数据处理技术和数据处理系统的同时,也在产生并形成数据生成、分享和应用的新方式,成为引领新技术发展的动力,提供新服务模式的源泉。本章通过数据认知来建立大数据的概念,以强化对大数据形成、内涵及特征的理解。同时通过厘清大数据对数据存储、管理、计算与分析等技术带来的挑战,围绕大数据存储管理、计算分析及系统框架等方面,梳理大数据技术谱系,为后续章节的学习及相关课程的展开做铺垫。
1.1 认知数据
1.1.1 数据概念
通信技术和计算机技术的发明和广泛应用,使人类理解和使用的符号系统可利用机器实现传输、交换、存储及计算处理,数据(Data)的概念由此引入。直至现在,关于数据的概念并没有形成统一或者一致的定义,但通常可以从广义和狭义两方面来理解数据。从广义上讲,数据是以各种方式记录或观察客观事物的结果,比如各种数字、字符、图符等符号,都是人类用于观察或记录客观事物的结果,这种符号方式的结果都被看作广义数据。按照广义理解,数据是由人主观创造的而非客观存在的,因此它一定是被人识别和处理的符号。以计算机为代表的机器自动计算技术的出现,需要将广义数据转换成机器可存储、识别和计算的表示形式,即狭义数据。由此可见,狭义数据是为适应机器处理而对广义数据进行的再构造,因此对数据的认知要从广义过渡到狭义。
在计算机科学中,关于数据的概念也有不同表述。有的研究者将数据定义为:“可被计算机处理的符号总称,这些符号是具有一定意义的数字、字符、图形、符号、声音等”。有的研究者将数据定义为:“由计算机产生和存储,用于计算和分析某种事物的事实和信息”。在这些定义中提到的“符号”“事实和信息”都是机器可识别、理解和处理的狭义数据,即为广义数据的机器表示形式。广义数据和狭义数据是人与机器分别用不同符号形式表示的数据,它们之间的关系如图1-1所示。广义数据是由人类创造的,狭义数据是按照人设计的编码规则构造的,即将数字、字符、图符等符号形式的广义数据按编码规则要求转换成二进制符号表示的狭义数据。因此,狭义数据俗称为编码数据或者数字化数据,它们统统被简称为数据。编码数据的物理记录方式是电信号、磁信号和光信号等,它的常用载体是半导体芯片、磁盘和光盘。有了编码数据,机器就可以对其进行相应的计算,计算产生的结果依然是编码数据。因此,也有研究者根据编码数据产生过程将其分成记录型数据、观察型数据、计算型数据3类。
图1-1 广义和狭义数据之间的关系
1.1.2 数据研究内容
在数字化发展进程中,人们研究设计出各种编码规则,比如有针对数值(整数和浮点数)、语言符号、图形符号、图像、语音和视频等的编码规则,由此形成了诸如数值、文本、图像、音频和视频等不同类型的数据。在各类网络中,无论是网络设备、主机设备和终端设备,还是系统服务和应用服务等,它们都根据不同编码规则产生出各种不同类型的数据,这些数据又通过网络迅速传播并得以广泛应用。很多情况下,为了提高数据的存储和传输效率,或者保障数据的保密性和完整性,网络中这些设备或者服务系统需要对已有数据进行一些专门处理,比如采用压缩、混淆和置换等,这些处理的本质依然是根据设计的规则对数据进行再次编码的过程。由此可知,编码不仅体现机器可以按其规则产生数据,还能够按其规则解析数据(即还原出人可识别的结果)。编码是理解数据的前提和基础,研究和分析数据的基本任务就是编码及编码识别问题。
利用不同编码规则可以产生不同类型数据,这些数据之间可以是彼此*立或者相互毫无关系的。如何将彼此*立或者无关联的数据按照人的意图将其编排在一起来共同刻画客观事物呢?这种编排既要能体现人对事物的逻辑理解,又要便于机器识别处理。人对事物的逻辑理解是建立在事物特征或特性的基础上的,当用数据来刻画具体事物时,势必要清楚数据代表了或者指代了事物的哪个特征或特性,即需要明确数据与事物特征或特性的对应关系。为达到此目的,*先要抽象出事物的特性或特征,并对其进行描述,然后按照所描述的事物特性或特征来编排数据,以实现刻画具体事物的目的。数据与事物间关系如图 1-2所示。对事物特性或特征进行描述的内容可以包括:特性或特征的命名、出现次序、取值约束等,这些特性或特征又称为数据属性,它用于指导或规定数据如何编排。对数据属性的描述称为数据模式(Data Pattern),它用于描述数据属性(对应于事物特性或特征)。反过来理解,数据模式也是对数据的抽象,用它反映数据的组成关系。关于数据模式的概念也没有一个确切或一致的定义。有的研究者称数据模式是指按照给定的某种要求装入数据的框架,也有的研究者称数据模式是对数据属性的描述。这些表述的基本内涵是相同的,都是用于声明数据的组成关系。如果形象地解释数据模式的作用,它就是要以人的观点去理解和解析数据组成关系,即声明数据由哪些单元构成,对这些单元有何种要求,其本质是用于描述事物的特征或特性。由此可见,数据模式本身不是数据,而数据模式一旦建立就赋予了数据确切的含义。
图1-2 数据与事物间关系
数据模式是按照人的意图来设计的,反映的是数据组成关系,体现了人对事物的理解,并以人的观点去理解和解析数据。如果需要机器去理解数据模式,就要采用机器识别理解的语言(通称为计算机语言)来对数据模式进行声明,这种用计算机语言声明的数据模式,泛称为数据结构(Data Structure)。数据结构是计算机关于数据组成关系的声明,数据则是组成关系下的实例,在不同上下文或者不同的计算机语言环境中,数据结构中的数据单元常被称为属性(Attribute)、字段(Field)、特征(Feature)或变量(Variable)等。数据模式与数据结构之间的关系如图1-3所示。数据模式与数据结构分别从人和机器的角度理解并声明数据组成关系。有了数据模式的概念,数据组成就有规范可循,它不仅用于指导数据产生,也易于数据理解和解析。
图1-3 数据模式与数据结构间的关系
如果事物的特性或特征是静态不变的,那么用于描述它的数据模式则为固定,称为有固定数据模式,简称有模式。在计算机对数据模式的声明中,有固定数据模式对应于有固定数据结构,简称为结构化。受到固定模式约束的数据称为有模式的数据,简称模式数据,受到相应固定数据结构约束的数据则为结构化数据。模式数据(等效于结构化数据)具有完全确定的数据组成关系,这种确定性明确地规定了数据单元的数量、类型、边界、取值约束,以及编码含义等,非常易于数据的理解和解析,也为数据的存储管理与分析应用带来了诸多便利,例如记录、行或者表格就是典型的模式数据或结构化数据。
如果事物的特征或特性是动态变化的,那么用于描述它的数据模式则不固定,称为无固定数据模式,简称无模式。无固定数据模式对应于计算机中声明的无固定数据结构,简称为非结构化。没有固定数据模式约束的数据称为无模式数据,相应地,没有数据结构约束的数据就是非结构化数据。无模式数据(等效于非结构化数据)具有完全不确定的数据组织关系,其*大特点就是数据单元的数量和类型动态变化。现实中存在大量的无模式数据或者非结构化数据,比如文本、图像、音频和视频就是典型的无模式数据或者非结构化数据。在文本中,它的每个单元都是一个文字符号,这些符号是按某种编码(如ANSI、GB2312、UTF-8和Unicode等)规则转换而成的、具有特定长度的二进制序列。由于组成文本的单元数量受到文本大小影响而不确定,因此文本不具有固定数据模式,文本也就没有确定的组成关系。类似地,图像中每一个单元即为一个像素,这些像素是按某种编码(如位图、灰度、RGB、YUV和HIS等)规则转换而成的、具有特定长度的二进制序列。同样,由于组成图像的像素数量受到图像大小影响而不确定,因此图像也不具有固定数据模式,图像也就没有确定的组成关系。语音和视频同样如此,语音中的单元是音频信号中一个幅值的量化等级值(比如分为256个等级时,用8bit编码;分为4096个等级时,用12bit编码等);视频中的单元是帧(不同于视频数据的文件封装格式),它们的单元数量都是不确定的,也是无模式数据或非结构化数据。
数据组成关系除了有固定数据模式和无固定数据模式外,还有一种介于它们之间的形式,即为半固定数据模式,简称半模式。半固定数据模式对应于计算机中声明的半固定数据结构,简称为半结构化。受到半固定数据模式约束的数据称为半模式数据,类似地,受到半固定数据结构约束的数据就是半结构化数据。半模式数据(等效于半结构化数据)具有不完全的数据组织关系,其*大特点就是数据组织关系整体确定,数据组成关系局部不固定。例如,邮件和网页就是典型的半模式数据。在邮件中,邮件头、邮件体和签名块是它3个固定的单元,邮件整体上有确定模式,但3个单元自身却没有具体的约束性规定,即每个单元的组成是不固定的,因此邮件也就没有完全确定的组成关系。网页也是如此,它整体上由若干个确定区域或者块组成,对这些区域或者块缺少具体的约束性规定,即每个区域或者块的组成是不固定的,因此网页也就没有完全确定的组成关系。无模式数据的组成关系具有不确定性,半模式数据的组成关系具有不完全性,显然用这样的数据刻画事物更符合认知,但不利于数据解析,当然也给数据的存储管理与分析应用带来许多困难。
数据模式用于体现数据在结构上的关联性,反映的是数据组成关系,通常将其看作基于结构的模式。其实,数据模式还可表示另一层含义,即用于体现数据在内容上的关联性,反映的是数据在局部属性或属性子集上存在的数理关系,一般将其视为基于内容的模式。例如,在属性集合{x1,x2,x3, ,xm}上,假设通过分析发现数据在属性x2上呈现正态分布特性,属性xi和xj共同出现的频度*高,或者在属性xj为100时xi为8的概率符合0.2 在互联网发展初期,大多应用系统或业务系统都通过自定义数据模式来组织数据,因此模式数据占据了主导地位。各领域在互联网中的应用不断展开,产生出海量数据,这些数据中存在无以计数的模式。在这些模式中,有些是基于结构的模式(用户预先定义的),有的是基于内容的模式(因数据聚集后客观形成的)。分析发现未公开或未知的模式是非常困难的,虽然在数据模式识别方面已有很多较成熟的技术,但还存在诸多局限性或不足。模式是描述数据形式和内容的方式,研究和分析数据的一项重要任务就是模式识别与挖掘。
其实,数据只是纯粹的二进制符号构成的序列,它本身并不代表任何事物,也没有实际意义,但它却能很好地适应机器理解、识别和处理。看这样一个简单例子,对十进制整数35采用16位补码进行编码后,就可得到二进制序列(0000 0000 0010 0011)2,计算机可以非常容易地对该序列进行存储并施加各种运算,但这个序列却是毫无意义的。如果用这个序列表示某个人的“年龄”,那么这个序列就被赋予了特定含义,因为当这个序列被译码还原出整数35时,它就代表了“年龄”的大小。这个实例说明两点:一是机器只把二进制序列作为其理解、识别和处理的对象,并不知道数据所代表的原本含义;二是如果先按照人的思维逻辑抽象出事物的特征或特性后,再用数据来刻画事物时,那么数据就代表了确定的事物,因为这时的数据蕴含或承载了所预期的原本含义(即数据蕴含了已被声明的特征或特性)。 又比如,在机器中存储了一个图像(即一串较长的二进制序列),机器可以根据图像编码规则还原出每一个像素,并把这些像素显示或打印出来,然后
展开