APP下载

Web 应用中的新型分布式大数据存储技术研究

2018-12-05王俊于爱荣牛彦杰杨飞李峰

数据与计算发展前沿 2018年3期
关键词:结构化内存分布式

王俊,于爱荣,牛彦杰,杨飞,李峰

1.南京电讯技术研究所,江苏 南京 210007

2.解放军理工大学指挥信息系统学院,江苏 南京 210007

3.装备发展部驻七一四厂军事代表室,江苏 南京 210007

自从 WWW(world wild web)技术产生以来,其在 Internet 上得到了广泛应用,逐渐成为人们进行信息交流的最重要的渠道之一。它支持快速的信息发布、动态的用户交互,并且能与后台数据库、业务系统实现灵活、安全和便捷的连接。同时,软件技术也逐步由单机、客户机/服务器模式向分布式方向发展,以往基于数据库的开发模式逐渐被基于 Web 的多层开发所取代。WEB 应用程序一般是 B/S 模式。Web 应用程序首先是“应用程序”,和用标准的程序语言,如 C、C++等编写出来的程序没有什么本质上的不同。然而 Web 应用程序又有自己独特的地方,就是它是基于 Web 的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。随着应用的深入发展,Web 应用也在快速生成形态各异、规模庞大的数据,而这些海量数据积累到一定规模后引发的质变,形成了大数据。大数据[1]这一术语正是产生在全球数据爆炸增长的背景下,用来形容庞大的数据集合。与传统的数据集合相比,大数据通常包含大量的非结构化数据,且大数据需要更多的实时分析。此外,大数据还为挖掘隐藏的价值带来了新的机遇,同时给我们带来了新的挑战,即如何有效地组织管理这些数据。如今,工业界、学术界甚至政府部门都对大数据这一研究领域产生了巨大的兴趣。大数据是互联网发展过程中的重要资源,也是互联网商业核心价值所在,因此,大数据的处理在 Web 应用中起到至关重要的作用。

1 大数据背景和研究现状

1.1 大数据概念

“大数据”的内涵远远超越物联网、云计算等信息技术的概念。大数据是一个抽象的概念,除去数据量上的庞大,大数据还有一些其特有的特征,这些特征决定了大数据与“海量数据”和“非常大的数据”这些概念之间的不同。一般意义上,大数据是指无法在有限时间内用传统 IT 技术和软硬件工具对其进行感知、获取、管理、处理和服务的数据集合。Wiki百科定义,大数据是一个超大的、难以用常规的数据库管理技术和工具处理的数据集。2011年,大数据及其研究领域极具影响力的领导者的国际数据公司(IDC)在该公司发布的报告中将大数据被定义为:“大数据技术描述了新一代的技术和架构体系,通过高速采集、发现或分析,提取各种各样的大量数据的经济价值.”从这一定义来看,大数据的特点可以总结为 4个 V,即 volume(体量浩大)、variety(模态繁多)、velocity(生成快速)和 value(价值巨大但密度很低)。这种 4Vs 定义指出大数据的意义和必要性,即挖掘蕴藏其中的巨大价值。这种定义指出大数据最为核心的问题,就是如何从规模巨大、种类繁多、生成快速的数据集中挖掘价值。由于大数据的上述特征,它正在成为世界新的战略资源争夺的一个新焦点。

1.2 大数据存储研究现状

互联网的数据“大”是不争的事实,目前除了互联网企业外,数据处理领域还是传统关系型数据库(RDBMS)的天下。传统 RDBMS 的核心设计思想基本上是 30年前形成的。过去 30年脱颖而出的无疑是 Oracle 公司。全世界数据库市场基本上被 Oracle,IBM/DB2,Microsoft/SQL Server 垄断。开源数据库主要是 MySQL,PostgreSQL,除了互联网领域外,其他行业用的很少。这些数据库当年主要是面向 OLTP交易型需求设计、开发的,是用来开发人机会话应用为主的。这些传统数据库底层的物理存储格式都是行存储,比较适合数据频繁的增删改操作,但对于统计分析类的查询,行存储其实效率很低。在这些成熟的数据库产品中,有2个典型特例:一个是 Teradata,一个是 Sybase IQ。[2]

