第3章大数据的采集与存储

大数据时代,数据在云端


为了迎合大数据时代的需求,许多企业正将计算和处理的环节转移到云中。这就意味着不必购买硬件和软件,只需将之安装到自己的数据中心,然后对基础设施进行维护,企业就可以在网上获得想要的功能。软营模式(Software as a Service,SaaS)公司开创了在网上以“无软件”模式为客户关系管理(CRM)应用程序交付的先例。这家公司随后建立了一个服务生态系统,以补充其核心的CRM解决方案。
与此同时,亚马逊公司(以下简称亚马逊)也为必要的基础设施铺平了道路——使用亚马逊Web服务(AWS)在云中计算和存储。亚马逊在2003年推出了AWS,如图31所示。它希望从Amazon.com商店运行所需的基础设施上获利。然后,亚马逊继续增加其按需基础设施服务,为开发商迅速带来新的服务器、存储器及数据库。亚马逊也引进了特定的大数据服务,其中包括Amazon MapReduce(一款开源Hadoop——MapReduce服务的亚马逊云版本)以及Amazon RedShift(一项数据仓库按需解决方案)。亚马逊预计该方案每年每太字节的成本仅为1000美元——不到公司一般内部部署数据仓库花费的1/10,换言之,通常公司每年每太字节的成本超过10000美元。同时,亚马逊提供的在线备份服务Amazon Glacier提供低成本数字归档服务,该服务每月每千兆字节的费用仅为0.01美元,约合每年每太字节120美元。



图31亚马逊的AWS


和其他供应商相比,亚马逊有两大优势: 第一,它具有非常著名的消费者品牌; 第二,它也从支持网站Amazon.com而获得的规模经济及其基础设施服务的其他广泛客户中受益。虽然其他一些著名公司也提供云基础设施,包括谷歌及其谷歌云平台,还有微软及其Windows Azure,但亚马逊已为此铺平了道路,并以AWS占据了有利位置。但所有这些云服务胜过传统服务的优势在于,顾客只为使用的东西消费。这尤其对创业公司有利,它们可以避免高昂的先期投入,而这通常涉及购买、部署、管理服务器和存储基础设施。
 3.1大数据的分类
数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合,是可识别的、抽象的符号。数据和信息是两个不同的概念,信息是较为宏观的概念,它由数据的有序排列组合而成,传达给读者某个概念、方法等,而数据则是构成信息的基本单位,离散的数据没有任何实用价值。在大数据时代。
人们每时每刻都在产生着各种各样的数据。当你在计算机前打开搜索引擎,搜索自己想看的电影时,你在产生搜索数据; 当你在医院里就诊,医生给你开出处方时,你在产生医疗数据; 当你阅读一本书,遇到精彩的地方情不自禁地把精彩段落摘抄下来时,你在产生阅读数据。







大数据的主要数据类型包括结构化、半结构化和非结构化数据,如图32所示。非结构化数据越来越成为大数据的主要部分。据IDC的调查报告显示,企业中80%的数据都是非结构化数据,这些数据每年约增长60%。在以云计算为代表的技术创新大幕的衬托下,这些原本看起来很难收集和使用的数据开始很容易地被利用起来。在各行各业的不断创新下,大数据会逐步为人类创造更多的价值。



图32大数据的主要数据类型


下面分别对这三种大数据的类型进行简单介绍。
1. 结构化数据
简单来说,结构化数据就是传统关系数据库数据,也称为行数据。它是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系数据库进行存储和管理。结构化数据标记是一种能让网站以更好的姿态展示在搜索结果中的方式,搜索引擎都支持标准的结构化数据标记。结构化数据可以通过固有键值获取相应信息,并且数据的格式严格固定,如RDBMS数据。最常见的结构化就是模式化,结构化数据也就是模式化数据。


大多数传统数据技术应用主要基于结构化数据,如银行业数据、保险业数据、政府企事业单位数据等主要依托结构化数据。结构化数据也是传统行业依托大数据技术提高综合竞争力和创新能力的主要数据类型。
2. 半结构化数据
半结构化数据和普通纯文本相比具有一定的结构性,但和具有严格理论模型的关系数据库的数据相比更灵活。它是一种适用于数据库集成的数据模型,也就是说,适于描述包含在两个或多个数据库(这些数据库含有不同模式的相似数据)中的数据。它是一种标记服务的基础模型,用于在Web上共享信息。人们对半结构化数据模型感兴趣主要是它的灵活性。特别地,半结构化数据是“无模式”的。更准确地说,其数据是自描述的。它携带了关于其模式的信息,并且这样的模式可以随时间在单一数据库内任意改变。这种灵活性可能使查询处理更加困难,但它给用户提供了显著的优势。
半结构化数据的结构模式具有下述特征。
(1) 数据结构自描述性。结构与数据相交融,在研究和应用中不需要区分“元数据”和“一般数据”(两者合二为一)。
(2) 数据结构描述的复杂性。结构难以纳入现有的各种描述框架,实际应用中不易进行清晰的理解与把握。
(3) 数据结构描述的动态性。数据变化通常会导致结构模式变化,具有动态的特性。
常规的数据模型(如ER模型、关系模型和对象模型)的特点恰恰与上述特征相反,因为这些常规数据模型是结构化数据模型。而相对于结构化数据,半结构化数据的构成更为复杂和不确定,从而也具有更高的灵活性,能够适应更为广泛的应用需求。其实,用半结构化的视角看待数据是非常合理的。没有模式的限定,数据可以自由地流入系统,还可以自由地更新,更便于客观地描述事物。在使用时模式才应该起作用,使用者若要获取数据就应当构建需要的模式来检索数据。由于不同的使用者构建不同的模式,数据将被最大化利用,这才是使用数据最自然的方式。
3. 非结构化数据
非结构化数据与结构化数据是相对的,不适合用数据库二维表来表现,包括所有格式的办公文档、XML、HTML、各类报表、图片、音频、视频信息等。支持非结构化数据的数据库采用多值字段、子字段和变长字段机制进行数据项的创建和管理,被广泛应用于全文检索和各种多媒体信息处理领域。非结构化数据不可以通过键值获取相应信息。
非结构化数据一般指无法结构化的数据,如图片、文件、超媒体等典型信息,在互联网上的信息内容形式中占据了很大比例。随着“互联网+”战略的实施,越来越多的非结构化数据将不断产生。据预测,非结构化数据将占所有数据的70%~80%,甚至更高。经过多年的发展,结构化数据分析和挖掘技术已经形成了相对比较成熟的技术体系。也正是由于非结构化数据中没有限定结构形式,表示灵活,蕴含了丰富的信息。因此,综合来看,在大数据分析和挖掘中,掌握非结构化数据处理技术是至关重要的。目前,非结构化数据处理技术主要包括以下几种。
(1) Web页面信息内容提取。
(2) 结构化处理(含文本的词汇切分、词性分析、歧义处理等)。
(3) 语义处理(含实体提取、词汇相关度分析、句子相关度分析、篇章相关度分析、句法分析等)。
(4) 文本建模(含向量空间模型、主题模型等)。
(5) 隐私保护(含社交网络的连接型数据处理、位置轨迹型数据处理等)。
这些技术涉及较广,在情感分类、客户语音挖掘、法律文书分析等领域被广泛地应用。
 3.2大数据环境下的数据来源
