在DADMA中,传感器网络被看做是一个分布式关系数据库,而这个数据库是由连接位于传感器节点中的本地表的单一视图构成的。本地表中的记录是对到达查询的度量并包含两个字段,即任务(Task)和范围(Amplitude)。由于某个节点的依附节点可能不止一个,任务字段,例如温度、湿度等,用于指示进行测量的传感器。节点的存储容量有限,所以它们并不存储每一个测量的结果。因此,任务字段是本地表中在查询请求到达时生成的关键字字段。对传感器网络的这一理解,使得对于提取传感器数据而不需要更多的存储需求,关系代数是实际可行的。
传感器网络数据库视图(Sensor Network Database View,SNDV)可以在中央节点或者外部代理服务器中临时创建。一个SNDV记录有三个字段:位置(Loca-tion)、任务(Task)和范围(Amplitude)。当从一个节点提取数据时,传感数据通过节点的位置被连接起来。由于多个节点可能拥有相同类型的传感器,例如,多个传感器会执行相同的传感器任务,位置和任务字段成为SNDV中的关键字。对于很多WSN应用来说,传感数据需要和位置数据相结合。例如,在进行目标追踪和入侵检测的传感器网络中,传感数据在没有和位置相关联的情况下,基本上没有任何意义。因此,节点的位置感知是很多WSN应用的强制性需求。如果位置数据对于应用来说不可用也不重要,节点的本地标识字段就会取代位置字段。
在一个远端代理服务器中维持数据库也是可行的,这里从查询中获得记录,例如,一个SNDV的记录在和一个时间(Time)标签连接之后存储。举例来说,一个后台程序(Daemon)可以在特定的时间间隔生成查询请求,并把从查询中得到的SNDV记录插入到它们与时间字段连接之后的数据库。注意每次查询结果产生一个新的SNDV,这里查询结果被临时聚集起来。
在DADMA(Cayirci,2003)中,查询是由具有以下结构的一个语句发起的。注意,这个语句中使用了标准结构化查询语言(SQL)符号,除了最后以关键字“based on”开始的部分。
一个用户可以提取SNDV中可用的数据字段的一个子集,并通过基于任务的分组数据或者通过使用式(7-7)中给出的聚合m函数来聚合范围数据。其中的一些节点也可能会从一次查询中被式(7-8)中给出的稀疏m函数排除。
f(x)=xdivm (7-7)(www.xing528.com)
f(x)=(x/r)mod(m/r) (7-8)
式中,x代表和一个坐标轴相关的某个节点的网格位置;r代表以米为单位的分辨率;m代表稀疏或聚合因子。
当用户给出dilute m命令后,每个节点首先使用式(7-8)找到它在水平和垂直坐标上的位置索引,并将这些索引和查询中的“base on”字段的区域值x和y进行比较。如果它们匹配,节点将会对查询进行回复。例如,对m=8同时r=2,位于{46,74}位置的节点的位置索引是{3,1}。因此,如果查询中的区域值是{3,1},那么这个传感器就应该作出响应。因此,只有位于每米内的r×r平方米内的汇聚节点才会对查询作出反应,而其他节点则保持空闲。这是一种实用的技术,特别是在节点根据均匀分布被随机部署,传感器网络用于监控诸如温度、湿度和压力等环境条件的情况下。
对于同一个例子,通过式(7-7)所得到的索引是{5,9}。当接收到aggregate m命令时,由某个节点所测量的值将会和其他拥有相同索引的节点所测量得到的值进行聚合。因此,我们可以基于节点的位置,在一定的地理位置定位汇聚节点,并聚合数据。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。