王海豹,石宇良,张靖康,王 巍
(北京工业大学 北京 100022)
在数据量快速增长的云计算时期,数据显然已成为资产。数据除了类型多样的特性外,还出现了新的特性。①数据的量大。2010年,欧洲的各部门组织存储的数据其容量总计接近11EB,美国的数据存储量已经超过了16EB。在2011年全球1.8ZB的数据被创建和复制。而今数据每年都以TB级的增长,数据的存储量将不断刷新历史记录。②数据处理速度加快。每秒钟亚马逊S3存储1 000亿个数据对象[1],face book每秒要处理约120万张照片[2],安徽移动的wap业务平均日访问请求为6.5亿条,You Tube每分钟有48小时的视频被上传到该网站,其You Tube每个月的搜索次数是250亿次[3]。
数据的剧增,对数据库的存储提出了更高的要求。当某个存储设备出现故障时,业务不能受到其影响并继续运行。然而,关系数据库通过增加更高性能的存储服务器进行扩展的过程中需要大量人工参与,甚至还会导致服务器停机、被替换的旧服务器资源浪费;通过分区或分片的方式扩展时,需要维护多个模式,还可能要修改应用程序,扩展的复杂性相当高[2]。数据的剧增,对短时间内处理大量数据的速度也提出了较高的要求。由于关系数据库的事务一致性等本质原因,其大吞吐率性能受到限制,这使之前对小规模数据的处理方式需要重新思考。这时NoSQL数据库在云计算中显示了它的优势。
由于SQL数据库的连接、外键、触发器等导致其在扩展性方面受到很大影响,快速读写大规模数据的瓶颈问题及处理大量增加的半结构化数据的劣势,NoSQL逐渐显现出它的优势。NoSQL是指不使用关系数据模型的数据库,具有以下特性:
1)高扩展性
大多数NoSQL数据库都是开源的,可以直接从网上拿来使用。NoSQL分布式数据库充分利用现有的廉价服务器来存储数据。扩展时,只需要通过添加相关的硬件和廉价服务节点就能扩展其性能,增强存储能力。
2)高读写性能
NoSQL数据库的研发主要是针对大规模数据的处理。NoSQL数据库能够轻松应对每秒上万次的读写请求,具有极高的并发读写性能。
3)高可用性和高容错性
在一个节点失效时,将其对该节点上的数据的读写转移到其他节点进行,避免了因服务器死机、重启等导致数据丢失的情况。通过冗余存储实现数据的多处备份,快速转移失败节点,节点间自动复制数据,动态平衡现有集群,数据存储稳定的同时,也保证了应用系统不间断地高速运行。
4)灵活的数据模型
NoSQL数据库不需预先花费大量精力去设计数据库模式。在NoSQL数据库中,数据的结构改变时,随时可增减相对应的字段,省去了大量的维护工作[4-5]。
NoSQL中的HBase数据库是 Apache Hadoop的一个开源的面向列存储的分布式数据库,能够对大规模数据提供随机、实时读写访问。HBase数据库中的表是稀疏的键值映射表,表中数据默认按行键进行排序,表中的数据按时间戳存储多个版本。
HBase的服务器体系结构遵从主从服务器架构,它由HBase Master服务器和HBase HRegion服务器集群组成;HMaster服务器负责管理用户对表的增加、删除、修改、查寻操作,管理HRegionServer的负载均衡,调整Region分布,在Region Split后,负责新Region的分配,在HRegionServer停机后,负责失效HRegionServer上的Regions的迁移。HRegion服务器负责处理客户端的写请求。由Zookeeper进行协调处理HBase集群运行期间可能遇到的错误,实现其高可靠性。通过增加HRegion服务器节点即达到线性扩展的目的。实现在廉价的硬件组成的集群里管理超大规模的数据。HBase通过Hadoop分布式文件系统存储,利用MapReduce的并行计算模型,实现了数据存储与并行计算的结合[6-8]。
物资调度管理系统在平时对物资进行合理配置、科学管理和维护,在灾害事件产生时,为灾害事件的处置提供具体物资。其主要内容包括:
1)物资综合查询。可以从各个角度查询物资的信息、查询仓库信息,也可以查询生产企业的产品情况及运输企业的运输能力等。具有方便快捷地查询各部门下的物资储备情况、查询仓库信息、查看各种突发事件的详细信息、从所要物资种类迅速找到生产该类产品的生产企业。同时,用户还可以自定义查询物资的各种条件进行信息检索。
2)事件与物资管理。建立物资与突发事件的对应关系,可以查看到历史上各事件所用物资的种类、数量等信息,对物资调配人员在处理突发事件时,提供历史数据的参考。
3)仓库物资管理。该机能主要实现对储备物资和仓库进行管理,实现对仓库、物资的增加、修改、删除。
4)生产企业及生产能力管理。对物资的生产企业的生产能力、企业产品的平均库存情况进行监督管理,以便在灾害事件发生时,可以迅速组织生产,保证储备物资不够时的物资的供应。通过对应急物资生产能力企业信息的管理和监测,形成物资生产能力储备。具体包括企业的现有生产能力、月存储能力等基本信息。
5)物流企业管理。对运输企业的物资运输能力等进行全面把握,详细记录物流运输企业的资产规模、营业状况等信息。在灾害发生时,可以很快地与相关运输单位取得联系,实现快速地组织运输物资队伍。
在物资调度管理系统中,涉及物资的生产、存储、运输和使用。主要涉及的对象是生产企业、存储物资的仓库、物资、事件、物流企业。这些对象及对象之间的关系,无外乎是增加、删除、修改、查寻操作。
在这个系统中,物资的存储及流通产生大量的数据,为了达到高存储、高并发的处理要求,我们在设计物资调度系统数据库时,采用了支持高并发读写性能、具有庞大的水平扩展性的HBase列存储数据库。虽然HBase数据库不支持表的连接操作,但这个缺陷可以在业务层编码实现。物资调度系统的E-R图如图1所示。
图1 物资调度系统E-R图Fig.1 E-R diagram of the material dispatching system
由于NoSQL数据库没有连接操作,当对多个表进行连接操作时,需要在程序中分别查询这多个表,再实现连接,某些简单的连接操作可以在一个表中表现出来。根据E-R图,设计的HBase数据库[9-10]在物资调度中的方案如表1~5所示。
表1 事件信息表Tab.1 Event information
通过事件表,我们能够对事件进行增、删、改、查的管理。结合仓库表和物资表,对事件分配相关物资进行管理;与物流企业表结合,还能调拨相应的运输力量。
表2 物资信息表Tab.2 Material information
表3 仓库信息表Tab.3 Warehouse information
表4 生产企业信息表Tab.4 Manufacturer information
根据物资信息表,可以实现对物资的基本信息增、删、改、查的管理。查询物资所存储的仓库及生产企业等信息。
通过此表可实现对仓库基本信息的增、删、改、查操作。联合物资信息表,实现对存储在该仓库的各种物资的增、删、改、查。
由于企业的各种类型产品的单价、月存储能力、年生产能力的变化不频繁,将这3种组合在一起,实现了对企业生产的物资信息的存储。通过生产企业表,实现对生产企业的基本信息增、删、改、查,及对生产企业的生产的物资产品的单价、月存储能力、年生产能力的管理。
根据此表实现对物流企业信息的全面把握及对物流企业信息的管理。
通过分析NoSQL数据库的特性及相关HBase数据库的信息,并参照物资调度管理系统的需求,设计出了一套在HBase数据库中存储物资调度系统数据的表的结构方案。这个方案还有不足之处,如对3个及以上的字段的连接放在同一个单元里用字符分隔显得不太合理,尤其存储的是频繁修改的数据,这方面还有待进一步研究。
表5 物流企业信息表Tab.5 Logistics enterprise information
[1]James Zhang.美国亚马逊公司企业数据收集报告.[EB/OL](2012-10-30)http://www.docin.com/p-245031314.html.
[2]中国电子商务研究中心.Face book主要数据业务盘点分析[EB/OL]. (2012-10-30).http://b2b.toocle.com/detail--6042581.html.
[3]赛迪网.You Tube网站1万亿播放次数带动广告业务的增长 [EB/OL](2012-10-30).http://it.people.com.cn/h/2011/1225/c227888-3714244520.html.
[4]ADAM WIGGINS.SQL Databases Don't Scale[EB/OL](2012-10-30).http://adam.heroku.com/past/2009/7/6/sql_databases_dont_scale/.
[5]百度百科.NoSQL[EB/OL](2012-10-30).http://baike.baidu.com/view/2677528.htm.
[6]陆嘉恒.Hadoop实战[M].北京:机械工业出版社,2011.
[7]Wbite T.Hadoop权威指南[M].周敏奇,王晓玲,金澈清,等译.北京:清华大学出版社,2011.
[8]开源中国社区.分布式数据库HBase[EB/OL](2012-10-30).http://www.oschina.net/p/hbase.