随着传感器、智能可穿戴设备和社交技术的飞速发展,数据的组织形式变得越来越复杂。除了包含传统的关系数据库中的数据之外,大数据的数据格式还包括非结构化的社交网络数据、监控产生的视频音频数据、传感器数据、交通数据、互联网文本数据等各种复杂的数据。
3.2.1传统商业数据
传统的商业数据结构相对比较简单,以结构化数据为主,主要来源于企业ERP系统、各种POS终端及网上支付系统等业务系统的数据,传统商业是主要的数据来源。
世界上最大的零售商沃尔玛每小时收集2.5PB数据,存储的数据量是美国国会图书馆的167倍。沃尔玛详细记录了消费者的购买清单、消费额、购买日期、购买当天的天气和气温,通过对消费者的购物行为等结构化数据进行分析,发现商品关联,并优化商品陈列。沃尔玛不仅采集这些传统商业数据,还将数据采集的触角伸入社交网络。当用户在社交网络上谈论某些产品或者表达某些喜好时,这些数据都会被沃尔玛记录下来并加以利用。
亚马逊拥有全球零售业最先进的数字化仓库,通过对数据的采集、整理和分析,可以优化产品、开展精确营销和快速出货。另外,亚马逊的Kindle电子书积累了上千万本图书的数据,并完整记录着读者们对图书的标记和笔记,若对这些数据加以分析,亚马逊就能从中得知哪类读者对哪些内容感兴趣,从而给读者做出准确的图书推荐。
3.2.2互联网数据
这里的互联网数据是指网络空间交互过程中产生的大量数据,包括通信记录及QQ、微信、微博等社交媒体产生的数据,其数据复杂且难以被利用。互联网数据具有大量化、多样化、快速化等特点。
(1) 大量化。在信息化时代背景下,网络空间数据增长迅猛,数据集合规模已实现了从GB级别到PB级别的飞跃,目前,互联网产生的数据则需要通过ZB表示。
(2) 多样化。互联网数据的类型多样化,包括结构化数据、半结构化数据和非结构化数据。
(3) 快速化。互联网数据一般以数据流形式快速产生,且具有动态变化的特征,其时效性要求用户必须准确掌握互联网数据流,以便更好地利用这些数据。
互联网是大数据信息的主要来源,能够采集什么样的信息、采集到多少信息及哪些类型的信息直接影响着大数据应用功能最终效果的发挥。信息数据采集需要考虑采集量、采集速度、采集范围和采集类型。信息数据采集速度可以达到秒级甚至还能更快; 采集范围涉及微博、论坛、博客,新闻网、电商网站、分类网站等各种网页; 采集类型包括文本、数据、URL、图片、视频、音频等。
3.2.3物联网数据
物联网指在计算机互联网的基础上,利用射频识别(Radio Frequency IDentification,RFID)、传感器、红外感应器、无线数据通信等技术,构造一个覆盖世界上万事万物的The Internet of Things,也就是“实现物物相连的互联网络”。其内涵包含两个方面: 一是物联网的核心和基础仍是互联网,是在互联网基础之上延伸和扩展的一种网络; 二是其用户端延伸和扩展到了任何物品与物品之间。
物联网的定义: 通过射频识别装置、传感器、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,把任何物品与互联网相连接,以进行信息交换和通信,从而实现智慧化识别、定位、跟踪、监控和管理的一种网络体系。物联网数据是除了人和服务器之外,在射频识别、物品、设备、传感器等节点产生的大量数据,包括射频识别装置、音频采集器、视频采集器、传感器、全球定位设备、办公设备、家用设备和生产设备等产生的数据。
物联网数据的主要特点: 数据量更大、传输速率更高、数据更加多样化,以及对数据真实性的要求更高。
 3.3常用的数据采集方法
数据采集(DAQ)又称为“数据获取”或“数据收集”,是指从传感器和其他待测设备等模拟和数字被测单元中自动采集非电量或者电量信号,送到上位机中进行分析、处理。数据采集主要是对现实世界进行采样,以便产生可供计算机处理的数据的过程。
针对不同种类的数据来源,数据采集方式也不尽相同。针对内部数据,可以采用查询数据库的方式获取到所需要的数据。针对互联网数据,采集数据的主要途径是通过互联网搜索引擎或者爬虫工具等,通过输入搜索关键字或者采取一定的抓取规则来获取所需要的数据信息。针对市场调研数据,如果是互联网问卷调查则只需要进行查询或者执行数据库导出操作。
数据采集技术是数据科学的重要组成部分,已广泛应用于国民经济和国防建设的各个领域。并且随着科学技术的发展,尤其是计算机技术的发展和普及,数据采集技术具有更广泛的发展前景。大数据的采集技术为大数据处理的关键技术之一。
3.3.1系统日志的采集方法 
很多互联网企业都有自己的海量数据采集工具,多用于系统日志采集,如Facebook公司的Scribe、Hadoop平台的Chukwa、Cloudera公司的Flume等。这些工具均采用分布式架构,能满足每秒数百兆的日志数据采集和传输需求。
1. Scribe
Scribe是Facebook公司开源的日志收集系统,在Facebook公司内部已经得到大量的应用。Scribe可以从各种日志源上收集日志,存储到一个中央存储系统(网络文件系统或分布式文件系统等),以便进行集中的统计分析处理。Scribe为日志的“分布式收集,统一处理”提供了一个可扩展的、高容错的方案。Scribe架构如图33所示。



