专利名称:一种物联网海量数据存储方法及系统的利记博彩app
技术领域:
本发明涉及一种物联网存储方法及系统,特别涉及基于NoSQL的物联网数据存储方法及系统。
背景技术:
物联网(Internet of Things, IoT)通过各类信息感知设备将物品与互联网相联,让所有能够被独立寻址的普通物理对象可以实现信息交换,最终达到智能化识别、定位、跟踪、监控和管理的目的。数据是物联网最有价值的一个方面,在物联网环境下,数据来源于不同的传感设备,并代表着数以十亿计的对象,总体而言,物联网数据呈现以下特征
1、多源异构。物联网数据来源于不同的感知设备,如RFID (Radio FrequencyIdentification,无线射频识别)识读器、视频设备、温度传感器、湿度传感器等。来源于不同设备的数据有着不同的语义及结构。2、超大规模。物联网包含了大量的感知设备,感知设备持续地采集数据,导致了数据规模的急剧膨胀,形成了海量数据。3、时空相关。物联网系统中每一个采样数据都具备时间和空间属性,用以描述物体状态在时间和空间上的动态变化。4、多维标量。当前,物联网应用通常集成了多个不同各类的感知设备,可同时感知多个指标量(即多维事件),因而采样数据通常是多维甚至是高维的。当前,物联网数据的存储主要有三种形式本地式、分布式以及集中式。本地式指采样数据被存储于设备的本地存储单元中;分布式指数据被存储于网络中选定的某些节点,通过中间机制实现对数据的访问;集中式指网络中各个节点的数据被集中起来,并被发送到远程的数据中心中集中存储。前两种方式最大的缺陷就是节点资源如存储空间、处理能力、电量等都是有限的,因此不能支持需要大规模数据及密集查询的物联网应用。同时,这两种方法也不便于数据在不同应用之间共享。因此,当前越来越多的研究专注于集中式的方案。处理海量数据的集中式方案主要分为两类并行数据库及云数据库。并行数据库主要由多个关系型数据库组成,支持海量的结构化数据的存储,但这类数据库性能远低于NoSQL (Not Only SQL,非关系型数据库),由于采用的分布式锁机制,并发程度受到极大限制;此外,此类数据库数据格式固定,无法灵活地增删数据字段,有效地应对异构数据,因此,并行数据库并不适合于存储管理海量物联网数据。云数据库的主要形式是NoSQL数据库,NoSQL 遵循 BASE 模型(Basically Available (基本可用)、Soft-state (软状态 / 柔性事务)、Eventual Consistency (最终一致性)),因此具备高性能有高可扩展性,NoSQL无需固定表结构,通常不存在连接操作,在大数据存取上具备关系型数据库无法比拟的性能优势。
发明内容
为了解决上述技术问题本发明提出了一种物联网海量数据存储方法,其步骤包括I)对物联网数据进行预处理,将预处理后的数据放入由主节点、分节点和数据接收节点组成的数据库集群中;所述预处理为1-1)把采样得到的物联网数据分类为轻量级数据和多媒体数据;1-2)将所述轻量级数据进行数据去重处理,对所述多媒体数据进行特定值提取和数据去重处理;2)根据所述数据库集群中数据的静态信息和动态信息,在主节点上建立以 SampleElement为存储单兀的SampleRecord记录;SampIeEIement为最基本存储单兀,集群中的数据由若干条SampleRecord组成,一条SampleRecord由若干SampleElement构成。3)对所述SampleRecord记录封装后由主节点下发至每个分节点进行分片处理和/或分离存储;4)所述分节点完成存储后将结果上传至主节点,主节点更新该数据库集群中的数据,完成存储。所述静态信息包括数据的ID、所属领域和数据类型;所述动态信息包括轻量级数据和多媒体数据;所述轻量级数据包括数值类型和字符型;所述轻量化多媒体数据包括轻量化多媒体数据类型(视频、图像、音频……)、数据格式(如果类型是图像的话,则这里可以是jpep、gif、png等)、兴趣值、摘要值以及指向多媒体数据原始值的一个指针。所述预处理中多媒体数据特定值根据兴趣值和摘要值提取;所述兴趣值由用户设定,所述摘要值使用MD5或SHA算法。针对摘要值的本质是提取一个“数据指纹”,以一个较短的值来达到唯一标识数据的目的。优选地,所述数据去重处理使用设定阀值或块级去重。优选地,所述预处理还包括数据清理处理,所述数据清理处理为缺失值填充和平滑噪声数据。优选地,所述存储单元SampleElement=〈key:value>用序键值对表示,其中key表示数据名称,value为数据采样值。优选地,所述多媒体数据与轻量经数据分离存储;所述SampleRecord记录多媒体数据的兴趣值和/或摘要值不对多媒体数据原始值进行存储;所述SampleRecord记录所有轻量级数据。基于上述方法本发明还提出一种物联网海量数据存储系统,包括多个数据接收节点服务器组成的数据接收节点、一主节点服务器和多个分节点服务器组成的数据库集群;其特征在于,所述数据库集群中数据包括静态信息和动态信息;所述静态信息包括物品的ID、所属领域和物体类型;所述动态信息包括轻量级数据和轻量化多媒体数据;所述主节点用于接收客户端请求并管理集群;所述分节点用于存储数据;在所述主节点上建立以SampleElement为存储单元的SampleRecord记录;
所述数据接收节点用于接收物联网采样数据后对数据进行预处理后,存入数据库集群中;所述动态信息中采用块级去重方法对信息去重,所述动态信息中多媒体数据与轻量级数据分开储存。所述数据库集群还包括备用主节点,所述备用节点用于避免单个主点失效;该数据库集群由NoSQL或RDBMS数据库组成。本发明目的是设计一种物联网存储系统,满足以下需求本发明所设计的系统位于物联网四个层次(感知层、网络层、数据层以及应用层)中的数据层,用于物联网数据的存储。本发明所设计的存储系统架构如图2所示,该存储架构中包含两部分数据接收节点以及数据库集群。数据接收节点主要用于接收物联网采样数据,经过预处理后,存入数据库集群中。数据库集群主要包括三类角色主节点、分节点以及备用主节点。主节点主要用于接收客户端请求,并管理集群,如维护数据块及分节点之 间的映射关系,监测写请求并评估写入的数据是否超过最大存储能力等;分节点并不关心整个集群的管理工作,仅用于存储应用数据;备用主节点,主要用于避免单点失效,用户并不意识到此节点的存在,主节点失效时,该节点将代替主节点的全部工作。备用主节点只是出于防止单点失效的情况,实际上,没有备用主节点整个系统也可以正常工作,因此如单纯从系统功能上来说,备用主节点不是必要的。该系统采用无共享(Shared-Nothing)架构,与共享内存及共享磁盘架构相比,具备更强的可扩展性。无共享架构是主要是指每一个CPU都有私有内存区域和私有磁盘空间,而且2个CPU不能访问相同磁盘空间,CPU之间的通讯通过网络连接。如图1所示展示了 A—共享内存、B—共享磁盘以及C一无共享架构之间的区别(其中M代表内存(Memory)、P代表处理器(Processor)、D 代表磁盘(Disk))。本发明所设计的系统下,本发明提出数据共享机制。当前的存储方案中,仅关注描述物体本身数据,并未关注如何存储以便更有效地实现各物联网应用之间的数据共享与协作。本发明中的共享机制基于本体(ontology)理论,所谓本体,最著名并被广泛引用的定义是由Gruber提出的“本体是概念模型的明确的规范说明”。本体是用来描述某个领域甚至更广范围内的概念以及概念之间的关系,使得这些概念和关系在共享的范围内具有大家共同认可的明确的唯一的定义,这样,人机之间以及机器之间就可以进行交流.。目前,本体已经被广泛应用于语义Web、智能信息检索、信息集成、数字图书馆等领域。本发明采用本体理论,是由于当前物联网应用都较为封闭,形成了应用闭环,实际上当前物联网还并不是真正的物联网,只是一个的物联局域网,各个局域网之间还缺乏互联互通,数据难以共享。因此本发明希望借助本体理论规范数据的抽象,使得不同的应用都可以在规范名词与术语之下,达成共同的理解,更有益于数据的共享。对于实现技术手段来讲,当前已有标准的本体语言0WL(0ntology Web Language),它供了强大的原语。可参见如((2011-Ontology Based Service Discovery Method for Internet of Things》以及《基于本体论的物联网应用服务研究》这两篇文章中的相关描述。按照数据抽象标准,数据被抽象为四种类实体(Entity)类用于描述实体,如人、汽车、大棚等,以大棚为例,这类实体的基本信息可描述如下〈Shed: temperature, light, humidity〉。子类可在此基础上扩展。领域(Field)类用户描述不同的物联网应用领域,如交通、物流及农业等。同一个实体在不同的领域内扮演着不同的角色,因此,同一实体在不同领域内的被关注信息也有所不同。以人为例,可定义基本属性如下<People:name, height, weight〉。在医疗领域,关注的是人体的生理数据,因此在该领域内,People类被继承为Patient, Patient类在People 类上扩展<Patient:name, height, weight, heartbeat, pulse, blood_pressure> ;而在物流领域,人可能作为快递员,People类被继承为Messenger,此情况下更关注人的联系方式,因此该领域内,Messenger 类在 People 类上扩展〈People:name, height, weight, mobile, fix_phone, fax>。活动(Activity)类用以户描述特定的活动,如“预订”、“(为大棚 )补(光)”、“抓拍(交通违规车辆)”。应用(Application)类用户完成特定的应用,应用由多个不同领域实体以及不同的活动完成。数据按照此标准行抽象,并将必要的信息存储于数据库中,基于一致理解的信息以及精确的描述,不同应用间可理解彼此所包含的实体种类,实体所属的领域,描述该实体的有哪些字段,相应活动的具体含义……可最终实现数据共享,并准确地协作完成相关任务。以智能库存管理系统为例,系统每天都会通过数据库中的采样数据统计货物库存量,一量发现某种货物,如苹果(水果领域中的实体)库存不足,它将在供应商中进行检索(活动),然后时行比价(活动)等,并最终在选定的供应商中订购(活动)相应数量的苹果。基于一致的理解,应用中的所有环节都可以由机器自动完成,并且不会出现语义冲突,以上面这个系统为例,在领域条件的约束下,它最终检索、订购的是水果中的苹果,而非数码产品中的苹果O在不同系统之间交换数据是需要媒介来承载的,比如一段文字,可以用word文档作为载体,并用word程序来阅读,也可以用html页面将其呈现于浏览器之中。特定的程序只能理解特定的数据格式,word文档自然是不能被浏览器理解的,也就无法正确呈现其中的文字。由于XML语言对于人与机器都是可读的,并已广泛应用于各个领域,因此在本发明的系统中,不同应用之间的数据交换使用XML为媒介完成。数据存储于数据库的时候,依然按照数据库的格式来存,当数据读取出来要传输至其他系统或应用时,就通过XML来承载将数据传送过去。本发明的有益效果1、本发明中轻量级数据与多媒体数据分离存储,方便分别对这两类数据进行管理。物体的静态信息中保存了物品的ID、领域、类型等信息,为日后数据共享提供了拓展基础。这些信息有益于数据的检索,同时在有物品标识解析系统等的辅助下,也助于不同信息服务系统之间进行数据共享,其他系统或应用得到数据之后可根据领域、类型等信息,准确地理解所获得的数据。2.对海量数据增加预处理步骤,为增加系统的灵活性,这些步骤是可配置的,也就是说用户可以通过参数设置是否需要进行部分或全部的步骤。3.可充分利用现有存储技术拓展集群对海量数据进行储存,在高并发条件下提供良好读写性能。将物联网数据进分类为轻量级数据及多媒体数据,并在预处理中将多媒体数据进行轻量化处理,提取出用户关心的信息及摘要信息,数据所有数据都转化为轻量级数据存储,原始多媒体数据存储于另一集合,虽整体数据存储空间开销略有增加,但减少了核心数据的体积,有益于提高数据应用时的效率。4.分布策略设定对于规模较小的数据不采取分片策略,对于大规模量的数据方可采取分片策略,以避免存储空间的扩展带来不必要的时间开销。
图1是无共享架构、共享磁盘和共享内存的示意图,A—共享磁盘式(ShareDisk), B一无共享式(Share Nothing), C一共享内存式(Share Memory);图2是本发明物联网海量数据存储系统结构图;
图3是本发明物联网海量数据存储系统预处理流程示意图;图4是本发明物联网海量数据存储方法中存储策略去重过程示意图;图5是本发明物联网海量数据存储方法一实施例中数据表达方式示意图;图6是本发明物联网海量数据存储方法中存储策略数据分片示意图;图7 (a)、7 (b)是本发明物联网海量数据存储方法一实施例中存储策略中基于数据分片的实验结果图;图8是本发明本发明物联网海量数据存储方法一实施例中基于地理空间索引编辑码的分块示意图。
具体实施例方式本发明提出的存储系统下,本发明的存储策略包含预处理策略、数据表达形式以及数据分布策略。一.预处理数据预处理主要由数据接收节点完成,不同物联网应用有着共性处理需求,同时也有着个性处理需求。如图3,本发明提出一种预处理机制以满足这两方面的需求。数据接收节点在收到数据后首先进行共性需求的处理,处理过程如下1.数据分类,原始采样数据被分为两类轻量级数据,包括数值型以及字符型;多媒体数据,包括视频、图像、音频以及信号等。不同种类的数据处理过程各异。2.提取特定值(specific value),此过程仅针对多媒体数据。本发明定义的特定值包括两类兴趣值(interest value),指通过相应算法提取出的应用最为关心的信息,通常应用关心的不是多媒体数据本身,而是隐含于其中的应用感兴趣的信息或知识,例如从火车站台监控视频中可分析站台人流密度,交通监控视频中可分析出一小时内交通违规数
且雄
里寺;3.摘要值(digestvalue),同样是由特定算法计算得出,如MD5,摘要值用于对多媒体数据进行统一的简要描述,与兴趣值最大的不同是摘要值是无意义的,是一串固定长度的字符串,摘要值有益于多媒数据体去重与检索,例如,如果两张采样图像是一样的,那么它们的摘要值也将一样,无论是确定图像是否重复还是进行图像检索时,都只需要比对摘要值即可。4.数据清理,来源于物理世界的采样数据通常都是不完整的、有噪声的甚至是错误的,数据清理目的是确保数据的正确性。通常的手段是填充缺失值以及平滑噪声。对于缺失值,如果应用允许缺失值的存在,则使用一个全局常量如“unknown”或c ”表示缺失值;反之,则使用最近的N个值的平均值填充缺失值(N可根据实际需要自定义)。对于噪声数据,使用分箱(binning)算法,考察数据周围邻近值来平滑噪声。需要说明的是,物联网中数据的突变是正常的,因此,在平滑噪声时,只要该值是在正常范围内,则不能将其视为噪声。5.数据去重,物联网数据存在冗余度高的特点,通常是由于较高的采样频率或多个感知设备对同一物体同时采样引起。如图4所示,一个处理冗余数据的简单方法是设定一个阈值,如果当前接收到的值与上一次存入数据库的值差小于阈值,则此值不被存入数据库;反之,则该值须被存入数据库。但是上述方法仅对一维数据有效,物联网数据通常是多维的,这使得数据去重问题更为复杂。此情况下,本发明采取的方法是一条记录中任何一维的数据被判定可存入数据库,则该条记录须被存入数据库。当然,这会引起较大的空间开销,因为某些维可能长时间数据没有变动,无须每次都存入数据库。为节省空间,在数据库中,本发明采取另一个方法——块级去重法应对这个问题。块级去重主要指在数据库中,将数据进行分块,由于数据存在冗余,则可能产生很多相同的块,对于数据相同的块只存一个 副本,其他的块使用指针引用该块。块级去重是将所有的文件分解成数据块,然后通过散列算法,为每个块创建一个哈希值,并与其他所有数据块的哈希值进行比对,如果两个数据块的哈希值完全一致,其中一个块就会被删除,并用指向另一个块的指针来代替。不同产品检查数据块大小各不相同,一些供应商选择固定大小的数据块,一些则使用不同大小的数据块。具体可参见(谭玉娟;数据备份系统中数据去重技术研究[D];华中科技大学;2012年)以上是本发明中数据预处理所必须经过的共性处理步骤,为增加系统的灵活性,这些步骤是可配置的,也就是说用户可以通过参数设置是否需要进行部分或全部的步骤。经过前面的步骤处理后,数据将传入“自定义处理”模块以应对个性化预处理需要,该模块需要用户编程实现,如果未实现,默认情况这个模块是对数据不做任何处理的,仅有一个数据出入接口,类似于编程里定义了一个空函数,这个函数是完整的,只是它内部没有做任何工作,则该模块不对传入的数据进行任何处理。一种实现的方式是使用面向切面的编程方式(Aspect-Oriented Programming, AOP),得益于该种编程方式,实现自定义处理模块后,用户无需对已有代码进行编译,模块可动态加载入已有程序。二.数据表达本发明中,数据库中最小的存储单元定义为SampleElement,定义如下SampleElement =〈key ralue>(I),SampleElement是一个有序的键值对,其中key e String,相当于value的名称;而value e String U Number用于存储实际采样值。一些SampleElement的实例如下〈temperature: 50>,〈nPeople: 121>or〈audioText: “Hello world,,〉,分别表不米样温度为 50度,人数为121人以及从音频中通过语音识别提取出的文本“Hello world”。本发明中,基本的存储单元是一条记录,被称作SampleRecord,相当于SampleElement的有序集合,如图5所示,一条SampleRecord由两部分信息组成静态信息,包括物品的ID,所属领域,物体类型等;动态信息,即关于物体实际采样值,包括时间、地点以及其他物体自身的状态信息及环境信息,动态信息由两部分组成,一部分是轻量级数据,另一部分是多媒体数据。SampleRecord具体定义如下SampleRecord= ((rID, sID, tID, field, type…),(t, loc, (v I i) I (i =
I) η, (v I j i m) I ) (j=l) x)(2),其中,rID, sID, tID e String, rID是该条记录的ID, tID, sID分别是唯一标识物体的物品码,以及物品码所属的标准;field e String用于标识物品所属领域,根据本发明中的共享机制,field是必须的;type等是物体的其他静态描述信息;t e Instant是采样时间;loc e Point是采样地点,在没有定位设备的情况下,Ioc等价于感知设备所处位置,Point是一个2维值如(X,y),本发明中空间并不仅限于GPS范畴,允许定义自定义空间;V e String U Number指采样的轻量经数据;vm e SampleMedia用于表达多媒体数据,多媒体数据SampleMedia定义如下SampleMedia = (type, format, Vinterest, Vdigest, Poriginal) (3).其中,type, format e String,分别表示该多媒体数据的类型(如音频、图像或视频)及格式(如对于图像有jpeg, gif, png等格式);vintOTest e String U Number指从多媒体数据中提取的兴趣值;vdigest e String指多媒体数据摘要值;pOTiginal是指向多媒体数据原始值的指针,由于多媒体数据量较大,为方便数据的表达与存储,一条SampleRecord中不存储多媒体数据的原始值,仅存储与之相关的轻量级数据(兴趣值、摘要值等),原始数据将被存储于另一个集合(Collection)。由于本发明的具体存储技术不限于RDBMS,因此在本发明中,用集合的概念替换RDBMS中的表概念,如图5所示,一个集合由若干条SampeRecord组成,相应地,一条SampleRecord可视作RDMBS表中的一行。通过SampleRecord可实现对物联网异构数据的统一表达,并有助于数据的共享。下表I给出了 SampleRecord的实例表ISampleRecord 实例
权利要求
1.一种物联网海量数据存储方法,其步骤包括 1)对物联网数据进行预处理,将预处理后的数据放入由主节点、分节点和数据接收节点组成的数据库集群中; 所述预处理为 1-1)把采样得到的物联网数据分类为轻量级数据和多媒体数据; 1-2)将所述轻量级数据进行数据去重处理,对所述多媒体数据进行特定值提取和数据去重处理; 2)根据所述数据库集群中数据的静态信息和动态信息,在主节点上建立以SampleElement 为存储单兀的 SampleRecord 记录; 3)对所述SampleRecord记录封装后由主节点下发至每个分节点进行分片处理和/或分离存储; 4)所述分节点完成存储后将结果上传至主节点,主节点更新该数据库集群中的数据,完成存储。
2.如权利要求1所述的海量数据存储方法,其特征在于,所述静态信息包括物品ID、所属领域和物体类型;所述动态信息包括轻量级数据和轻量化多媒体数据;所述轻量级数据包括数值类型和字符型;所述轻量化多媒体数据包括多媒体数据类型、数据格式、兴趣值、摘要值以及指向多媒体数据原始值指针。
3.如权利要求1或2所述的海量数据存储方法,其特征在于,所述预处理中多媒体数据特定值根据兴趣值和摘要值提取;所述兴趣值由用户设定,所述摘要值使用MD5或SHA算法。
4.如权利要求1所述的海量数据存储方法,其特征在于,所述数据去重处理使用设定阀值或块级去重。
5.如权利要求1所述的海量数据存储方法,其特征在于,所述预处理还包括数据清理处理,所述数据清理处理为缺失值填充和平滑噪声数据。
6.如权利要求1所述的海量数据存储方法,其特征在于,所述存储单元SampleElement=<key: value)用序键值对表示,其中key表示数据名称,value为数据采样值。
7.如权利要求1所述的海量数据存储方法,其特征在于,所述多媒体数据与轻量级数据分离存储;所述SampleRecord记录多媒体数据的兴趣值和/或摘要值不对多媒体数据原始值进行存储;所述SampleRecord记录所有轻量经数据。
8.一种物联网海量数据存储系统,包括多个数据接收节点服务器组成的数据接收节点、一主节点服务器和多个分节点服务器组成的数据库集群;其特征在于, 所述数据库集群中数据包括静态信息和动态信息; 所述静态信息包括物品的ID、所属领域和物体类型;所述动态信息包括轻量级数据和轻量化多媒体数据; 所述主节点用于接收客户端请求并管理集群;所述分节点用于存储数据;在所述主节点上建立以SampleElement为存储单元的SampleRecord记录; 所述数据接收节点用于接收物联网采样数据后对数据进行预处理后,存入数据库集群中。
9.如权利要求8所述的物联网海量数据存储系统,其特征在于,所述动态信息中采用块级去重方法对信息去重,所述动态信息中多媒体数据与轻量级数据分开储存。
10.如权利要求8所述的物联网海量数据存储系统,其特征在于,所述数据库集群还包括备用主节点,所述备用节点用于避免单个主点失效;该数据库集群由NoSQL或RDBMS数据库组成。
全文摘要
本发明涉及物联网海量数据存储方法及系统,系统包括多数据接收节点、主节点服务器和数据库集群,方法为1)对物联网数据进行预处理,将预处理后的数据放入由主节点、分节点和数据接收节点组成的数据库集群中;2)根据数据库集群中数据的静态信息和动态信息,在主节点上建立以SampleElement为存储单元的SampleRecord记录;3)对SampleRecord记录封装后由主节点下发至每个分节点进行分片处理和/或分离存储;4)分节点完成存储后将结果上传至主节点,主节点更新该数据库集群中的数据,完成存储。本发明充分利用现有存储技术拓展集群对海量数据进行储存,将物联网数据分为轻量与多媒体数据,特别针对对于大规模量的数据采取分片策略,避免存储空间的扩展带来的时间开销。
文档编号G06F17/30GK103023970SQ20121046107
公开日2013年4月3日 申请日期2012年11月15日 优先权日2012年11月15日
发明者李廷力, 田野, 杜源峰, 刘阳 申请人:中国科学院计算机网络信息中心