专利名称::一种物联网中分布式数据存储和查询的方法
技术领域:
:本发明涉及物联网中的数据存储和查询的方法,具体涉及一种物联网中分布式数据存储和查询的方法及系统。
背景技术:
:物联网(InternetofThings)的提出发展了原有的传感网、RFID等技术。原有的传感器网络作为物联网的组成部分被包含进来。物联网发展的一个重要目标是打破原来传感器网络的垂直应用方式,即不同的应用需要建设自己的传感器网络设施,应用之间不能共享资源,这种方式造成了极大的网络资源浪费。人们设想物联网是一个巨大的信息生产工场,物联网产生的数据将应用到各行各业。物联网需要建立共性的管理平台,使得不同的上层应用能够共享下层的传感器网络及其产生的数据。现存的网络应用以互联网应用为主,互联网是现存的最大的网络,各种应用在互联网中展开。要使得传感器网络能够更好的为各种应用服务,就要使传感器网络接入互联网,传感器网络的数据能够为在互联网上开展的应用所访问、共享。物联网要实现对物理世界的信息的收集、存储和查询。在现有的传感器网络中,传感器采集到数据后,对数据的存储主要包括三种方法本地存储、以数据为中心的存储和网外存储。其中,本发明基于网外存储。现有技术的网外存储是指传感器将产生的数据发送到sink节点,该sink节点是一个物联网接入网关节点,将数据存储在网络外部。对于频繁访问的数据外部存储的方式很适用。基于以上分析现有技术对无线传感器网络的外部存储研究,仅仅停留在传感器将采集到的数据发送给sink节点,也就是网关节点,而有关这些采集的数据如何在现有的外部网络中进行高效存储的问题并未涉及。这是在传感器网络发展初期,传感器网络用于满足不同的应用它们彼此之间没有联网的必要,而在单个传感器网络中数据量相对是比较小的,但是进入物联网阶段后,很多的传感器网络都需要通过互联网进行互联,在这种情况下众多的传感器网络所产生的数据将是海量的。因此目前迫切需要提供一种能在互联网网络中存储传感器网络生成的大量数据的问题,其中DHT(distributedhashtable,分布式哈希表)是现有的互联网上的一种分布式的数据存储方法,适合海量数据的分布式存储和查询,但是如何将其应用于现有的物联网中进行数据存储并未见过任何相关记载。同时现有的DHT系统对存储的数据不做时效性的区分,而物联网中所产生的数据是应用相关的,不同的数据具有不同的时效性。现有技术有关典型的物联网网络分层结构如图I所示,共分五层,从下往上依次为感知层、接入层、网络层、支撑层、应用层。感知层有各种底层设备和网络,包括传感器网络、RFID、执行器等。在感知层,传感器通过传感网协议组成网络,收集物理世界的信息。感知层的各种设备和网络通过多种接入技术接入互联网,所使用的接入方式包括3G/4G、Mesh网络、WiFi、有线或者卫星等。网络层为互联网,网络层的功能包括信息的远距离传输,跨区域信息的承载和共享。支撑层又称中间介,或者业务层,该层主要完成三部分功能对下需要对网络资源进行认知,对网络资源进行优化;完成信息的共享存储、表达与处理,最终达到信息共享的目的;对上提供业务接口与支撑,方便上层业务的开发。应用层上是基于业务支撑层提供的业务能力所开发的各种应用,像智能建筑、智能交通、智能家居、环境监测、远程医疗、农产品溯源等。
发明内容本发明的目的在于,为克服在物联网包含的感知层产生数据如何在支撑层高效存储的问题以便物联网的上层的各种应用需要对传感器产生的数据能够方便的共享,同时为克服现有技术的分布式存储网络本身在存储物联网感知层产生的数据的时存在的技术缺陷问题,本发明提供一种物联网中分布式数据存储和查询的方法及系统。为实现上述发明目的,本发明提供一种物联网中分布式数据存储和查询的方法,该方法用于将物联网下层若干个底层感知网络采集的数据在上层的若干区域服务器之间实现分布式存储,包含数据存储的步骤,所述底层网络采集的数据在底层网络内部以其内部的协议进行传输,传输到接入网关,经由接入网关接入部署在互联网上的区域服务器,所述采集的数据在区域服务器组成的网络中进行存储;数据查询和读取的步骤,上层应用需要底层网络采集的数据时,通过任意一个区域服务器查询数据名所映射的存储节点的IP,从该IP的节点上获得所需的传感器数据;其中,所述区域服务器采用分布式组网,且所述的区域服务器将所述采集数据分为实时数据和非实时数据在所述区域服务器上进行存储;对每一次存储按功能将区域服务器划分为接入区域服务器和存储区域服务器,所述接入区域服务器为通过网关接受底层待存储数据的区域服务器,所述存储区域服务器为确定的存储节点。上述技术方案中,所述分布式组网采用分布式哈希表进行组网,所述底层网络为无线传感器网络。所述数据存储步骤为步骤101,底层的感知网络采集到数据后,传输到接入网关,经由网关发往区域服务器,由区域服务器中的网关数据接口接收网关发来的传感器数据;步骤102,所述接入区域服务器确定存储区域服务器,并将待存储数据发往确定的存储区域服务器;步骤103,存储区域服务器存储接入服务器发来的数据。所述步骤102的确定存储节点步骤为接入区域服务器查询是否有该数据名的映射信息的有效缓存,如果有则将采集的数据发往存储节点进行存储;如果没有该数据名的映射信息的有效缓存则进入下一步骤;所述接入区域服务器采用其包含的分布式哈希表组网模块查询数据名映射到的存储节点,将采集的数据存储到查询得到的存储节点上。其中,所述数据名可以是传感器的ID属性,传感器检测的事件名属性。作为本发明的一个改进,所述步骤102之前还包含接入区域服务器对待存储采集数据进行时效性标志的步骤。所述步骤103的具体步骤为存储在本节点的数据进行时效性检查,如果这些采集的数据为非实时数据则直接在该存储区域服务器上进行存储;如果采集数据为实时数据,检测这些待存储的实时数据时效性是否过期,如果时效性过期不对这些数据进行存储;如果没有过期在该区域服务器上存储。基于上述方式,本发明还提供一种物联网中分布式数据存储和查询的系统,该系统基于物联网,其特征在于,所述系统还包含若干区域服务器,该区域服务器与物联网上层应用相连同时与物联网包含的接入网络相连,用于接收并存储物联网底层网络采集的数据;其中,所述若干区域服务器采用分布式哈希表组网。上述技术方案所述的系统中所述底层网络为传感器网络;所述区域服务器进一步包含DHT模块,用于区域服务器之间的组网以及从传感器数据名到存储传感器数据的区域服务器节点的映射;数据时效性区分模块,用于将底层采集的数据分为实时数据和非实时数据;和数据库模块,负责存储传感器数据。所述区域服务器还包含一缓存模块,用于缓存从DHT模块上查询的传感器数据名到存储传感器数据的存储节点的映射信息;应用接口模块,用于和上层的应用通信;网关接口模块,用于与下层的接入网关对接。本发明的优点在于首先,设计了一种物联网海量数据分布式存储的系统,解决了物联网底层数据在互联网高效存储的问题,方便不同应有对数据的共享问题;此外还改进了现有的分布式存储系统不能根据物联网底层数据的应用的类型对数据的时效性进行区分,针对数据的时效性对现有DHT的存储方法进行了改进,使得DHT能够对不同时效性的数据实施不同的存储策略,针对产生的大量数据有效的节省了存储空间同时不降低数据查询读取的高效性。图I是本发明的物联网组网方式示意图;图2是本发明的物联网中分布式数据存储和查询的系统的组成框图;图3是本发明的物联网中分布式数据存储和查询的系统包含的区域服务器的组成框图;图4_a是本发明的物联网中分布式数据存储方法的流程图;图4_b是本发明的物联网中分布式数据查询方法的流程图;图5_a是本发明的物联网中分布式数据存储和查询的当接入区域服务器包含时效性区分的数据存储的流程图;图5_b是本发明的存储区域服务器进行存储时对时效性处理存储的步骤;图6是本发明技术效果的仿真图。具体实施例方式下面结合附图和具体实施例对本发明进行详细的说明。如图I所示,该图是本发明中的物联网对海量数据进行分布式存储的网络部署图,底层网络的数据通过中间的接入层连接到互联网,接入方式可以是有线的,也可以是无线方式;上层为区域服务器(Regionalserver),它们使用IP协议,部署在互联网上,负责一定区域的物联网应用。且上层的区域服务器对于每一次具体存储过程按照它们的功能不同可以划分为接入区域服务器和存储区域服务器(存储节点),但是这两类服务器的功能是在不同存储发生时是可以相互转换的,所以所有区域服务器的组成均相同。如图2所示,该图为物联网数据采集到存储的系统组成框图。基于该系统的数据收集存储过程为无线传感器网络或者执行网络等物联网包含的感知网络的数据在其网络内部以其内部的协议进行传输,传输到接入网关(accessGateway,aGW),经由接入网关接入部署在互联网上的区域服务器,数据存储在区域服务器上(区域服务器对应的网络分层是支撑层),所有的区域服务器采用分布式组网的方式进行数据存储,且应根据数据的时效性进行不同的存储。其中,本发明中的分布式组网选用DHT组网方式。底层的感知网络均以无线传感器网络进行展开说明,而其他的底层感知网络的数据存储也在本发明的保护范围内。如图3所示,该图为区域服务器采用DHT组网的时候的组成框图。区域服务器上的数据存储和查询系统包括一个DHT模块(DHTmodule)、一个数据库模块(DataBase)、对上层应用的接口模块、数据时效性的区分模块、接收网关发来传感器数据的模块。其中,DHT模块负责区域服务器之间的组网以及从传感器数据名到存储传感器数据的区域服务器节点的映射,数据库模块负责存储传感器数据。本发明中采用数据时效性的区分模块对传统的DHT存储方式进行了修改,在以DHT的方式进行数据存储的时候对数据的时效性进行了区分,分为实时数据和非实时数据,由DHT中的数据区分模块来完成。在具体实施数据存储的时候如果数据的时效性是实时性的,则不对数据进行原有的DHT中的备份处理,并且为该类型的数据建立计时器,当时间超过了应用所要求的时效性时删除该数据。如果数据的时效性是非实时的则对该数据采用传统的DHT中的备份机制进行备份存储。各模块功能解释应用接口接收应用下发的对数据的时效性的要求,有实时性和非实时性两种类型。数据时效性分类模块当区域服务器作为接入区域服务器时根据应用下发的对数据的时效性的要求,对和该应用相关的数据进行时效性标记。网关数据接口负责接收由网关发来的传感器数据。DHT组网模块实现了传统的DHT功能,将区域服务器按照DHT的方式组网。缓存模块,用于缓存从DHT模块上查询的传感器数据名到存储传感器数据的存储节点的映射信息,这样使得在缓存信息有效期内再有相同的数据名的数据存储时,直接可以从缓存中获得存储节点的信息,不需要再向DHT模块进行查询,减小查询开销。数据时效性区分模块,当区域服务器作为存储节点时,它会首先对数据时效性进行判断,以确定数据是否需要备份。其中数据时效性区分模块在传统的DHT存储机制中加入的识别数据的时效性的模块,以对不同时效性的数据做不同的存储处理。数据的时效性由应用的特点来决定,应用对数据时效性的要求从应用接口下发给区域服务器,数据时效性分类模块接收应用对某些数据的时效性的要求,将不同的传感器数据进行不同的时效性标记,分为实时性数据和非实时性数据。如图4-a所示,该图为基于以上系统该图为分布式组网采用DHT组网方式的数据存储步骤为步骤401,底层的感知网络采集到数据后,传输到接入网关,经由网关发往区域服务器,由区域服务器中的网关数据接口接收网关发来的传感器数据。步骤402,接入区域服务器向其包含的映射信息缓存模块查询是否有该数据名的映射信息的有效缓存,如果有则将采集的数据发往存储节点进行存储;如果没有该数据名的映射信息的有效缓存则进入下一步骤;步骤403,接入区域服务器采用其包含的分布式哈希表组网模块查询数据名映射到的存储节点,将采集的数据存储到查询得到的存储节点上;同时将查询数据名映射到的存储节点在区域服务器包含的映射信息缓存模块中进行存储。如图4_b,该图为与以上步骤对应的查询步骤为(I)上层应用发出数据查询获取请求,且区域服务器上的应用接口收到应用的请求;(2)区域服务器向其包含的映射信息缓存模块查询是否有该数据名的映射信息的有效缓存,如果缓存中存在数据名和存储节点的映射信息的有效缓存,区域服务器向对应的存储节点获取数据,并由应用接口发送给应用,数据查询获取结束;如果缓存中不存在数据名和存储节点的映射信息的有效缓存,则进入下一步骤;(3)分布式哈希表模块将查询数据名所对应的存储节点的映射信息,区域服务器向对应的存储节点获取数据,并由应用接口发送给应用,同时将查询得到的数据名所对应的存储节点的映射信息进行缓存,数据查询获取结束。实施例基于以上步骤,如果底层感知网络为无线传感器网络则上述数据存储步骤描述如下传感器网络采集到数据后,在传感器网络内部以传感器网的路由协议传输到接入网关,经由网关发往区域服务器。区域服务器向DHT模块查询传感器数据名对应的存储节点的IP,数据名可以是传感器的ID属性,可以是传感器检测的事件名属性等等,根据系统的设计确定。查询传感器数据名所对应的存储节点的过程是以传感器数据名为DHT查询中的key,由DHT的算法返回该数据名所对应的存储节点的IP,即DHT中key所对应的value。在DHT返回传感器数据名对应的存储该传感器数据的区域服务器节点的IP后,传感器所在的区域服务器将传感器采集的数据存入传感器数据名映射到的IP的节点的数据库上。频繁的查询DHT的操作,一方面会增加DHT模块的负载,另一方面会带来延迟。为了避免频繁的查询DHT的操作,在区域服务器上建立区域服务器当前负责的下层网络的数据名所映射的IP列表缓存,这样在缓存有效期内直接从缓存中读取存储节点。基于以上步骤,如果底层感知网络为无线传感器网络则上述数据查询步骤描述如下上层应用需要传感器数据时,只需要通过任意一个区域服务器查询数据名所映射的存储节点的IP,从该IP的节点上即可获得传感器数据。应用所连接的可以是网络上的任意一台区域服务器,不必是当前负责该传感器的区域服务器。入口的区域服务器也可以缓存DHT的查询结果,从而再有相同的传感器数据查询时,可以从缓存中直接返回存储节点的结果。基于以上存储方法,为了实现物联网底层感知网络的海量数据的有效存储,为存储网络节省更多的存储空间,本发明还做出以下改进。如图5-a所示,该图对分布式存储方式还进一步考虑了数据时效性问题,即在图4的步骤401之后步骤402之前还包含步骤501该步骤用于对采集的数据进行时效性分析的步骤,将待存储的数据分为实时数据和非实时数据,其中存储节点对这两种数据采用不同的备份机制进行存储。改进后的数据存储的步骤如下步骤401,底层的感知网络采集到数据后,传输到接入网关,经由网关发往区域服务器,由接入区域服务器中的网关数据接口接收网关发来的传感器数据。步骤501,接入区域服务器中的数据时效性分类模块根据应用下发的数据的时效性的要求,对数据进行时效性的标记,标记类型包括实时性数据和非实时性数据。步骤402,接入区域服务器向其包含的映射信息缓存模块查询是否有该数据名的映射信息的有效缓存,如果有则将采集的数据发往存储节点进行存储;如果没有该数据名的映射信息的有效缓存则进入下一步骤;步骤403,接入区域服务器采用其包含的分布式哈希表组网模块查询数据名映射到的存储节点,将采集的数据存储到查询得到的存储节点上;同时将查询数据名映射到的存储节点在区域服务器包含的映射信息缓存模块中进行存储。DHT是一种动态的分布式网络存储方法,由于DHT中节点的动态性,在数据存储的过程中要对节点上的数据进行备份,DHT中有不同的备份机制,在传统的DHT方式的数据存储中对数据的类型不做区分,也就是说对所有的数据都会备份。本发明将DHT引入到物联网的海量信息存储中,并且根据应用对数据的不同要求对传感器数据做了分类。实时性的数据类型是指只有当前数据是有用的,历史数据对应用不再有作用,所以对实时性的数据就不再需要DHT对数据的备份机制。当一个存储节点失效时,根据DHT的机制数据将被存储到别的存储节点上,而应用查询数据名时,根据DHT的机制将会获得传感器数据名所对应的的新的存储节点,获取当前数据即可。而且在存储节点上根据数据的生命期,对过期的数据进行删除,这样就会节省很大的存储空间。对非实时数据类型而言,历史数据对应用是有用的,需要对历史数据进行备份,这个工作使用传统的DHT中对数据的备份机制即可。基于上述分析,图4-a、图4-b和图5_a描述的步骤仅仅涉及了接入区域服务器将采集的数据发往由其确定的存储节点(即存储区域服务器),而这些数据在存储区域服务器上如何针对时效性进行区分备份存储的具体过程并未描述。如图5-b所示,该过程描述为首先,存储区域服务器接受接入区域服务器传送过来的待存储数据还需进行以下处理然后,存储区域服务器包含的数据时效性区分模块对存储在本节点的数据进行时效性检查,如果这些采集的数据为非实时数据则直接在该存储区域服务器上进行存储;如果采集数据为实时数据,则进入下一步骤;最后,检测这些待存储的实时数据时效性是否过期,如果时效性过期则将删除这些数据,即不对这些数据进行存储;如果没有过期才在该区域服务器上存储。区域服务器向DHT模块查询传感器数据名对应的存储节点,将数据存入经由DHT查询返回的存储节点。这里的存储节点是指以DHT方式组网的区域服务器。每个存储节点上的数据时效性区分模块对进入本节点存储的数据的时效性进行识别。如果数据的时效性是实时性的,则不对数据进行原有的DHT中的备份处理,并且为该类型的数据建立计时器,当时间超过了应用所要求的时效性时删除该数据。如果数据的时效性是非实时的则对该数据采用传统的DHT中的备份机制进行备份存储。试验结果对本发明提出的物联网的数据收集存储和查询获取方案,进行了原型系统的设计和开发。在实际系统中,下层的DHT采用chord算法,数据库使用mysql,以c++语言完成的分布式数据系统工作良好,存储负载在各个存储节点上得到均衡,有节点失效时,可以在I秒钟以内重新建立新的数据存取结点。图6是有三台机器的分布式存储系统在收集数据12小时后的存储统计图,存储负载在各个存储点上得到均衡。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。权利要求1.一种物联网中分布式数据存储和查询的方法,该方法用于将物联网下层若干个底层感知网络采集的数据在上层的若干区域服务器之间实现分布式存储,包含数据存储的步骤,所述底层网络采集的数据在底层网络内部以其内部的协议进行传输,传输到接入网关,经由接入网关接入部署在互联网上的区域服务器,所述采集的数据在区域服务器组成的网络中进行存储;数据查询和读取的步骤,上层应用需要底层网络采集的数据时,通过任意一个区域服务器查询数据名所映射的存储节点的IP,从该IP的节点上获得所需的传感器数据;其中,所述区域服务器采用分布式组网,且所述的区域服务器将所述采集数据分为实时数据和非实时数据在所述区域服务器上进行存储;对每一次存储按功能将区域服务器划分为接入区域服务器和存储区域服务器,所述接入区域服务器为通过网关接受底层待存储数据的区域服务器,所述存储区域服务器为确定的存储节点。2.根据权利要求I所述的物联网中分布式数据存储和查询的方法,其特征在于,所述分布式组网采用分布式哈希表进行组网。3.根据权利要求I所述的物联网中分布式数据存储和查询的方法,其特征在于,所述底层网络为无线传感器网络。4.根据权利要求1、2或3所述的物联网中分布式数据存储和查询的方法,其特征在于,所述数据存储步骤具体为步骤101,底层的感知网络采集到数据后,传输到接入网关,经由网关发往区域服务器,由区域服务器中的网关数据接口接收网关发来的传感器数据;步骤102,所述接入区域服务器确定存储区域服务器,并将待存储数据发往确定的存储区域服务器;步骤103,存储区域服务器存储接入服务器发来的数据。5.根据权利要求4所述的物联网中分布式数据存储和查询的方法,其特征在于,所述步骤102之前还包含接入区域服务器对待存储采集数据进行时效性标志的步骤,其中的时效性将数据分为实时数据和非实时数据。6.根据权利要求4所述的物联网中分布式数据存储和查询的方法,其特征在于,所述确定存储节点步骤为接入区域服务器查询是否有该数据名的映射信息的有效缓存,如果有则将采集的数据发往存储节点进行存储;如果没有该数据名的映射信息的有效缓存则进入下一步骤;所述接入区域服务器采用其包含的分布式哈希表组网模块查询数据名映射到的存储节点,将采集的数据存储到查询得到的存储节点上。7.根据权利要求5所述的物联网中分布式数据存储和查询的方法,其特征在于,所述数据名可以是传感器的ID属性,传感器检测的事件名属性。8.根据权利要求4或5所述的物联网中分布式数据存储和查询的方法,其特征在于,所述步骤103的具体步骤为存储在本节点的数据进行时效性检查,如果这些采集的数据为非实时数据则直接在该存储区域服务器上进行存储;如果采集数据为实时数据,检测这些待存储的实时数据时效性是否过期,如果时效性过期不对这些数据进行存储;如果没有过期在该区域服务器上存储。9.一种物联网中分布式数据存储和查询的系统,该系统基于物联网,其特征在于,所述系统还包含若干区域服务器,该区域服务器与物联网上层应用相连同时与物联网包含的接入网络相连,用于接收并存储物联网底层网络采集的数据;其中,所述若干区域服务器采用分布式哈希表组网。10.根据权利要求9所述的物联网中分布式数据存储和查询的系统,其特征在于,所述底层网络为传感器网络。11.根据权利要求9或10所述的物联网中分布式数据存储和查询的系统,其特征在于,所述区域服务器进一步包含DHT模块,用于区域服务器之间的组网以及从传感器数据名到存储传感器数据的区域服务器节点的映射;数据时效性区分模块,用于将底层采集的数据分为实时数据和非实时数据;和数据库模块,负责存储传感器数据。12.根据权利要求10所述的物联网中分布式数据存储和查询的系统,其特征在于,所述区域服务器还包含一缓存模块,用于缓存从DHT模块上查询的传感器数据名到存储传感器数据的存储节点的映射信息;应用接口模块,用于和上层的应用通信;网关接口模块,用于与下层的接入网关对接。全文摘要本发明提出一种物联网中分布式数据存储和查询的方法,该方法用于将物联网下层若干个底层感知网络采集的数据在上层的若干区域服务器之间实现分布式存储,包含数据存储的步骤,所述底层网络采集的数据在底层网络内部以其内部的协议进行传输,传输到接入网关,经由接入网关接入部署在互联网上的区域服务器,所述采集的数据在区域服务器组成的网络中进行存储;和数据查询和读取的步骤。其中,所述区域服务器采用分布式组网,且所述的区域服务器将所述采集数据分为实时数据和非实时数据在所述区域服务器上进行存储。本发明首次将分布式存储网络应用到物联网的海量数据的存储当中,而且为了节省分布式存储网络的存储资源将数据进行了时效性划分。文档编号H04L29/08GK102752322SQ201110095990公开日2012年10月24日申请日期2011年4月18日优先权日2011年4月18日发明者刘宇,唐晖,牛温佳,谭红艳,赵志军申请人:中国科学院声学研究所