图33Scribe架构


Scribe的架构比较简单,主要包括三部分,分别为Scribe Agent、Scribe和存储系统。
Scribe Agent实际上是一个Thrift Client,也是向Scribe发送数据的唯一方法。Scribe内部定义了一个Thrift接口,用户使用该接口将数据发送给不同的对象。Scribe Agent发送的每条数据记录包含一个种类(Category)和一条信息(Massage)。
Scribe接收Thrift Agent发送的数据,它从各种数据源上收集数据,放到一个共享队列上,然后推送到后端的中央存储系统上。当中央存储系统出现故障时,Scribe可以暂时把日志写到本地文件中,待中央存储系统恢复性能后,Scribe再把本地日志续传到中央存储系统上。Scribe在处理数据时根据种类将不同主题的数据存储到不同目录中,以便分别进行处理。
存储系统实际上就是Scribe中的存储,当前Scribe支持非常多的存储类型,包括文件、缓冲器或数据库。
2. Chukwa
Chukwa提供了一种对大数据量日志类数据的采集、存储、分析和展示的全套解决方案和框架。在数据生命周期的各个阶段,Chukwa能够提供近乎完美的解决方案。Chukwa可以用于监控大规模(2000个以上节点,每天产生数据量为TB级别)Hadoop集群的整体运行情况并对它们的日志进行分析。Chukwa架构如图34所示。



图34Chukwa架构


Chukwa中主要有3种角色,分别为适配器(Adapter)、代理(Agent)和收集器(Collector)。下面对Chukwa中各角色的功能进行简单介绍。
1) 适配器
适配器是直接采集数据的接口和工具。每种类型的数据对应一个适配器,目前包括的数据有命令行输出、日志文件和HttpSender等。同时用户也可以自己实现一个适配器来满足需求。
2) 代理
代理给适配器提供各种服务,包括启动和关闭适配器、将适配器收集的数据通过HTTP传递给收集器,并定期记录适配器的状态,以便适配器出现故障后能迅速恢复。一个代理可以管理多个适配器。
3) 收集器
它负责对多个数据源发来的数据进行合并,并定时写入集群。因为Hadoop集群擅长处理少量的大文件,而对大量小文件的处理则不是它的强项。针对这一点,收集器可以将数据先进行部分合并,再写入集群,防止大量小文件的写入。
4) 多路分配器
它利用MapReduce对数据进行分类、排序和去重。
5) 存储系统
Chukwa采用HDFS作为存储系统。HDFS的设计初衷是支持大文件存储和小并发高速写的应用场景,而日志系统的特点恰好相反,它需要支持高并发低速率的写和大量小文件的存储,因此Chukwa框架使用多个部件,使HDFS满足日志系统的需求。
6) 数据展示
Chukwa不是一个实时错误监控系统,但它能够展示集群中作业运行的时间、占用的CPU及故障节点等整个集群的性能变化,能够帮助集群管理者监控和解决问题。
3. Flume
Flume是Cloudera公司提供的分布式、可靠和高可用的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据; 同时,Flume提供对数据进行简单处理,并写到各种数据接收方(可定制)的能力。
Flume可以被看作是一个管道式的日志数据处理系统,其中数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它包含日志数据并且携带消息头,其中日志数据由字节数组组成,这些事件由外部数据源生成。
Flume运行的核心是代理。Flume以代理为最小的独立运行单位,一个代理就是一个JVM。在实际日志系统中,Flume由多个代理串行或并行组成,完成不同日志数据的分析。每个代理是一个完整的数据收集工具,并包含3个核心组件,但一个代理可以包含多个数据源(Source)、缓冲区(Channel)或汇聚节点(Sink)。Flume的核心结构如图35所示。



图35Flume的核心结构


