2.2.1 多源异构数据的统一描述与管理机制

为了实现数据的跨设备融合,需要研发统一的数据描述和管理机制(Unified Data Description and Management,UDDM)。设计新型的数据描述方案,对数据源、数据描述以及实际数据的存储进行分析建模,该机制具有良好的可扩展性,能够主动采集预设数据类型的数据,还能够被动感知新的数据类型,实现对未知数据的采集。该机制具有分布式和一致性的特点,可以为数据的查询、分析和挖掘提供便捷高效的接口。如图2-4所示,智能工厂中的各类数据源都配有对应的工业传感器,通过统一的数据描述和管理机制可以对数据进行感知和采集。

图2-4 统一的数据描述和管理机制

1.节点

工业无线传感器网络中的节点可能具有的角色有三个:数据提供者、数据请求者和数据目录。为了能够执行数据融合过程中涉及的操作,上述三类节点分别具有以下三个关键构件:数据代理(Data Agent,DA)、用户代理(User Agent,UA)和目录代理(Catalog Agent,CA)。为简单起见,在本章余下的篇幅中将数据提供者节点、数据请求者节点和数据目录节点分别称为DA节点、UA节点和CA节点。本章所考虑的工业无线传感器网络由DA、UA和CA三类节点构成。

2.目录代理

目录代理即CA节点,其提供存储数据注册信息的场所。DA节点将自身采集到的数据信息发送给CA节点进行注册。对于UA节点发起的数据查询,CA节点基于自身拥有的数据注册信息进行应答。简言之,CA节点的存在能够增强数据融合体系结构的有效性。全体CA节点基于Chord协议构成一个结构化的对等网络。Chord协议是一个可扩展的分布式查找协议,其提供的最重要的操作是将键(key)映射至节点。通过一致性哈希(consistent hashing)操作,每个数据项都可以与唯一的键进行关联。键–值(key-value)存储在键所对应的节点上。Chord协议提供了节点加入和节点离开的相应机制,能够确保整个网络的正常运行。Chord协议中的所有节点都是对等的,其具有自身的信息传递机制。传统无线传感器网络中的节点周期性地给汇聚节点发送信息,尽管这样做使得路由工作更加容易,但是靠近汇聚节点的节点承受了过多的中继工作量。因此,这些节点的电量会比其他节点更早地枯竭。相反,在本章提出的模型中,由全体CA节点构成的Chord网络不具有汇聚节点,整个网络的状态是由监测令牌(monitoring token)来进行收集和呈现的,监测令牌的详细内容见本章的后续内容。对于传统无线传感器网络中簇头的轮换(rotation)策略,簇头的选举和轮换不可避免地引入了大量的额外开销。在本章提出的模型中,Chord协议自身所具有的一致性哈希机制使得键被均匀地映射至Chord网络中的所有节点。同样,Chord协议中的查找操作也基于相同的一致性哈希机制。因此,对于全体CA节点来说,数据查询的过程也是负载平衡的。上述特征使得本章提出的模型可以避免某些CA节点异常快速地耗尽电量。

3.统一的数据描述和管理机制

所有参与数据融合体系结构的节点(CA、DA和UA)都需要知晓该机制。具体来说,该机制包含一个用来对数据进行描述(profile)的属性列表。表中的每个属性都可以取一系列数值。将属性和它们的值用表L表示,网络中的所有节点都完全知晓这个表的内容。例如,名为“source”的属性可以表示数据的来源,其“值”可以为热交换器、传送带电机和旋拧阀等。假定表L中的属性以及它们对应的值是提前确定好的。将属性用集合property=pr1,pr2,…,prnp来表示,其中pri的相应取值由集合pi=pvi1,pvi2,…,pvim来表示。每个属性用一个字节来表示,则其有m=256个不同的取值。现在,引入数据描述的定义。

定义2-1 数据描述

数据描述(data description)是指字符串desp=pv1s,pv2j,…,pv(np-i)k,其中0≤i<np且1≤s,j,k≤256。该字符串通过依次连接np-i个属性的值来构成。当i=0时,称desp是一个完全描述(complete description);当i≠0时,称desp是一个不完全描述(incomplete description)。

