王昱彬 江苏有线网络发展有限责任公司吴江分公司
随着信息化和网络技术的不断发展,互联网上的信息越来越呈现出多样性和关联性,存储平台需要处理的数据不再是简单的文本、图像等数据,可能是一段短视频、一个表情、一段语音等各种多媒体的信息,并且这些信息之间可能存在关联性。例如:一条转发的微信公众号消息,就包含了标题、文本、图片、GIF动画、视频、评论和回复等要素。因此,对于存储平台来说,不仅要能够存储这些数据本身,还要能够对相关的信息集合进行关联。
为解决这些巨量、非结构化和相互关联的数据存储及管理问题,需要构建一个统一的、非结构化的云存储平台。该平台可以实现统一的对外存储接口,实现高效率的数据存储,并且便于对存储数据的访问应用。
根据我公司对存储业务的需求,对云存储平台有以下需求:
(1)支持大量非结构化数据的存储;
(2)设计统一的存储服务,兼容公司原有存储方式;
(3)兼顾经济性和实用性。
我们对目前的几种存储方案进行了比较:
(1)传统文件系统和存储介质
是一种简单直接的存储方式,直接依赖于计算机操作系统的文件系统,因为没有附加的软件,门槛比较低,不需要专业的维护人员。缺点是数据的索引难、数据的安全性、完整性、备份等问题都很困难。现在有些单位会将数据备份在大容量蓝光盘等存储设备中,这种方式管理起来不太灵活,需要调取数据的时候流程复杂,难以控制,容易出现操作风险。
(2)关系型分布式数据库系统
这是一种关系型数据库与分布式技术结合的存储方式。从物理上看,数据存储是分布在不同地方的存储单元,但是逻辑上是一套系统,通过设置一定冗余,提高了系统整体可靠性和性能。这种系统经过多年商业使用,已经被证明十分可靠,广泛使用在银行等大型系统中。这类系统对技术人员要求很高,需要一支专业团队来维护。在信息爆炸的时代,大量的非结构化数据的出现,特别是达到PB级后,这种类型的数据库在实际应用中也出现了一系列问题。
(3)非结构化云存储技术
对于目前非结构化数据大量增长的情况,国内外出现大量的对这种类型数据进行存储技术的研究开发,寻找能够有效管理海量非结构化数据的解决方案。相对于关系型数据库模型的较为统一,非结构化的数据模型目前还是呈现“五花八门”的形态,没有一款主流的模型出现。
本文根据目前有线网络公司在运营过程中非结构化数据的存储需求,尝试探索与本公司实际要求相适应的云存储技术解决方案。
(1)分布式文件系统
① HDFS:通常来说HDFS可以支持分割操作,所以可支持很大的数据文件,分块后的数据块会存在备份,其备份和分布式特点,保障了数据的安全和访问的效率。HDFS的设计是元数据存储在NameNode内存中,有限的寻址能力导致其不适合存储海量的小文件。
② FastDFS:相比HDFS来说更加轻量级,FastDFS更适用于中小型数据文件的存储管理。FastDFS支持冗余备份,但简化了存储和备份的机制,取消分块,元数据由文件名存储,系统体量小。
(2)非结构化数据库
① HBase:由于面向的是海量的非结构化数据,所以最好能够采用分布式云存储技术,而且由于公司体量的限制,希望采用相对比较低廉的价格维护更多的数据,因为Apache的HBase分布式数据库特点和这次设计的需求较为符合,所以在非结构化数据库中选择了HBase。
(3)其他数据库
① Oracle:公司原有的重要系统数据库以Oracle为主,所以存储平台需要兼容原有的系统。
② XmlDB:专门用来存储结构化xml的高性能数据库。
云存储系统主要包含四个部分。云存储平台架构如图1所示。
(1)服务端的服务调度器和服务节点,用于向客户端提供数据服务。
(2)由于对外采用分布式架构提供服务,所以采用分布式协调器zookeeper来进行服务的协调。
(3)服务端与MapReduce计算集群进行对接,系统可获得很强的计算和数据处理能力。
(4)在整个系统的底层,是文件系统和数据库集群,包含:HDFS和FastDFS两种分布式文件系统、HBase分布式数据库、Oracle数据库集群、DocumentDB集群、XmlDB集群等。
由于通过统一的服务端向客户端提供服务,对于用户来说,只需连接服务节点就可以提交数据的处理任务,并不需要考虑底层的文件系统和数据库的异构存储实现。而对于底层的数据存储来说,我们也设计了统一的存储结构,对数据进行落地存储。
统一的存储管理包含二进制数据的管理、数据对象的管理两方面的功能。
(1)二进制数据管理
二进制数据管理分为元数据和一般二进制文件两个部分。元数据是描述数据本身信息的数据,例如:数据的类型、大小、更新时间、特征和属性等,对于数据的查询、更新以及索引、分析都有很重要的意义,通常以表的形式来存储,我们将系统元数据统一存储到HBase中。我们在一般二进制文件的上载服务中设定了文件大小阈值,一般设置为500MB,根据大小的不同,调用不同的数据库访问API,低于阈值的,存储到FastDFS中,反之,存储HDFS中,查询时,根据统一的查询接口,分别到HBase和FastDFS中去查询得到结果。节点数据的同步在分布式存储中是一个重要问题,我们在统一存储服务程序中增加了缓存机制,用以控制分布式各个节点之间的数据同步,通过分布式协调器zookeeper,一旦本节点元数据发生改变,就会立即通知其他节点进行缓存数据的更新同步,提高了处理的效率。
(2)数据对象的管理
由于存储接口是统一的,我们对结构化数据和非结构化数据采取了不同的处理方式。对于结构化数据,兼顾了公司原有的数据库系统,采用Oracle的数据库驱动,支持其他系统数据表的导入;对于非结构化的数据,利用HBase数据库加以存储,具备了高可用性和高可靠性。另外系统还支持XmlBlob数据的存储,通过分析结构化的Xml数据,使用XmlDB进行高效的存取。
图 1 云存储平台架构
本文主要分析了有线网络公司工作中需要存储海量非结构化数据的解决方案,针对实际工作中的需要,设计了一套云存储平台,对不同类型的数据采用了统一存储接口,在底层可以实现异构存储,具有高效存储和高可用性的特点。
数据的存储只是第一步,对于存储的数据如何进行有效检索利用,并且能够挖掘其潜在的价值,是后续开展研究工作的重点。