数据源是数据的收集端,负责将数据采集后进行特殊的格式化,将数据封装到事件中,然后将事件推入缓冲区中。Flume提供了很多内置的数据源类型,支持Avro、Log4j、Syslog、UNIX终端输出和HTTP Post等不同格式的数据源,可以让应用程序同已有的数据源直接打交道。如果内置的数据源无法满足需求,用户可自定义数据源。
缓冲区是连接数据源和汇聚节点的组件,人们可以将它看作一个数据的缓冲区,它可以将事件暂存到内存中,也可以持久化存储到本地磁盘上,直到汇聚节点处理完该事件。缓冲区支持将数据存在内存、JDBC、文件等其他持久化存储系统中。
汇聚节点从缓冲区中取出事件,然后将数据发送到别处(可以是文件系统、数据库、HDFS,也可以是其他代理的数据源)。在日志数据较少时,它可以将数据存储在文件系统中,并且设定一定的时间间隔定时保存数据。
Flume使用事务性的方式保证传送事件整个过程的可靠性。汇聚节点必须在事件被存入缓冲区后,或者已经被传达到下一个目的地,才能把事件从缓冲区中删除掉,这里的目的地包括下一个代理、HDFS等。这样数据流中的事件无论是在一个代理中还是在多个代理之间流转,都能保证可靠,因此以上的事务性保证了事件被成功存储起来。例如,Flume支持在本地保存一份文件缓冲区作为备份,当缓冲区将事件存在内存队列中时,虽然处理速度快,但丢失的话将无法恢复,这时可以将备份的数据进行恢复使用。
3.3.2网页数据的采集方法
网络数据采集称为“网页抓屏”“数据挖掘”或“网络收割”,通过网络爬虫(Crawler)程序实现。网络爬虫一般是先“爬”到对应的网页上,再把需要的信息“铲”下来。网络爬虫作为搜索引擎的基础构件之一,是搜索引擎的数据来源。网络爬虫的性能直接决定了系统的及时更新程度和内容的丰富程度,直接影响着整个搜索引擎的效果。下面从几个方面对网络爬虫进行介绍。
1. 网络爬虫的重要组成模块
网络爬虫可以获取互联网中网页的内容。它需要从网页中抽取用户需要的属性内容,并对抽取出的数据进行处理,转换为适应需求的格式存储下来,供后续使用。网络爬虫采集和处理数据包括如下3个重要模块。
(1) 采集模块: 负责从互联网上爬取网页,并抽取需要的数据,包括网页内容抽取和网页中链接的抽取。
(2) 数据处理模块: 对采集模块获取的数据进行处理,包括对网页内容的格式转换和链接的过滤。
(3) 数据模块: 经过处理的数据可以分为3类。第一类是SiteURL,即需要爬取数据的网站URL信息; 第二类是SpiderURL,即已经爬取过数据的网页URL; 第三类是Content,即经过抽取的网页内容。
网络爬虫通过上述3个模块获取网页中用户需要的内容。它从一个或若干初始网页的URL开始,获得初始网页上的URL,在爬取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的特定停止条件为止。
2. 网络爬虫的基本工作流程
网络爬虫的基本工作流程如图36所示。具体步骤如下所述。
(1) 从SiteURL中抽取一个或多个目标链接写入URL队列,作为爬虫爬取信息的起点。
(2) 爬虫的网页分析模块从URL队列中读取链接。
(3) 从Internet中获取该链接的网页信息。
(4) 从网页内容中抽取所需属性的内容值。
(5) 将获取的网页内容值写入数据库的Content,并将此URL存入SpiderURL。
(6) 从当前网页中抽取新的网页链接。
(7) 从数据库中读取已经爬取过内容的网页地址,即SpiderURL中的链接地址。
(8) 将抽取出的URL和已经爬取过的URL进行比较,以过滤URL。
(9) 如果该网页地址没有被爬取过,则将该地址写入SiteURL; 如果该地址已经被爬取过,则放弃存储此网页链接。



图36网络爬虫的基本工作流程


3. 爬虫的网页爬取策略
网络爬虫从网站首页获取网页内容和链接信息后,会根据一定的搜索策略从队列中选择下一步要爬取的网页URL,并重复执行上述过程,直至达到爬虫程序满足某一条件时才停止。因此,待爬取URL队列是爬虫很重要的一部分。待爬取URL队列中的URL以何种顺序排列是一个很重要的问题,因为涉及先爬取哪个页面,后爬取哪个页面。而决定这些URL排列顺序的方法叫作爬取策略。一般一个网页会存在很多链接,而链接指向的网页中又会有很多链接,甚至有可能两个网页中又包含了同一链接等,这些网页链接的关系可以看作一个有向图,如图37所示。




图37URL关系有向图及爬取策略


网络爬虫的性能高低关键在于网络爬虫的爬取策略,即网络爬虫在获取到URL之后在待爬取URL中应该采用什么策略进行爬取。常见的爬取策略有深度优先遍历策略、宽度优先遍历策略、反向链接数策略、OPIC策略、大站优先策略等。下面对几种典型的爬取策略进行简单介绍。
1) 深度优先遍历策略
深度优先遍历策略指网络爬虫会从起始页开始,逐个链接地跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。如图37所示,从首页A开始,A网页有B链接,先爬取B网页; 而B网页包含链接E和F,接着爬取E链接; 当网页E中不再有链接时则爬取B中的链接F。对网页B中的链接爬取完后再对C和D网页采用同样的深度遍历方法进行爬取。深度优先遍历策略尽可能对纵深方向进行搜索,直至所有链接被爬取完毕。
2) 宽度优先遍历策略
宽度优先遍历策略的基本思想是将首页中发现的链接直接插入待爬取URL队列的末尾,即网络爬虫会先爬取起始网页中所有的链接网页,然后再选择其中的一个链接网页,继续爬取在此网页中链接的所有网页。如图37所示的宽度优先遍历路径,首先爬取A网页中的链接B、C和D的网页内容,然后再选取网页B中的所有链接E和F进行爬取,最后再依次获取C和D中所有的链接的内容。
3) 反向链接数策略
反向链接数是一个网页被其他网页链接指向的数量。反向链接数表示的是一个网页的内容受到其他人推荐的程度。因此,很多时候搜索引擎的爬取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的爬取先后顺序。
4) OPIC策略
OPIC(OnLine Page Importance Computation)的核心思想是,一般情况下如果一个网页被别的网页指向的次数越多,那么这个网页就越重要。体现在爬取策略上就是对页面的重要性进行打分。在算法开始前,给所有页面一个相同的初始值,即认为此时网页的重要程度相同。当下载了某个页面之后,将该页面的值平均分配给所有从该页面中分析出的链接,对于待爬取URL队列中的所有页面按照值的大小进行降序排序,值大的优先爬取。
5) 大站优先策略
大站优先策略基于这样一个前提,即一般情况下影响力较大的网站网页的质量会比其他影响力较小的网站网页质量高。例如,人们日常生活中购物时总是会在潜意识中认为在亚马逊或者京东购物会比一些名不见经传的小型购物网站购物要安全、可靠得多。对网页中待爬取的URL依照所属网站的影响力或者其他量化标准进行排名,影响力大的优先爬取,这就是大站优先策略。
3.3.3其他数据的采集方法
对企业生产经营数据或学科研究数据等保密性要求较高的数据,可以通过与企业或研究机构合作,使用特定系统接口等相关方式采集。
尽管大数据技术层面的应用可以无限广阔,但由于受到数据采集的限制,能够用于商业应用、服务于人们的数据要远远小于理论上大数据能够采集和处理的数据。因此,解决大数据的隐私问题是数据采集技术的重要目标之一。现阶段的医疗机构数据更多来源于内部,外部的数据没有得到很好的应用。对外部数据,医疗机构可以考虑借助如百度、阿里、腾讯等公司第三方数据平台解决数据采集难题。
例如,百度公司推出的疾病预测大数据产品,可以对全国不同的区域进行全面监控,智能化地列出某一地级市和区域的流感、肝炎、肺结核、性病等常见疾病的活跃度、趋势图等,提示人们有针对性地进行预防,从而降低染病的概率。
在医疗领域,大数据的应用可以更加快速、清楚地预测疾病发展的趋势,这样在大规模暴发疾病时,人们能够提前做好预防措施和医疗资源的储蓄与分配,优化医疗资源配置。
 3.4大数据时代的存储管理系统
