唐洪奎,张 程,刘 骥
(重庆大学计算机学院,重庆 400044)
基于NoSQL的物联网数据本体模型存储技术研究与实现
唐洪奎,张 程,刘 骥
(重庆大学计算机学院,重庆 400044)
随着信息技术的发展,物联网为实现万物互联互通孕育而生。数据存储是物联网重要部分,但是物联网数据具有海量、异构、复杂多变的特点。本文根据物联网数据的特点,提出一种基于NoSQL数据库和本体概念模型的物联网中间数据存储模型,提出物联网数据存储的方案,解决了物联网海量异构数据存储的问题,并使用tDB数据库验证该方案在物联网存储方面的高效性。
物联网;本体存储模型;NoSQL数据库
1995年,比尔盖茨提出“物联网”的概念,之后麻省理工大学自动识别中心将物联网定义为:把所有物品通过射频识别等信息传感设备与互联网连接起来,实现智能化识别和管理[1]。2005年,国际电信联盟发布《The Internet of things》年度报告,扩展了“物联网”的概念,认为物联网涵盖任何时刻、任何地点、任何物体之间互联,无处不在的网络、无处不在的计算[2]。随着科学技术和社会的发展,物理网已经成为了学术界和工业界关注的焦点,不同国家或地区都提出了物联网战略,比如欧洲的“e-Europe”[3]、美国的“智慧地球”,以及中国的“感知中国”[4]。
物联网的体系结构可以分成感知层、网络层、数据层以及应用层四个层次:感知层从环境中感知到物理状态,在经过网络层将数据传输到数据层,数据层由存储节点组成,存储节点中的数据可供应用层使用,比如数据挖掘、实时交通分析等等[5],如图1所示。其中数据层保存感知的物理状态,同时为应用层提供数据支持,所以物联网的核心功能之一就是存储感知到的数据,以一定的形式将数据保存在存储介质当中,这也就是数据层要完成的功能。
本文尝试对物联网体系结构中较低层次存储节点的存储模型进行研究,并根据物联网的特点提出存储模型方案。
图1 物联网架构Fig.1 the Architecture of IoT
1.1 海量数据存储模型
基于不同的思路和技术,比如文件系统、数据库等,可以构建出不同的物联网存储模型。
从文件系统的角度出发,面对物联网海量数据的存储与管理,大部分研究者关注到文件存储系统的研究,这种文件系统建立在节点的本地文件系统上,通过网络将多个节点相连,同时通过管理节点关联和协调多个节点的访问、控制、管理,提供多用户文件访问,可以解决I/O瓶颈和系统扩展问题[5]。早期文件系统运用比较简单的实现的存储方案,如:用XML存储数据为嵌入式设备提供Web服务[6];数据存储在PML中,作为物联网的数据服务器[7]。随着技术的发展,出现了分布式文件系统的存储方案,如:Lustre[8],GFS[9]以及HDFS[10]。
但是,使用文件系统进行存储的缺陷是:文件结构与应用的耦合性太强,实现数据共享比较困难;数据冗余大,数据出现不一致;对于物联网的大量数据,文件系统无法提供多维度的数据检索功能;面对实时的数据流处理能力差。所以,基于文件系统的存储方案无法胜任储存物联网海量数据的任务。
除文件系统外,也有研究者从数据库技术的角度看待物联网的存储问题。根据存储模型的不同,可以将数据库分为:关系型数据库和非关系型数据库。
关系数据库技术已经非常成熟,许多物联网的存储也采用关系数据库作为解决方案。但是将关系数据库模型直接应用到解决物联网存储的问题,很难物联网功能的需求。主要原因在于,关系数据库本身设计是针对实务型的数据处理,在关系模型当中,一但数据库模型构建完成,生成数据库实例后,数据对象、数据对象(数据库表)之间的关系也就固定,在数据库实例运行期间,只存在表记录数量的变化、对象间确定关系数量的变化、表单元内容“值”的变化,而数据的类型结构、类型关系固定,无法满足物联网海量数据类型异构多样、动态变化的特点。
在非关系型数据库方面,一些新的数据库技术的得到关注,尤其是NoSQL技术[11]。NoSQL技术可分为四类:(1)键值型(Key-Value),通过构建索引,值通过一个唯一键进行索引;(2)文档型(Document),Key-Value存储到文档中,比如 json文档;(3)列式(Column Family),存储的数据以列为单位;(4)图式(Graph),利用图论构建Key-Value关系,适用于关系复杂的数据管理。由于 NoSQL技术有性能、扩展性方面的优势,已经在大数据处理方面有较为成功的应用。当前,较为流行的开源NoSQL 数据库有 MongoDB[12]、CouchDB[13]、HBase[14]、Redis以及 Cassandra[15]等,应用较广的非开源数据库有Google的Bigtable[16]以及亚马逊的Dynamo[17]等。
也有研究者将上述两种技术思路结合起来,发挥两者的优点,弥补缺点,称为混合技术[18-19],但是两种技术结合必然增加额外的开销,影响到存储系统的性能。
1.2 本体技术
“本体”(Ontology)一词很早就有人提出,许多哲学家都探讨过本体的概念。哲学意义上讲,本体研究的主题是“什么是存在、什么是永恒、什么是不变”,但是不同学派持有不同观点,对于“本体”概念内涵的解读也不尽相同。对于计算机技术而言,“计算”含义可以看成是一种思维过程,而思维过程依赖于概念之间的关系,利用唯心主义学派“本体”的观点,将“本体”概念引入计算机理论。但区别于哲学研究,计算机研究提出符合技术要求的“本体”定义。
人工智能领域,Neches等人定义本体为“给出相关领域词汇的基本术语和关系,以及利用这些术语和关系构成规定这些词汇外延的规则的定义”[20]。1993年,Gruber定义本体为“本体是概念模型的明确规范说明”。Brost定义本体为“本体是共享概念的形式化规范说明”。Studer认为“本体是共享概念模型的明确的形式化规范说明”。可以看出“本体”有4层含义:概念模型、明确、形式化和共享[21]。
当前已研究者提出了许多基于“本体”概念的存储模型,如论文[22]介绍的 Sesame模型[22]。与NoSQL相似,本体存储管理系统根据存储介质可以分为三种:(1)基于主存,在内存中按照某种结构进行组织,并在内存中进行数据储存、数据操作,如OWLim[23]、OWLJessKB[24];(2)基于文件系统,用文件存储和管理数据,如简单的 XML文件,相对比较复杂的有Kowari[25];(3)基于关系数据库,利用成熟的关系数据库技术实现数据类型的维系、类型之间的关系、数据的储存,如Rstar[22],Jena[22]。
NoSQL技术和本体技术有一定的相似性,可将两种理念结合起来。面对物联网海量复杂多变的数据类型,尽量体现NoSQL技术和本体技术的优势,满足物联网的数据存储需求。
2.1 模型设计
本文尝试利用本体技术构建概念模型,实现明确、共享的功能,对存储的物联网数据类型进行本体的概念描述,一方面可以维系复杂多变的非结构化数据类型,另一方面可以提出类型数据实例的合法性监测,并结合大数据NoSQL数据库特点,提出了满足大数据等应用需求的物联网的本体描述及存储模型。
该存储模型中的基础记录单元定义为 SampleElement:
SampleElement=
在SampleElemet中,key∈Char,是value的名称;value∈Char∪Number,用于存储值,例如:
图2表示存储系统的记录模型,在该存储系统中,记录所收到的数据按照Record的格式进行存储。Record是基本存储单元,Record主要包括两部分内容:解析数据的概念模型和数据实例部分,数据实例部分又分静态和动态两部分数据。Record记录中的rID唯一标识当前记录,ClassID指向的是这条记录的概念模型,sID指向当前记录的数据实例的静态部分,例如存储移动设备的名称、厂商、物品码等信息,InstID 指向的是数据实例的动态部分,Location标识的是当前这条记录采集时设备的物理位置,RecordTime标识的是当前这条记录发生时的时间。
实例数据的静态部分,存储不经常改变的数据,通常是人为设定的一些数据,比如设备名称、厂商、物品码等信息,这些数据,物联网设备一旦使用,基本就已经确定。静态部分中,ID唯一标识该条记录,Len表示这条记录的长度,tID表示物品码等信息,sV1,sV2表示更多的静态信息,其以 NoSQL Key-Value的形式存储。
实例数据的动态部分,储存经常在更新的数据,比如温度,湿度等等会随着环境改变有着剧烈变化的数据,这些数据一般都是物联网设备从环境中测量采用出来的,其大小多少由环境来决定。在动态部分中,ID唯一标识一条动态数据记录,Len表示数据记录的长度,V1,V2,……表示存储的动态数据,其以NoSQL Key-Value的形式存储。
其中实体数据中的数据采用之前定义的SampleElement结构进行保存,比如一个数据实例的动态部分可以表达为{ID:”1”,Len:”3”,field:”trafic”,temperature:50,context:”None”}.
基本单元中的 ClassID指向一个基于本体理念设计的一个结构,用于维护数据模式的概念模型,包括概念(也就是类)与属性之间的关系、概念和概念之间的关系,还包括对于类属性的描述。概念模型图如图3所示。
图2 存储模型Fig.2 the Storage Model
图3 本体概念模型Fig.3 the Ontology Conceptual Model
类在概念模型中表达基本的概念,ID用于唯一标识一个概念,Name表明类的名字;范畴属性表达的是模型中的最基本类型,如整数类型、浮点数类型、字符类型等等,因为是基本类型,所以命名为“范畴属性”;域、类属性表用于将类与范畴属性进行关联,关联则意味着类所代表的概念下蕴含范畴属性表达的性质,域、类属性表的省略号可以是当前这个类属性的一些描述,比如值的范围等等;类关系表表达的是类之间的关系,也就概念之间的关系,比如继承关系(蕴含关系),又比如面向对象里提到的“有”关系也可表达,Type标定关系的类型,IDsup和IDsub分别表示两个类的ID指向类表。
我们将本体技术和NoSQL技术结合起来,本体技术可用于维护数据类型的结构,并且可以根据需要发生改变,这一点主要是用于满足物联网数据存储的异构性,并且理由概念模型,我们也可进行对数据类型的合法性进行检查。
为了更加高效的实现检索功能,使用B+树等数据结构构建索引,使用哈希表等数据结构完成检索过程当中涉及到的集合运算,从而提高查询性能。
2.2 模型举例
现在以重庆电网某变电站的实时监控系统来具体说明存储模型的存储方案。
在一个变电站中,有交流线路、变压器、母线等设备。其相关信息如下:
(1)交流线路的属性有:设备状态、线路基本名称、设备类型、设备子类、链接场站 1、链接开关1、链接间隔1、链接场站2、链接开关2、链接间隔 2、电压等级、全路径名称、资产单位、运维单位等等。
(2)变压器的属性有:设备状态、所属厂站命名、设备类型、设备子类、变压器编号、电压等级、全路径名称、设备名等等称、资产单位、所属间隔、运维单位、所属调度机构等等。
(3)母线的属性有:所属厂站命名、设备类型、设备子类、母线编号、电压等级、全路径名称、设备名称、设备间隔、资产单位、运维单位。
以上属性是对象实例数据中的静态部分,这些数据反映为管理变电站而人为的设定的信息,比如配置信息、命名信息、组织信息等等。
同时,在该电力系统中这些设备还存在大量实时动态信息,用于反映环境的变化,比如设备的有功功率、无功功率,变电器开关的实时电压,监测设备测量的变压器放电次数(每分钟)、放电幅值等。
下文以有功功率、无功功率为例说明本文提出的模型与关系数据库存储方案的区别。
2.2.1 关系数据库的存储方案
根据关系数据库的特点和模型要求,针对设备有功功率、无功功率的关系数据库存储模式如下:
图4 关系型数据表模式Fig.4 the Pattern of Relational Data Table
其中 Ouur_time表明记录的时间,Cur_01、Cur_02、……、Cur_99、Cur_100记录有功功率和无功功率,具体记录的是哪个设备的有功功率和无功功率,用另外一张数据表表达,如图5所示:
图5 设备属性关联表Fig.5 the Table of Device Attribute Association
上图中,Cur_01Cur_02分别表达设备1的有功功率和无功功率,Cur_03Cur_04分别表达设备 2的有功功率和无功功率,以此类推。
根据以上设计,存储动态实时数据表最多可以记录50个设备的有功功率和无功功率,当设备少于50个设备时,会出现存储空间的浪费;当设备大于50个设备时,需要重新建表,并且维护表之间的关系,增加了管理和复杂程度,同时,也增加了计算负担。
2.2.2 基于NoSQL与本体的存储方案
采用本文提出的存储模型,可以对以上问题进行改进,从而使得存储模型更好适应物联网的数据特点和物联网应用的需要。
首先是对变电站中设备之间在组织关系的表达,使用本体概念模型来表达设备之间的关系,图6所示。
图6 该变电站本体概念模型实例Fig.6 the Ontology Conceptual Model Instance of this Transformer Substation
图6所示实例存储是变电站概念与变电站下属设备概念之间的关系:类表中有变电站、变压器、母线、交流线路概念;范畴属性表中描述了整数(Int)、单精度浮点数(Float)、双精度浮点数(Double)、字符串(String)等等基本类型;类关系表中表达概念之间的关系,如第一条记录(1,2,have,...)表示,变电站概念包括变压器的概念(have关系),其他以此类推;类属性表关联概念与属性,比如第一条记录(2,4,’设备状态’,’静’,...)将变电站概念与范畴属性String关联,并且命名属性名设备状态,”静”指明此属性为静态属性,其值存储在实例数据的静态部分,又例如记录(2,2,’有功功率’,’动’,...)将变电站概念与范畴属性Float关联,属性名为有功功率,为动态属性,其内容将存储在实例数据的动态部分,其他以此类推。
概念的本体模型表达清楚后,变电站物联网设备数据实例的存储如图7。
如图7中所示,Records记录了4条记录,以第一条为例,sID为1,指向实例数据的静态部分,可知该设备所示变电站为敖山站,ClassID为2,指向本体概念模型中变压器概念的ID,可知此条记录的设备为变压器,InstID为100,指向实例数据的动态部分,Location为(106.46183,29.41379),表明该变压器的经纬度,RecordTime为’2016/10/1012:20: 18’,表明该数据产生时间。实例数据(静态部分)第一条记录数据长度为 254,tID类型为 1,其后Shebeizhuangtai:’启用’、Suoshuchangzhan:’敖山站’、Shebeileixing:’变压器’等等,以 Key-Value键值对的方式存储。同理,实例数据(动态部分)第一条记录数据长度 38,YouGong_Power:100.1、WuGong_Power:21.4,同样也是以Key-Value形式记录有功功率和无功功率,其值分别为100.1、21.4。
图7 该变电站存储实例Fig.7 the Storage Instance of this Transformer Substation
其他记录以此类推。
3.1 实验背景描述
为验证本方案,本文采用了重庆电网某变电站的 2015年所有设备的累积数据,并使用 Oracle数据库按照3.2.1的传统方式加以存储;另外,作者按照本文提出的存储模型开发了一个简单的存储系统tDB(Windows,vs2010,C++开发),用于相同数据的存储,并通过实验加以对比验证。
该变电站累积数据的数据量为9567996条。我们将数据按照200万、400万、600万、800万的规格导入到关系型数据库(Oracle)和tDB中,比较在不同规模数据的情况下单条记录数据的平均查找时间,同时也比较计算所有设备全年每条功率因数所消耗的时间。
3.2 实验结果与分析
3.2.1 查询时间对比
图8展示了查询实验结果,水平坐标是实验的数据量大小,竖直方向代表多次单条记录查询平均时间,蓝色线条是Oracle的实验结果,红色线条是tDB的实验结果。随着数据量的增加,两条查询所需要平均时间逐渐增加,同时斜率逐渐增大,说明系统所消耗的时间有所增加。从两条线的对比来看,在数据规模较小时,Oracle数据库的时间优于 tDB数据,但随着数据量的增加,tDB的优势逐渐体现出来,说明基于NoSQL技术和本体理念的tDB数据库在应对物联网海量异构多变的数据存储方面有优势。3.2.2 功率因素计算
图8 平均查询时间对比Fig.8 the Comparison of Average Query Time
在电力系统当中,功率因数是用来衡量用电设备或电力输出设备的用电或是传输效率的数据。功率因数定义为:
其中,P是有功功率是设备消耗了的,转换为其他能量的功率;K是无功功率,是维持设备运转,但是并不消耗的能量。
图9展示了功率因数实验结果,水平坐标是实验的数据量大小,竖直方向代表计算所有功率因数所消耗的时间,蓝色线条是Oracle的实验结果,红色线条是tDB的实验结果。随着数据量的增加,计算所需要的系统耗时逐渐增加,但是基于 NoSQL和本体概念模型的tBD系统计算耗时优于同等数量级别的Oracle的耗时时间,可见基于NoSQL和本体概念存储模型针对物联网的大数据应用有较好的支持,在计算性上优于关系型数据库。
图9 功率因数计算时间对比Fig.9 the Comparison of Power Factor Computation Time
面对大物联网海量类型异构多变的数据的存储需求,本文提出了基于NoSQL技术和技术的存储模型,NoSQL技术用于应对半结构、非结构的异构数据,本体概念模型用于维系异构多变数据类型间的关系,使NoSQL技术面对异构数据时,有本可依,提高了数据的安全性,两者相辅相成。根据本文提出的存储模型开发的tDB系统验证了,在面对海量异构数据时,本文提出的存储模型方案优于关系数据库。未来,基于本文思路,可开发分布式的物联网存储系统。
[1]AutoID Labs homepage.http://www.autoidlabs.org/.
[2]International Telecommunication Union,Internet Reports-2005: The Internet of thing[R].Geneva: ITU, 2005.
[3]Commission of the European communities, COM (2009)278 final.Internet of things-an action plan for Europe, Brussels[J].(2009-06-18)[2010-05-12].http://ec.europa.eu/information_ society/policy/rfid/documents/commiot2009.Pdf.
[4]温家宝.2010年政府工作报.(2010-03-15)[2010-05-12].http://www.gov.cn/2010lh/content_1555767.Htm.
[5]田野, 袁博, 李廷力.物联网海量异构数据存储与共享策略研究[J].电子学报, 2016(2): 247-257.
[6]CASTELLANI A P, GHEDA M, BUI N, et al.Web services for the Internet of things through CoAP and EXI[C]/ /Proc of IEEE International Conference on Communications.2011: 1-6.
[7]李再进, 谢勇, 邬方, 等.物联网中PML服务器的设计和实现[J].物流技术, 2004(11): 80-83.
[8]Lustre (file system) [EB/OL].http: //en.wikipedia.org/wiki/ Lustre_(file_system).
[9]GHEMAWAT S, GOBIOFF H,LEUNG S The Google file system[C].//Proc of the 19th ACM Symposium on Operating Systems Principles.New York: ACM Press, 2003: 29-43.
[10]Hadoop.HDFS architecture guide[EB/OL].http://hadoop.apache.org/docs/r1.0.4/hdfs_design.html.
[11]HAN Jing, HAIHONG E, LE Guan, et al.Survey on NoSQL database[C].//Proc of the 6th International Conference on Pervasive Computing and Applications.2011: 363-366.
[12]MogoDB Inc.MongoDB[EB/OL].http://www.mongodb.org/.
[13]Apache Software Foundation.Apache CouchDB[EB/OL].http://couchdb.apache.org/.
[14]Apache Software Foudation.Apache HBase[EB/OL]http: //hbase.apache.org/.
[15]Apache Software Foundation.Apache Cassandra[EB/OL].http://cassandra.apache.org/.
[16]CHANG F, DEAN J, GHEMAWAT S, et al.Bigtable: a distributed storage system for structured data[C]//Proc of the 7th USENIX Symposiumon Operationg Systems Design and Implementation.2006: 1-11.
[17]DeCANDIA G, HASTORUN D, JAMPANI M, et al.Dynamo: Amazon’shighly available key-value store[C]//Proc of the 21st ACM Symposium on Operating Systems Principles.New York: ACM Press, 2007: 205-220.
[18]Zhang Guigang, Li Chao, Zhang Yong, et al.SemanMedical: a kind of semantic medical monitoring system model based on the IoT sensors[C].Proceedings of the IEEE 14th International Conference on e-Health Networking, Applications and Services.USA: IEEE, 2012.238-243.
[19]A M Marìa, H L Sergio, S Abel, et al.A comparative study of data storage and processing architectures for the smart grid[A].Proceedings of the First IEEE International Conference on Smart Grid Communications[C].USA: IEEE, 2010.285-290.
[20]Neches R, Frikes R E, Gruber T R, et al.Enabling Technology for Knowledge Sharing.AI Magazine, 1991, 12(3): 36-56.
[21]Studer R, Benjiamins VR, Fensel D.Knowledge Enineering, Principles and Methods.Data and Knowledge Engineering, 1988, 25(1-2), 161-197.
[22]鲍文, 李冠宇.本体存储技术研究[J].计算机技术与发展, 2008(10), 147-150.
[23]Lukac R.Adaptive vector median filtering[M].Pattern Recognition Letters, 2003, 24(12): 1889-1899.
[24]曲延锋.有效去除图像中脉冲噪声的新型滤波算法[J].计算机辅助设计与图形学学报, 2003, 15(4): 397-401.
[25]章毓晋.图像工程(上册)[M].北京: 清华大学出版社, 2002.
Research and Implementation of Ontology Storage Model for Internet of Things Based on NoSQL
TANG Hong-kui1, ZHANG Cheng, LIU Ji
(School of computer science, Chongqing University, ChongQing 40044)
With the development of Information Technology, Internet of things(IoT) emerges for the requirements of connecting all things.Data storage is an important part of the Internet of things, but the data of the Internet of things has the characteristics of massive, heterogeneous and complex compared with the traditional IT system.According to the characteristics of IoT data.This paper presents a network intermediate data storage model based on NoSQL database and Ontology Conceptual Model.This paper solved massive and heterogeneous data storage problem of IoT, and use the tDB database to verify the high-efficiency of the storage model in IoT.
Internet of things; Ontology Storage Model; NoSQL database
TP311.131
A
10.3969/j.issn.1003-6970.2017.03.006
国家自然科学基金(61502060)
唐洪奎(1988-),男,重庆大学计算机学院研究生,主要研究方向为物联网数据存储。
张程,副教授,主要研究方向为移动智能,无线传感器网络。
本文著录格式:唐洪奎,张程,刘骥.基于NoSQL的物联网数据本体模型存储技术研究与实现[J].软件,2017,38(3):27-33