那么,总共存在个不同的完全描述可以用来对数据进行描述。数据描述的格式如图2-5所示。

图2-5 数据描述

4.数据的注册和注销

对于数据注册来说,提交给CA节点的数据信息由三部分组成:数据的描述、数据提供者的ID(如设备序列号)以及访问该数据的URL地址。需要注意的是,只有数据的完全描述可以被用来进行数据注册。本章提出的模型给数据提供者的ID预留了32字节的空间,尽管HTTP协议没有规定URL的最大长度,但本章的模型在设计时将其最大长度限制为2048字节。数据注册的格式如图2-6所示。

图2-6 数据注册

不妨用2m来表示Chord网络的标识符空间。为了容纳个不同的完全描述,需要满足:

使用SHA-1作为一致性哈希函数来为CA节点和数据生成键,将所使用的一致性哈希函数用sHash(string)来表示。当接收到合法的数据注册请求时,CA节点首先给发起该数据注册请求的DA节点发送数据注册确认(data registration acknowledgment)。然后,该CA节点从数据注册请求中提取出数据描述和数据提供者ID并连接成一个字符串str,该数据的键通过key=sHash(str)得到。然后,该CA节点将<key,URL>发送给负责该key的CA节点。DA节点可以向其通信范围内的任意CA节点进行数据注册。只要DA节点收到某个数据注册请求的注册确认,那么就无须再对该数据进行注册。当DA节点在向某个CA节点注册一系列数据时,该CA节点突然失联(双方不在通信范围内或者该CA节点失效),那么该DA节点可以联络其他的CA节点来对剩余的数据进行注册。数据注销采用和数据注册类似的方式进行。

5.键的生成和查找

在非结构化的对等网络中,基于关键字(keyword)的查找是可行的。然而,在结构化的对等网络协议Chord中,针对数据名称的一致性哈希以及分布式哈希表不允许这样的操作。因此,只有完全匹配的方式是可行的。传统方法采用名为反向索引(inverted index)的<keyword,node>映射方式,基于关键字的查询通过冗余存储来实现。该方法的最大弊端是常见关键字(common keyword),负责常见关键字的节点不可避免地承受了大量的存储和应答负担。在本章提出的模型中,键的产生是通过对由数据描述和数据提供者ID连接而成的字符串执行哈希操作来获得的。数据提供者ID的存在解决了上述的常见关键字问题。

当具有潜在的数据查找需求时,UA节点从表中选出若干个感兴趣的属性。然后,该UA节点将和数据描述具有相同格式的数据查询发送给CA节点。当收到数据查询后,CA节点首先检查属性值是否有缺失。对于完全描述,该CA节点将自身所知晓的数据提供者ID追加在该完全描述的末尾,并对由该数据描述和数据提供者ID组成的字符串进行哈希操作。然后,该CA节点对所得的键进行查找。然而,由于UA节点自身的不确定性,很有可能存在一些属性的值缺失的情况。那么,CA节点收到的就是不完全描述。对于缺失的i个属性值,CA节点将对各个属性使用该属性以往最受欢迎的查询值来进行填充,而填充进去的最受欢迎的查询值的个数则用nmpv来表示。

CA节点在完成对原始的不完全描述的填充操作后,可得到nmpv个完全描述。然后,该CA节点将自身所知晓的数据提供者ID追加在上述完全描述的末尾,而CA节点所知晓的数据提供者的个数则用nsp来表示。对于假设的应用场景景i=1、nmpv=3和nsp=2,不完全描述的填充(filling)和追加(appending)操作如图2-7所示。由于不完全描述经过填充和追加操作后得到6个字符串,因此需要查询与之对应的6个不同的键。

图2-7 填充和追加操作

属性值的缺失是允许的,因为这样可以为UA节点提供相对开放的查询结果。由于需要查询的数据信息是根据UA节点和CA节点的期望产生的,因此最后,完全描述和不完全描述均有可能无法得到实际的查询结果。对于针对实际存在的数据的键的查询,对该键负责的CA节点会给发起该查询的初始CA节点发送数据应答。然后,查询结果由发起该查询的初始CA节点反馈给UA节点。