Teradata 一开始就使用 MPP(Massive Parallel Processing)架构,以软硬一体机的产品方式提供给客户,其定位是高端客户的数据仓库和决策分析系统,Teradata 在全世界的客户只有几千个,在数据分析技术上Oracle和IBM 逊于 Teradata。Sybase IQ是一款最早基于列存储的关系型数据库产品,其定位跟Teradata 类似,不过是以软件方式销售的。Teradata和 Sybase IQ 在数据分析应用上的性能其实都比Oracle,DB2等要普遍好。

1.3 大数据存储面临的挑战

大数据给系统处理带来了3方面的挑战[3]:

1)存储规模庞大,通常达到 PB(1,000 TB)甚至EB(1,000 PB)量级;

2)存储管理复杂,需要兼顾结构化、非结构化和半结构化的数据,难于找到统一的技术体制进行高效的管控;

3)数据服务的种类和水平要求高,不同的上层应用对存储系统的性能、可靠性、安全性等指标有不同的要求,而随着数据的大规模扩展和结构复杂度的提升进一步放大了这些指标实现的技术难度。

这些挑战虽然在存储领域都不是新的问题,但是在大数据背景下,解决这些问题的技术难度随着量级的提升成倍提高,最终引起了存储技术的质变。大数据环境下的存储和管理,不仅需要对上层提供便捷高效的数据访问接口,快速存取 PB 甚至 EB 量级的数据,而且还需要能够在指定的响应时间内完成数据的加载、读取,并保证数据的正确性和可用性。要完成以上要求,需要更进一步的研究存储与管理技术。

2 新型的分布式大数据存储设计

2.1 设计目标与策略

由于在线 Web 应用对交互性、稳定性有较高的要求,在进行大数据存储设计时主要优先考虑数据的高可用性、高性能和可扩展性[4]。

(1)高可用性

通过多机器、多份数据副本的冗余机制避免单点故障,同时支持在线故障节点数据重建与恢复,支持Web 应用的不同粒度在线数据迁移、备份与恢复,保证面对各种异常时可以提供正常服务的能力。

(2)高性能

采用内存数据库和分布式数据库相结合的方式,提高整个大数据存储系统的吞吐能力以及系统的响应时间,其查询、写入性能随分布式存储集群规模的扩展同步提升,不造成存储与应用的性能瓶颈。

(3)可扩展性

采用分片的方式将数据拆分,分散到不同的数据库实例上进行“负载分流”。同时在高速磁盘或内存数据库中存储整个存储系统的全局视图保证存储的高效运转。

2.2 总体架构分析与设计

在互联网出现之前,数据主要是人机会话方式产生的,以结构化数据为主。应用系统主要采用传统的RDBMS 来管理这些数据。系统的数据增长缓慢、系统都比较孤立,用传统数据库基本可以满足各类应用开发。而随着互联网和 Web 应用的出现和快速发展,尤其是移动互联网的发展,加上数码设备的大规模使用,如今数据的主要来源已经不是人机会话了,而是通过设备、服务器、应用自动产生的。传统行业的数据同时也多起来了,比如各种用户行为数据、定位数据、图片、视频、气象、地震、医疗等等,这些数据以非结构、半结构化为主。目前的“大数据应用”主要是对各类数据进行整理、交叉分析、比对,对数据进行深度挖掘,对用户提供自助的即席、迭代分析能力。还有一类就是对非结构化数据的特征提取,以及半结构化数据的内容检索、理解等。传统数据库对这类需求和应用无论在技术上还是功能上都几乎束手无策。

