1 前言 NoSQL数据库是非关系型数据库的统称。随着互联网技术地兴起,传统关系型数据库在应对超大规模海量数据和高并发的网络环境方面已明显力不从心,并且暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改变这一现状。目前Google的BigTable和Amazon的Dynamo使用的就是NoSQL型数据库。
1 前言
NoSQL数据库是非关系型数据库的统称。随着互联网技术地兴起,传统关系型数据库在应对超大规模海量数据和高并发的网络环境方面已明显力不从心,并且暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而NoSQL致力于改变这一现状。目前Google的BigTable和Amazon的Dynamo使用的就是NoSQL型数据库。
在大型公共建筑领域,能耗监测系统具有数据量大、终端设备多、动态配置灵活、读写一致性要求低的特点。传统的关系型数据库优势和特点在该系统中无法得到有效利用。
2 NoSQL数据库的优势
2.1 高性能读写支持
一般的关系数据库可应对上万次SQL查询,但是上万次SQL写数据请求,硬盘读写已经无法支撑。对于数据的随机访问,内存的速度比硬盘高几个数量级(即使是最高端的磁盘存储系统也只是勉强达到1,000次寻道/秒);其次,随着数据中心的网络速度提高,访问内存的成本更进一步降低。通过网络访问另一台机器的内存比访问硬盘成本更低。以1G Hz CPU的个人计算机各项操作时间如下表所示。
在本质上,在NoSQL数据库的MapReduce工作方式中,数据流式地读出和写入硬盘,MapReduce是以硬盘的传输速率不断地对这些数据进行排序和合并。与之相比,访问关系数据库中的数据,其速率则是硬盘的寻道速率(寻道指移动磁头到盘面上的指定位置读取或写入数据的过程)。随着技术的进步数据传输率已明显高于寻道速率。因此,采用由数据传输率决定性能的模型是有利的,MapReduce正是如此。
2.2 海量数据支持
能耗监测系统中涉及电、水、燃气、耗热、耗冷、煤、油、可再生能源等多种能耗数据的管理,用电能耗还需要进行分项管理。有的能耗监测系统还需要整合配电监控系统,对于大型公共建筑来说,数据量非常巨大。
对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。在传统关系数据库系统中往往采用分库、分表的策略进行数据存储,这种方式使得单表的查询效率得到提高。然而在能耗监测系统中往往需要对全局数据进行综合统计查询,往往涉及到几十上百个表,查询效率无法保证。
NoSQL数据库采用“键-值”对的方式对数据进行存储,不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。
2.3 高可扩展性
能耗监测系统的数据量和访问量增长到一定程度,往往需要对数据库进行横向扩展和升级。如果采用传统的关系型数据库,要实现横向扩展必须要停机并进行数据迁移。能耗监测系统中的数据采集层往往与数据采集器、通讯管理机、远程终端设备等多种终端进行连接,很多数据需要实时采集和存储。因此能耗监测系统是不允许长时间停机的,而NoSQL数据库通常采用分布式设计,可以通过不断增加数据库服务器节点的方式来实现扩展。
3 NoSQL数据库的使用
目前,主流的NoSQL型数据库包括MongoDB、Hadoop&HBase、CouchDB、Neo4j、Cassandra等,主文将采用MongoDB数据库介绍NoSQL数据库的设计策略。MongoDB采用面向文档、无模式的存储解决方案,它用JSON风格的文档展现、查询、修改数据。
(1)NoSQL数据库设计策略
MongoDB采用无模式的设计策略,因此可以针对能耗监测系统的数据组成特点灵活地设计。能耗监测系统中的数据主要包括遥测、遥信、遥脉三种类型。以上三种数据均是按照时间序列进行存储的,因此可以将时间标签定义为索引,以提升查询性能。遥测和遥信数据通常为模拟量和开关量,储存方式比较简单。遥脉数据通常为能耗数据,需要按照能耗分类分项、建筑类型等多种复杂属性进行存储,最终还要按照年、月、日不同的时间单位进行统计分析。
MongoDB采用文档的方式进行数据存储,因此可以将能耗数据以天为单位将一天的数据存储到一个文档中,这很类似于关系数据库中的按天分表。相对于单个数据存储到一个文档中的设计,采用这种组合式的大文档存储方式性能得到了明显的提升。原因是组合式的存储在读取数据的时候,可以读取更少的文档数量。
(2)NoSQL数据库查询策略
能耗监测系统需要对能耗数据进行大量的统计分析,其中涉及到了类型关系型数据库中的聚合查询。在MongoDB中可用采用MapReduce查询来实现类型的功能。MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。这样做的好处是可以在任务被分解后,通过大量机器进行并行计算,减少整个操作的时间。采用MapReduce查询可以快速实现多种能耗分类分项的日、月、年统计数据分析。
4 结束语
本文结合大型公共建筑能耗监测系统软件的实际应用环境,为解决海量数据存储问题,分析了采用NoSQL型数据的可行性,并介绍了NoSQL型数据库在能耗监测系统中使用的基本策略。实践证明,经过近一年的测试运行,NoSQL型数据库适用于大型公共建筑能耗监测系统,可以应对其数据量大、终端设备多、动态配置灵活、数据处理复杂的特殊需求。