在计算机中,目前已经被广泛使用的存储管理系统有普通的文件系统、键值数据库和关系数据库。在大数据时代,普通PC的存储容量已经无法满足大数据需求,需要进行存储技术的变革,人们采用分布式平台来存储大数据。
3.4.1文件系统
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于Nand Flash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由3部分组成: 文件系统的接口、对对象操纵和管理的软件集合、对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。
DOS、Windows、OS/2、Macintosh和基于UNIX的操作系统都有文件系统。在此系统中,文件被放置在分等级的(树状)结构中的某一处。文件被放进目录(Windows中的文件夹)或子目录。文件系统是软件系统的一部分,它的存在使应用可以方便地使用抽象命名的数据对象和大小可变的空间。
3.4.2分布式文件系统
分布式文件系统(Distributed File System,DFS)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点(可简单地理解为一台计算机)相连,或是若干不同的逻辑磁盘分区或卷标组合在一起而形成的完整的有层次的文件系统。DFS为分布在网络上任意位置的资源提供一个逻辑上的树形文件系统结构,从而使用户访问分布在网络上的共享文件更加简便。分布式文件系统比普通文件系统更为复杂,例如,使文件系统能够容忍节点故障且不丢失任何数据,就是一个很大的挑战。
1. 分布式文件系统简介
分布式文件系统把文件分布存储到多个计算机节点上,成千上万的计算机节点构成计算机集群。与以前使用多个处理器和专用高级硬件的并行化处理装置不同的是,目前的分布式文件系统所采用的计算机集群都是由普通硬件构成的,这就大大降低了硬件上的成本开销。计算机集群的基本架构如图38所示。



图38计算机集群的基本架构


2. 分布式文件系统的整体结构 
分布式文件系统在物理结构上是由计算机集群中的多个节点构成的。这些节点分为两类: 一类叫主节点(Master Node),也被称为名称节点(Name Node); 另一类叫从节点(Slave Node),也被称为数据节点(Data Node)。分布式文件系统的整体结构如图39所示。



图39分布式文件系统的整体结构


3. Hadoop分布式文件系统(HDFS)
Hadoop是Apache软件基金会旗下的一个分布式系统基础架构。Hadoop框架最核心的设计就是HDFS和MapReduce,为海量的数据提供存储和计算。MapReduce主要运用于分布式计算,HDFS主要用于海量数据的存储。HDFS是一个分布式文件系统,具有高容错的特点。它可以部署在廉价的通用硬件上,提供高吞吐率的数据访问,适合那些需要处理海量数据集的应用程序。
HDFS使用的是传统的分级文件体系,因此,用户可以像使用普通文件系统一样,创建、删除目录和文件,在目录间转移文件、重命名文件等。在HDFS中,一个文件被分成多个块,以数据块作为存储单位。块的优势主要有支持大规模文件存储、简化系统设计、适合数据备份等。
HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点和若干个数据节点。名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。集群中的数据节点负责处理客户端的读写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。每个数据节点的数据实际上是保存在本地文件系统中的。HDFS的体系结构如图310所示。



图310HDFS的体系结构


1) 名称节点
名称节点存储元数据,元数据被保存在内存中(磁盘上也保存了一份),保存文件块、数据节点之间的映射关系; 名称节点记录了每个文件中各个块所在的数据节点的位置信息。 
元数据的内容包括文件的复制等级、修改和访问时间、访问权限、块大小及组成文件的块。对目录来说,名称节点存储修改时间、权限和配额元数据。
2) 数据节点
数据节点负责数据的存储和读取,数据被保存在磁盘中,维护文件块ID到数据节点本地文件的映射关系。数据节点定期向名称节点发送块信息以保持联系,如果名称节点在一定的时间内没有收到数据节点的块信息,则认为数据节点已经失效了,名称节点会复制其上的块到其他数据节点。
3.4.3数据库系统
数据库(Data Base,DB)顾名思义就是存放数据的仓库。数据库是存在于计算机中,以一定的方式存放数据的仓库。严格意义上来讲,数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库家族如图311所示。



图311数据库家族


1. 关系数据库
1) 关系模型中常用的术语
关系模型的结构非常简单,其核心概念是将现实世界的实体以及实体之间的关系表示为单一的结构类型,即关系。从用户观点来看,关系模型由一组关系组成,每个关系都可以具体为一张规范化的二维表。一张张二维表的集合就构成了关系数据库。关系模型中常用的术语有关系、元组、属性、域、码等。例如,职工基本信息表如表31所示。


表31职工基本信息表




编号
姓名
年龄
部门
入职时间
001
张三
26
研发部
20190826
002
李四
34
运维部
20200530
003
王五
20
销售部
20210205

