大数据存储技术刘雷1,杜鹏程2,贺俊铭3,孔庆春4,张莉莉51,2,3,4,5(清华大学计算机科学与技术系,北京100084)Abstract:Big data analysis compared with the traditional data warehouse applications, with a large amount of data and complex query analysis, etc. Big data storage because of its itself exists 4 v characteristics, the traditional storage technology can not meet the needs of large data storage, data resources through the ETL technology was extracted from the source system, and is converted into a standard format, then using NoSQL database for database access management, make full use of the network cloud storage technology enterprise storage cost saving, efficiency advantage, through a distributed network file system to store data information in the Internet network resources, using visual operating interface to satisfy the user's data processing requirements at any time.Key words: Data acquisition (ETL), data access (NoSQL), cloud storage, distributed file systems, visualization摘要:大数据分析相比于传统的数据仓库应用,具有数据量大、查询分析复杂等特点。
大数据存储由于其本身存在的4V特征,传统的存储技术不能满足大数据存储的需要,通过ETL技术数据资源被从源系统中提取,并被转换为一个标准的格式,再使用NoSQL数据库进行数据库存取管理,充分利用网络云存储技术节约企业存储成本,提高效率的优势,通过分布式网络文件系统将数据信息存储在整个互联网络资源中,并用可视化的操作界面随时满足用户的数据处理需求。
关键词: 数据采集(ETL)、数据存取(NoSQL)、云存储、分布式文件系统、可视化1引言在学术界,Nature早在2008年就推出了Big Data专刊[1]。
计算社区联盟(Computing Community Consortium)在2008年发表了报告《Big9Data Computing: Creating revolutionary breakthroughs in commerce, science, and society》[2],阐述了在数据驱动的研究背景下,解决大数据问题所需的技术以及面临的一些挑战。
Science 在2011年2月推出专刊《Dealing with Data》[3],主要围绕着科学研究中大数据的问题展开讨论,说明大数据对于科学研究的重要性。
美国一些知名的数据管理领域的专家学者则从专业的研究角度出发,联合发布了一份白皮书《Challenges and Opportunities with Big Data》[4]。
该白皮书从学术的角度出发,介绍了大数据的产生,分析了大数据的处理流程,并提出大数据所面临的若干挑战。
业界通常用V olume、Variety、Value和Velocity(简称为“4V”,即数据体量巨大、数据类型繁多、价值密度低和处理速度快)四个特征来显著区分大数据与传统数据。
大数据技术是一个整体,没有统一的解决方案,本文从大数据生命周期过程的角度讨论了ETL技术、NoSQL、云存储、分布式系统、数据可视化等5个部分。
2ETL技术随着信息化进程的推进,人们对数据资源整合的需求越来越明显。
但面对分散在不同地区、种类繁多的异构数据库进行数据整合并非易事,要解决冗余、歧义等脏数据的清洗问题,仅靠手工进行不但费时费力,质量也难以保证;另外,数据的定期更新也存在困难。
如何实现业务系统数据整合,是摆在大数据面前的难题。
ETL数据转换系统为数据整合提供了可靠的解决方案。
ETL是Extraction-Transformation-Loading的缩写,中文名称为数据提取、转换和加载。
ETL负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
它可以批量完成数据抽取、清洗、转换、装载等任务,不但满足了人们对种类繁多的异构数据库进行整合的需求,同时可以通过增量方式进行数据的后期更新。
ETL体系结构体现了主流ETL产品的主要组成部分[5],其体系结构如图1:图1 ETL体系结构ETL过程中的主要环节就是数据抽取、数据转换和加工、数据装载[6]。
为了实现这些功能,各个ETL 工具一般会进行一些功能上的扩充,例如工作流、调度引擎、规则引擎、脚本支持、统计信息等。
2.1数据抽取数据抽取是从数据源中抽取数据的过程[7]。
实际应用中,不管数据源采用的是传统关系数据库还是新兴的NoSQL数据库,数据抽取一般有以下几种方式:2.1.1全量抽取全量抽取指的是ETL在集成端进行数据的初始化时,首先由业务人员或相关的操作人员定义抽取策略,选定抽取字段和定义规则后,由设计人员进行程序设计;将数据进行处理后,直接读取整个工作表中的数据作为抽取的内容,类似于数据迁移,是ETL过程中最简单的步骤,其简单性主要适用于处理一些对用户非常重要的数据表。
2.1.2增量抽取增量抽取主要发生在全量抽取之后。
全量抽取之后,对上次抽取过的数据源表中新增的或被修改的数据进行抽取,称之为增量抽取。
增量抽取可以减少对抽取过程中的数据量,提高抽取速度和效率,减少网络流量,同时,增量抽取的实现,对异构数据源和数据库中数据的变化有个准确的把握。
信息抽取不是仅仅从大量的文献集或数据集中找出适合用户需要的那篇文献或部分内容,而是抽取出真正适合用户需要的相关信息片段,提供给用户,并找出这些信息与原文献直接的参考对照。
2.2数据转换和加工从数据源中抽取的数据不一定完全满足目的库的要求,例如数据格式的不一致、数据输入错误、数据不完整等等,还要对抽取出的数据进行数据转换和加工。
数据转换是真正将源数据库中的数据转换为目标数据的关键步骤,在这个过程中通过对数据的合并汇总过滤以及重新格式化和再计算等,从而将操作型数据库中的异构数据转换成用户所需要的形式[8]。
数据的转换和加工可以在ETL引擎中进行,也可以在数据抽取过程中利用数据库的特性同时进行。
(1)ETL引擎中的数据转换和加工[9]ETL引擎中一般以组件化的方式实现数据转换。
常用的数据转换组件有字段映射、数据过滤、数据清洗、数据替换、数据计算、数据验证、数据加解密、数据合并、数据拆分等。
这些组件如同一条流水线上的一道道工序,它们是可插拔的,且可以任意组装,各组件之间通过数据总线共享数据。
有些ETL工具还提供了脚本支持,使得用户可以以一种编程的方式定制数据的转换和加工行为。
(2)在数据库中进行数据加工关系数据库本身已经提供了强大的SQL、函数来支持数据的加工,如在SQL查询语句中添加where 条件进行过滤,查询中重命名字段名与目的表进行映射,substr函数,case条件判断等等。
相比在ETL引擎中进行数据转换和加工,直接在SQL语句中进行转换和加工更加简单清晰,性能更高。
对于SQL语句无法处理的可以交由ETL引擎处理。
2.3数据装载将转换和加工后的数据装载到目的库中通常是ETL过程的最后步骤。
装载数据的最佳方法取决于所执行操作的类型以及需要装入多少数据。
当目的库是关系数据库时,一般来说有两种装载方式。
(1)SQL装载直接SQL语句进行insert、update、delete操作。
(2)采用批量装载方法如bcp、bulk、关系数据库特有的批量装载工具或API。
大多数情况下会使用第一种方法,因为它们进行了日志记录并且是可恢复的。
但是,批量装载操作易于使用,并且在装入大量数据时效率较高。
使用哪种数据装载方法取决于业务系统的需要。
3NoSQL技术[10]在大数据时代,web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。
关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。
对于大型的SNS网站,每天用户产生海量的用户动态,对于关系数据库来说,在庞大的表里面进行SQL查询,效率是极其低下乃至不可忍受的。
此外,在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。
对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?所以上面提到的这些问题和挑战都在催生一种新型数据库技术的诞生,这就是NoSQL技术。
3.1NoSQL与关系型数据库设计理念比较关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。
而非关系型数据库以键值对存储,它的结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。
3.2NoSQL技术特点易扩展性:NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。
数据之间无关系,这样就非常容易扩展。
也无形之间,在架构的层面上带来了可扩展的能力。