1.3 不同数据类型
虽然数据最终会被机器处理并生成分析结果,但经由大数据解决方案处理的数据来源,可能是人也可能是机器。人为产生的数据是人与系统交互时的结果,例如在线服务或者数字设备,图1.16显示了人为产生的数据的示例。
机器生成的数据是指由软件程序和硬件设备对现实世界做出回应所产生的数据。例如,一个记录着安全服务的某次授权的日志文件,或者一个销售点管理系统生成的消费者购买的商品清单。从硬件的角度来看,大量的手机传感器生成的位置和信号塔信号强度等信息就是由机器生成数据的例子。图1.17清晰地表述了由机器生成的各种数据。
如上所述,人为产生的数据和机器生成的数据都是多源的,并且会以多种不同的格式呈现。这一节中我们将仔细审查大数据解决方案处理后的多种不同数据类型。主要的类型有以下三种:
结构化数据
非结构化数据
半结构化数据
这些数据类型代表了数据的内部组织结构,有时也叫做数据格式。除了以上三种基本的数据类型以外,还有一种重要的数据类型为元数据,我们将在后面讨论。
1.3.1 结构化数据
结构化数据遵循一个标准的模型,或者模式,并且常常以表格的形式存储。该类型数据通常用来捕捉不同对象实体之间的关系,并且存储在关系型数据库中。诸如ERP和CRM等企业应用和信息系统之中会频繁地产生结构化数据。由于数据库本身以及大量现有的工具对结构化数据的支持,结构化数据很少需要在处理或存储的过程中做特殊的考虑。这类数据的例子包括银行交易信息、发票信息和消费者记录等。图1.18显示了代表结构化数据的符号。
1.3.2 非结构化数据
非结构化数据是指不遵循统一的数据模式或者模型的数据。据估计,企业获得的数据有80%左右是非结构化数据,并且其增长速率要高于结构化数据。图1.19显示了几种常见的非结构化数据。这种类型的数据可以是文本的,也可以是二进制的,常常通过自包含的、非关系型文件传输。一个文本文档可能包含许多博文和推文。而二进制文件多是包含着图像、音频、视频的媒体文件。从技术上讲,文本文件和二进制文件都有根据文件格式本身定义的结构,但是这个层面的结构不在讨论之中,并且非结构化的概念与包含在文件中的数据相关,而与文件本身无关。
存储和处理非结构化的数据通常需要用到专用逻辑。例如,要放映一部视频,正确的编码、解码是至关重要的。非结构化数据不能被直接处理或者用SQL语句查询。如果它们需要存储在关系型数据库中,它们会以二进制大型对象(BLOB)形式存储在表中。当然,NoSQL数据库作为一个非关系型数据库,能够用来同时存储结构化和非结构化数据。
1.3.3 半结构化数据
半结构化数据有一定的结构与一致性约束,但本质上不具有关系性。半结构化数据是层次性的或基于图形的。这类数据常常存储在文本文件中。图1.20展示了XML文件和JSON文件这两类常见的半结构化数据。由于文本化的本质以及某些层面上的结构化,半结构化数据比非结构化数据更好处理。
半结构化数据的一些常见来源包括电子转换数据(EDI)文件、扩展表、RSS源以及传感器数据。半结构化数据也常需要特殊的预处理和存储技术,尤其是重点部分不是基于文本的时候。半结构化数据预处理的一个例子就是对XML文件的验证,以确保它符合其模式定义。
1.3.4 元数据
元数据提供了一个数据集的特征和结构信息。这种数据主要由机器生成,并且能够添加到数据集中。搜寻元数据对于大数据存储、处理和分析是至关重要的一步,因为元数据提供了数据系谱信息,以及数据处理的起源。元数据的例子包括:
XML文件中提供作者和创建日期信息的标签
数码照片中提供文件大小和分辨率的属性文件