(1) 关系。
关系(Relationship)常用来表示一张数据库表。例如,职工管理系统中职工基本信息表(见表31)等。
(2) 元组。
元组(Tuple)常用来表示表中的一行。例如,职工管理系统中职工基本信息表(见表31)中编号为001的行就是一个元组。
(3) 属性。
表中的一列即为一个属性(Attribute)。例如,职工管理系统中职工基本信息表(见表31)中的“姓名”列,其中属性的名称“姓名”为属性名,即职工基本信息表中有5个属性名,分别为编号、姓名、年龄、部门、入职时间。
(4) 域。
域(Domain)是一组具有相同属性的值的集合。人们可以把域理解为一个取值范围,就好像人们了解的数学中的作用域的概念,例如{'男','女'}、自然数等都可以称为域。
(5) 码。
码(Key)表示表中的某个属性组,该属性组的每一个属性可以唯一确定表中的一个元组。
2) 关系数据库的特点
关系数据库的特点如下。
(1) 关系数据库是建立在关系模型基础上的数据库,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
(2) 所谓关系模型就是一对一、一对多、多对多等二维表格模型,因而一个关系数据库就是由二维表及其之间的联系组成的一个数据组织。
(3) 关系数据库以行和列的形式存储数据,这一系列的行和列被称为表。一组表组成了数据库。
(4) 关系数据库中的数据是按照“数据结构”来组织的,因为有了“数据结构”,所以关系数据库中的数据是“条理化”的。
3) SQL的构成
关系数据库采用结构化查询语言(Structured Query Language,SQL)来对数据库中的数据和表进行查询、更新和管理。SQL由4部分构成,即数据库定义语言(Data Definition Language,DDL)、数据库操纵语言(Data Manipulation Language,DML)、数据库控制语言(Data Control Language,DCL)和其他,各个部分的主要功能如下。
(1) 数据库定义语言。
数据库定义语言主要用来进行定义数据库的逻辑结构,如表、视图、索引等,主要包含定义、修改和删除3方面内容,用到的关键字为CREATE、DROP和ALTER。
(2) 数据库操纵语言。
数据库操纵语言主要用来对数据库的数据进行操作和更新。一般用到的关键字为INSERT、UPDATE、DELETE。
(3) 数据库控制语言
数据库控制语言主要用于数据库对象授权、用户维护等,主要使用的关键字为GRANT、REVOKE。
(4) 其他。
其他主要针对SQL的一些特殊应用,如嵌入式SQL、SQL的扩展功能等。除此之外SQL查询主要使用的关键字为SELECT,在面对复杂查询的时候还可能会用到JOIN等,为了保证事务的一致性等还会用到存储过程。
2. 非关系数据库
非关系数据库也被称为NoSQL数据库。传统的关系数据库管理系统(RDBMS)是通过SQL这种标准语言来对数据库进行操作的。而相对地,NoSQL数据库并不使用SQL。因此,有时候人们会将其误认为是对使用SQL的现有RDBMS的否定,并将要取代RDBMS,而实际上却并非如此。NoSQL数据库是对RDBMS所不擅长的部分进行的补充,因此应该理解为Not only SQL的意思。NoSQL数据库和RDBMS之间的主要区别如表32所示。


表32NoSQL数据库和RDBMS之间的主要区别





项目

NoSQL
RDBMS

数据类型
主要是非结构化数据
结构化数据

数据库结构
不需要事先定义,并可以灵活改变
需要事先定义,是固定的
数据一致性
存在临时的不保持严密一致性的状态
通过ACIO特性保持严密的一致性

扩展性
通过横向扩展。可以在不降低性能的前提下应对大量访问,实现线性扩展
基本是向上扩展。由于需要保持数据的一致性,因此性能下降明显

服务器
以分布、协作式工作为前提
以在一台服务器上工作为前提
故障容忍性
有很多无单一故障点的解决方案,成本低
为了提高故障容忍性需要很高的成本
查询语言
支持多种非SQL
SQL
数据量
(和RDSMS相比)较大规模数据
(和NoSQL相比)较小规模数据

NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。一般把非关系数据库划分为4大类,即键值数据库、列存储数据库、文档型数据库和图形数据库。下面分别简要介绍。
1) 键值数据库
键值(KeyValue)数据库使用简单的键值方法来存储数据。键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键和值都可以是从简单对象到复杂复合对象的任何内容。键值数据库是高度可区分的,并且允许以其他类型的数据库无法实现的规模进行水平扩展。
键值数据库最典型的代表是Redis。Redis是一个高性能的键值数据库,支持存储字符串(String)、链表(List)、集合(Set)和哈希类型(Hash)。对于这些类型都支持数据库集合运算和增、删、查、改等其他代数运算,而且这些操作都是原子性的。除此之外,Redis还支持主从同步。
2) 列存储数据库
和传统关系数据库按行存储数据的数据组织方式不同,列存储数据库采用按列存储的方式来组织存储数据。列存储数据库主要适合于批量数据处理和即时查询。
Apache的HBase就是一款典型的列存储数据库。HBase是一款可伸缩的、高可靠性的、分布式Hadoop数据库。HBase在Hadoop上提供了类似于谷歌的Big Table分布式数据存储系统的能力,利用Hadoop的分布式文件系统(HDFS)作为其文件存储系统。利用HBase可以实现大规模结构化存储集群的搭建和应用。
3) 文档型数据库
文档型数据库是主要用来存储和管理大量结构化文档的数据库系统,其设计灵感来源于Lotus Notes办公软件。文档型数据库主要的存储格式有人们所熟知的XML、HTML、JSON等。关系数据库在数据库设计阶段需要事先规定好每一个字段的数据类型,这导致数据库中的每一条数据记录都有相同的数据类型,在数据库使用过程中修改字段的数据类型非常困难。文档型数据库通过存储的数据获知其数据类型,通常文档型数据库会把相关联类型的数据组织在一起,并且允许每条数据记录和其他数据记录格式不同。
4) 图形数据库
图形数据库也是非关系数据库的一种类型,它应用图形理论存储实体之间的关系信息,为某一图形问题提供了良好的数据库存储与数据处理解决方案。以最常见的社交网络中人与人的关系信息为例,使用传统关系数据库存储社交网络数据的效果并不理想,难以查询及深度遍历大量复杂且互连接的数据,响应时间缓慢且超出预期,而图形数据库的特点恰到好处地填补了这一短板。作为NoSQL的一种类型,图形数据库很长一段时间都局限于学术与实验室。随着社交网络Facebook、电子商务以及资源检索等领域的发展,急需一种可以处理复杂关联的存储技术,而采用图形数据库组织存储、计算分析挖掘低结构化且互连接的数据则更为有效,因此图形数据库也逐渐从实验室走出,得到更广泛的应用。