为了满足 Web 应用对于大数据存储的需求,本文设计了一种新型的分布式数据库处理架构(见图1所示),其架构主要包括分布式数据库引擎和分布式数据存储节点两个部分。分布式数据库引擎在现有结构化数据处理引擎的基础上扩展文件处理的能力,统一提供连接池管理、驱动加载、事务处理和缓存管理等功能,优化 SQL 解析、执行和数据合并,同时在逻辑上将底层的众多关系型数据库和文件系统管理起来;分布式存储节点将关重数据(如 Web 应用中的全局视图,用户信息等)独立存储和加载,以提高数据查询和读取的效率,其他数据则采用列式存储方式将各类数据进行存储、处理及同步[5–6]。通过将数据进行划分到不同的数据库存储节点中的方式,可以降低了普通数据库面对海量数据时的压力,充分利用各节点的计算资源,从而使整个架构达到较高的性能。

2.3 内存数据库与分布式数据库同步技术

图1 新型的分布式数据库处理架构Fig.1 New distributed database processing architecture

在后台存储端,采用 MPP 架构的新型数据库集群,重点面向 Web 应用中的大数据,完成对搜索分析类应用的支撑,运行环境多为低成本 PC Server,具有高性能和高扩展性的特点,在挖掘分析类应用领域可以获得较好的支撑。为了提高整个存储系统的架构性能,在兼顾性能、成本和容量的基础上,采用了内存数据库和 MPP 数据库进行混合组网,混合组网部署如图2所示。通过数据同步总线将设定的同步数据定时同步至内存数据库中,提高分布式运算对数据高效存取的需求[7–8]。

在进行数据同步过程中,主要有以下 3种方式:

(1)内存数据库数据的定时加载与更新:系统运转初期,内存数据库按照设定的同步数据范围从后台数据库加载业务数据,完成数据的加载和同步更新;

(2)内存数据库后向的数据同步:当内存数据库中存储的数据中发生一些新数据或数据变更时,这些新数据或数据变更需要同步到后台数据库中进行固化存储;

(3)内存数据库之间的同步:在多台内存数据库组合进行负载均衡时,当一台内存数据库数据发生变化时,将其数据同步到后台数据库后,还需要将数据向其他内存数据库进行同步。

2.4 数据分片技术

在进行数据存储时,不仅需要考虑系统的整体构架,同时还要重视数据库的物理设计,数据库的物理设计对数据库的性能影响有时远比其他因素重要。本文提出的分布式数据库处理架构采用了数据分区技术来提升整个存储系统的性能,在特定的SQL 操作中减少数据读写的总量以缩减响应时间[9]。数据分区技术中采用了垂直(纵向)拆分和水平(横向)拆分两种方式。

垂直(纵向)拆分:这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。由于在一个大型的数据库中表和表之间的数据很多是没有关系的,或者更加不需要(join)操作,理论上就应该把他们分别放到不同的服务器。例如用户的收藏夹的数据和博客的数据库就可以放到两个独立的服务器。

水平(横向)拆分:这种形式分区是对表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。通过将一个表的数据划分到不同的数据库,大大缓解单表的存储压力,但是两个数据库的表结构一样。怎么划分,应该根据一定的规则,可以根据数据的产生者来做引导,上面的数据是由人产生的,可以根据人的id来划分数据库。然后再根据一定的规则,先获知数据在哪个数据库,这样就可以解决大数据存储的性能问题。

3 结论

大数据的出现,开启了一次重大的时代转型.在前期IT发展的时代,技术是大家关注的重点,技术推动了数据的发展;如今,随着数据的价值凸显,信息的重要性日益提高,今后将是数据推动技术的进步[8–9]。在不远的将来,大数据的重心将从存储和传输,过渡到数据的挖掘和应用,这将更加深刻影响企业的商业模式。

猜你喜欢

结构化内存分布式
促进知识结构化的主题式复习初探
改进的非结构化对等网络动态搜索算法
结构化面试方法在研究生复试中的应用
左顾右盼 瞻前顾后 融会贯通——基于数学结构化的深度学习
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
基于DDS的分布式三维协同仿真研究
内存搭配DDR4、DDR3L还是DDR3?