3.4.4云存储
随着Internet技术的快速推进、数据量的急剧增长,对存储系统提出了更高的要求——更大存储容量、更强的性能、更高的安全性级别、进一步智能化等。传统的存储区域网络(Storage Area Network,SAN)或网络附属存储(Network Attached Storage,NAS)技术面对PB级甚至EB级海量数据,存在容量、性能、扩展性和费用上的瓶颈,已经无法满足新形势下数据存储的要求。因此,为了应对不断变大的存储容量、不断加入的新型存储设备、不断扩展的存储系统规模,云存储作为一种全新的解决方案被提出。
1. 云存储的概念及特性
云存储是一种网上在线存储的模式,即把数据存放在由第三方托管的多台虚拟服务器中,而非专属的服务器上。托管(Hosting)公司营运大型的数据中心,需要数据存储托管的人向数据中心购买或租赁存储空间来满足数据存储的需求; 数据中心营运商根据客户的需求,在后端准备存储虚拟化的资源,并将其以存储资源池(Storage Pool)的方式提供给客户,客户便可自行使用此存储资源池来存放文件或对象。实际上,这些资源可能被分布在众多的服务器主机上。
从技术角度来说,云存储是指通过集群技术、网络技术或分布式技术等技术,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一种技术。
以大化小、化整为零的思想是云存储技术的设计思想。从功能需求来看,云存储系统相比于传统的单一的存储功能来说,功能更加开放化和多元化; 从数据管理上看,云存储需要处理的数据类型更多、数据量更大。总体来说,云存储有以下特性。
(1) 可靠性。
云存储采取将多个小文件分为多个副本的存储模式来实现数据的冗余存储,数据存放在多个不同的节点上,任意其他的节点发生数据故障时,云存储系统将会自动将数据备份到新的存储节点上,保证数据的完整性和可靠性。
(2) 安全性。
云存储服务商往往资金雄厚,因而有大量专业技术人员的日常管理和维护,从而保障云存储系统运行安全。通过严格的权限管理,运用数据加密、加密传输、防篡改、防攻击、实时监测等技术,降低了病毒和网络黑客入侵破坏的风险,确保数据不会丢失,为用户提供安全可靠的数据存储环境。
(3) 管理方便。
大部分数据都迁移到了云存储上之后,所有的数据的升级维护任务则由云存储服务提供商来完成,这样管理起来更加方便,同时也大大地降低了企业存储系统上的运营维护成本。
(4) 可扩展性。
云存储服务具有强大的可扩展性。当企业的发展加速以后,如果发觉公司现有的存储空间不足,就会考虑扩宽存储服务器的容量来满足现有业务的存储需求,而云存储服务的特性就可以很方便地在原有基础上扩展服务空间,满足需求。扩展存储需求意味着用户的成本提高,云存储提供商的管理复杂性增加,不仅要为存储本身提供可扩展性(功能扩展),而且必须为存储带宽提供可扩展性(负载扩展)。
2. 云存储系统的结构模型
与传统的存储设备相比,云存储系统不仅仅是一个硬件,而且是一个由网络设备、存储设备、服务器、应用软件、公用访问接口、接入网和客户端程序等多个部分组成的复杂系统。各部分以存储设备为核心,通过应用软件来对外提供数据存储和业务访问服务。云存储系统的结构模型由存储层、基础管理层、应用接口层和访问层组成,如图312所示。



图312云存储系统的结构模型


1) 存储层
存储层是云存储最基础的部分。存储设备可以是FC(光纤通道)存储设备,可以是NAS和ISCSI等IP存储设备,也可以是SCSI或SAS等DAS存储设备。云存储中的存储设备往往数量庞大且分布在不同的地域,彼此之间通过广域网、互联网或FC连接在一起。云存储系统对外提供多种不同的存储服务,各种存储服务的数据统一存放在云存储系统中,形成一个海量的数据池。
2) 基础管理层
基础管理层是云存储最核心的部分,也是云存储中最难以实现的部分。基础管理层通过集群、分布式文件系统和网格计算等技术,实现云存储中多个存储设备之间的协同工作,使多个存储设备可以对外提供同一种服务,并提供更大、更强、更好的数据访问性能。
内容分发网络(Content Delivery Network,CDN)使用户可就近取得所需内容,改善互联网拥挤的状况,提高用户访问网络的响应速度。数据加密技术保证云存储系统中的数据不会被未授权的用户访问,同时,通过各种数据备份、数据容灾技术和措施保证云存储中的数据不会丢失及云存储系统自身的安全和稳定。
3) 应用接口层
应用接口层是云存储系统中最灵活多变的部分。云存储平台面向用户开发的应用服务接口称为公共API接口,包括数据存储服务、公共资源使用、数据备份功能等接口。服务提供商可以按照用户的业务需求开发对应的应用接口,授权用户可以在任何地方通过应用接口层提供的Web服务应用接口登录,利用云存储系统获取云存储服务,对系统资源进行管理和访问。应用接口层还包括网络接入、用户认证和权限管理等功能。
4) 访问层
任何一个已授权的用户都可以在任何地方通过互联网的终端设备,根据运营商提供的访问接口或者访问手段登录云存储系统,接受云存储服务。访问层的主要功能包括个人空间服务、运营商空间租赁等,如访问控制、身份识别、安全隔离等; 企事业单位可以通过访问层来实现数据备份、数据归档、集中存储、远程共享等; 不同的云存储运营单位可以根据实际业务类型,开发不同的应用服务和移植现有的应用服务,如网络硬盘、视频点播、视频监控、远程数据备份等。
从云存储系统的结构可以看出,云存储对使用者来讲,不是某一个具体的设备,而是一个由许许多多个存储设备和服务器所构成的集合体。使用者使用云存储时,并不是使用某一个存储设备,而是使用整个云存储系统提供的一种数据访问服务。所以严格来讲,云存储不是存储,而是一种服务。云存储的核心是应用软件与存储设备结合,通过应用软件来实现存储设备向存储服务的转变。
3. 云存储的应用
云存储能提供什么样的服务取决于云存储架构的应用接口层中内嵌了什么类型的应用软件和服务。不同类型的云存储服务商对外提供的服务也不同。根据服务类型和面向的用户不同,云存储服务可以分为个人级云存储应用和企业级云存储应用。
1) 个人级云存储应用
个人级云存储应用包括: 
(1) 网盘。
一些小型的云盘,如百度网盘、360网盘等,可以在线存储大量的数据,服务商会给每个用户一定量大小的存储空间,如果用户需要更大的存储空间、更丰富的功能,则需要向服务商支付一定的费用购买。服务商通常提供两种访问网盘的方式: 一种是Web页面访问; 另一种是客户端软件访问。Web页面访问方式比较简单,用户可以直接通过浏览器上传或下载文件,对自己的数据进行存储和备份。而客户端软件访问需要用户到网盘对应的官方网站上下载相应的客户端来使用。
(2) 文档在线编辑。
经过这几年的快速发展,基于云存储的文档在线编辑应用得到了广泛应用。如今,编辑文档已经可以不需要在用户的PC端安装文本编辑软件,只要打开Web页面,使用部署在云端的在线编辑器软件(如谷歌的Docs),登录相应的账号,就能查看到相应的存储在云端的文档,对文档进行编辑和修改,并将文档上传到云端。只要有网络,用户就可以随时随地访问保存在云端的文件并对其编辑,还可以通过云端的服务管理功能,实现文档共享和传送文档。文档在线编辑的这些功能对于移动办公有很大的帮助。
(3) 网络游戏。
网络游戏要支持大量的用户进行连线对战,游戏开发商需要在全国各地部署很多服务器,管理运营成本很高。云计算和云存储可以代替现有的多服务器架构,使所有玩家都能集中在一个游戏服务器组的管理之下玩游戏。基于云存储管理和运营网络游戏,可以大幅提升游戏性能,并有效降低游戏开发商的运营成本。
个人级云存储的应用带动了企业级云存储的应用,越来越多的企事业单位都逐渐开始使用云存储来支撑业务的发展与数据的处理。
2) 企业级云存储应用
企业级云存储应用包括: 
(1) 云存储空间租赁服务。
信息化时代的蓬勃发展产生了海量的数据,这些数据的存储与分析变成企业的新挑战。数据的存储需要大容量的存储设备,存储设备的管理与数据安全的保障又会让企业消耗大量的人力、物力、财力,一些小型企业难以支撑这么一大笔花费,而云存储可以很好地解决这些问题。企业只需要根据自己公司所产生的数据量,向云存储服务商购买相应的云存储空间,而数据的存储及安全性等问题就交由云存储服务商处理,这样企业可以专注于自己业务的发展,无须耗费成本在数据存储设备的购置、管理和维护上。
(2) 企业级远程数据备份及容灾。
随着企业的数据规模不断增长,企业对数据安全的要求也越来越高。企业不仅可以租赁高性能、海量的云存储空间存储数据,云存储服务商还可以为企业提供数据备份来远程容灾,当企业本地数据发生了严重的事故(数据丢失、数据损毁)时,就可以通过远程的备份数据快速进行数据恢复,这样就避免造成无法挽回的损失。
(3) 视频监控系统。
近些年来,电信和网通在全国各地建设了很多不同规模的网络视频监控系统,其终极目标是建设一个类似话音网络和数据服务网络一样的、遍布全国的视频监控系统,为所有用户提供远程(城区内的或异地的)的实时视频监控和视频回放功能,并通过此项服务来收取费用。但由于目前城市内部和城市之间网络条件限制及视频监控系统存储设备规模的限制,类似服务一般都只能在一个城市内部,甚至一个城市的某一个区县内部来建设。
如果有一个全国性的云存储系统,并在这个云存储系统中内嵌视频监控平台管理软件,实现类似的服务将会变成一件非常简单的事情。系统的建设者只需考虑摄像头和编码器等前端设备,为每个编码器、摄像头分配一个带宽足够的接入网链接,通过接入网与云存储系统相连接,实时的视频信息就可以很方便地保存到云存储中,并通过视频监控平台管理软件实现视频的管理和调用。用户不仅可以通过电视墙或PC端来监看视频,还可以通过手机来远程观看实时视频。
 知识巩固与技能训练
一、 名词解释
1. 数据2. 网络爬虫3. HDFS4. 云存储
二、 单选题
1. 当前社会中,最为突出的大数据环境是()。

A. 互联网B. 物联网C. 商业D. 自然资源
2. 智能健康手环的应用开发,体现了()的数据采集技术的应用。 
A. 统计报表B. 网络爬虫C. API接口D. 传感器
3. 数据仓库的最终目的是()。
A. 收集业务需求B. 建立数据仓库逻辑模型
C. 开发数据仓库的应用分析D. 为用户和业务部门提供决策支持
4. 大数据时代,数据使用的关键是()。
A. 数据收集B. 数据存储C. 数据分析D. 数据再利用
5. 一个网络信息系统最重要的资源是()。
A. 数据库B. 计算机硬件
C. 网络设备D. 数据库管理系统
三、 思考题
1. 大数据的来源有哪些?
2. 简述常用的数据采集方法。
3. 非关系存储系统有哪些?它们的特点是什么?
4. 具体描述云存储系统的结构模型。
5. 云存储服务系统的应用有哪些分类?请列举一些应用。
6. 简述云存储的特性。