一种多对象时间序列数据存储设计

摘 要:本文讨论了在现有的数据存储和索引技术的基础上,结合固定周期产生状态数据设备的检测特点定义了一种存储结构和索引结构,以获得更高的空间利用率和查询效率。首先深入分析状态数据所具有的时间和设备二维性并定义了相应的二维存储结构,分别针对每一维建立了索引,然后分析了基于此结构的存储和查询方法。

关键词:索引;二维存储;存储结构

中***分类号:TP274.2

随着计算机技术在我国的全面发展与运用,在社会、经济、***治等诸多领域快速发展,在日常应用中经常遇到一类设备状态监控的问题。每个设备按照时间周期返回状态数据,系统需要记录系统中设备运行状况,在设备出现问题时可以通过历史记录进行问题分析和问题定位的情况。当前的应用发展趋势表明,被监测设备的数目正在迅速增长,同时随着技术的进步以及应用的需求,数据回传的周期也越来越短。对这类应用数据存储要求也越来越高。数据特点如下:多个设备数据相互***,设备本身变化不频繁。但偶尔设备会出现问题,修理后重新启动,状态数据会中断。

(1)设备状态数据采集时间间隔固定。

(2)单设备按时间顺序产生数据,不同设备的数据产生也基本有序。

(3)数据持续增加,在一个时间段内增加频率有规律可循,数据量大。

(4)主要操作为存储和查询。

1 数据文件存储和查询

对于要长期保存的数据,我们需要用数据文件保存,为了提高查询的效率我们必然要针对数据文件建立索引。索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定值。不同的索引设计对数据的插入、查询、删除、修改等操作效率将产生巨大影响。高效的索引文件,应该根据主文件数据结构特点进行设计。

对数据文件建立索引首先想到的是B(B+,B-)树。B树是一种最常见的组织索引的方式。在B树中,首先设定内部(非叶子)节点包含子节点数量范围。当一个节点中数据插入或移除数据时,如果节点删除或插入数据后节点保存数据数量超出规定的范围,为了维持保存数据的数量在设定范围内,内部节点可能会被连结或者分离。每个节点存储多个数据,从而使查找树的深度降低,减少查找层次提高查找效率。但针对于本文所描述的数据存储情况,数据的插入操作基本是顺序追加,而且没有删除操作,所以相对于B树的插入、删除操作就没必要那么复杂,应该做适当简化。

多对象的数据产生的频率不同,使得数据具有二维特性,单独的一维索引文件难以胜任。针对这些特点结合B树和二分查找的特点,我们建立一种多对象时间序列数据二维存储及索引结构。多对象表示需要监视多个设备;固定间隔时间序列数据,指的是每个设备获得状态数据按时间顺序且间隔固定。

2 存储与索引结构的设计

数据按时间顺序采集、存储。查询则主要是查找某个时间点或某个时间段的状态数据,都是以时间为关键字的。所以,很自然的想到时间顺序存储,按时间和对象关键字建立索引。但这样做的问题在于,随着时间的推移记录的数据量会非常庞大,导致索引文件也越来越大,给索引文件的建立维护及查询效率都造成很大影响。同时,每一条记录都带有对象ID和产生时间也造占用大量存储空间。

2.1 分时间块存储数据,针对时间块建立索引。因对象产生数据频率固定,为了减少时间索引的数量,采用固定时间段长度分块存储,每块中包含本时间块内产生的所有数据。以时间块中的初始时间点为关键字,建立索引。因时间段的产生是按时间顺序的,所以本索引为顺序索引。如果索引文件太大,则通过更大的时间段,建立多级索引。这样大大减少了索引文件的大小。

2.2 对于块内数据,由于数据分别属于不同对象,所以应将相同对象数据放在一起。当同一对象的数据存储在一起,那么对象的ID也就只存储一次即可;又因同一对象产生状态数据的时间间隔固定,那么只需要存储本快中起始数据的时间点即可,其余数据按产生顺序依次存储。这样可以减少大量的存储空间

2.3 块内相同对象的数据存储在一起,为了方便对数据的定位,需要获知每个对象在数据块中的存储位置和长度。所以需要针对块内对象,按对象ID和块内偏移地址建立对象索引。为了处理方便,固定时间块的大小,那么在一个时间块中每个对象最大可产生状态数据量就是固定的(采集数据的频率固定)。所以,所有时间块中的对象存储结构可以是一样的,从而可以一开始就计算出每个设备的存储偏移量并建立一个相应的对象索引文件。

3 关键数据结构说明

数据存储主要有三类文件:存储数据的主数据文件;时间块的索引文件;时间块内的设备存储索引文件。

#define deviceSize //对象数量

#define TimeBlockSize //一个时间块大小

3.1 主数据文件mainData.data,以时间块为存储单位存储数据。每当有数据要存储,如果需要添加新时间块,主数据文件则以TimeBlockSize为单位进行扩容。每个时间块中存储了所有对象在本时间块内产生的状态数据,每个对象的数据结构如下:

struct deviceTimeStruct {

long beginTime;//在本时间块内本对象产生第一个数据的起始时间

long realNum;//按采集频率不间断采集的状态数据的数量。

Element * element;//实际采集的数据

}

如果设备因故障或其他原因暂停后又重启,那么状态数据是不连续的,此时需要创建新的deviceTimeStruct来存储采集到的状态数据。

3.2 时间块索引文件TimblockIndext.inx结构

struct TimeBlockIndext {

long TimeIndextElementNum;//索引块的数量,由数据的时间跨度决定

long realuseNum;//实际存储块数量,用于计算主文件扩容时新块的起始位置

TimeIndextElement * timeElement;//具体索引记录

}

struct TimeIndextElement{ //索引记录结构

bool flage;//标志位,true表示本时间块启用,false表示本时间块未启用

long offsetAddress;//本时间块在数据文件中的偏移地址

}

本索引文件按时间顺序建立,所以自然想到可以按二分查找的方法进行查询。但是因为索引文件存储在外存,直接用二分查找会产生大量的读外存操作会耗费大量时间。因此借鉴了B树的做法,每当找到一个中间点时,不是仅读取一个数据,而是读取连续的多个数据进内存进行判断。这样即大大减少了查找层次又利用的二分查找的高效。

3.3 时间块内对象存储位置索引文件DeviceIndext.inx结构

struct DeviceIndext {

long lastOffsetAddress;//增加新对象时在数据库中偏移量的位置

deviceIndetElemen* devElement;//具体索引记录。

}

struct deviceIndElemen {//索引记录结构

int deviceID;//对象的编号

int rate;//对象产生数据的频率

long offsetAddress;//本对象数据在时间块中存储的偏移地址

}

4 主要操作实现方法

4.1 存储操作实现

数据的到来基本是按时间顺序的,但是数据所属的对象是没有规律的。针对这种特点,为了提高效率,减少访问外存的时间,在设计时我们使用了缓存的方法。以一个时间块为单位,在内存中形成一个时间块的映射,随着数据的产生,将属于本快中的数据填入其中。等到一个时间块结束时,启动块写进程来将缓冲块中数据写入外部文件,其中块写进程的主要流程如下:

(1)读取缓存块当前存储数据所属的时间段的起始时间

(2)计算缓冲块所对应的数据块的块号

(3)根据块号在时间块索引文件中查询相应的块记录,如果相应的块已经创建则转到(7),否则转到(4)

(4)创建新数据块,首先计算扩充主数据文件一个时间块大小的空间,记录起始偏移位置。

(5)添加索引记录,修改时间块索引文件,添加一个记录项(根据块号和索引记录的长度直接计算添加的位置)将上一步中的偏移地址记录其中。

(6)从时间块索引文件中读取本块在主数据文件中的偏移位置

(7)根据偏移位置,打开主数据文件并定位偏移处。

(8)将缓存区中的数据,写入数据文件。结束

4.2 查询操作实现

因为本存储结构的设计根本思想是将每个数据存储位置都提前进行设计,所以查找也就变成了计算其存储位置。过程可简化为如下步骤:

(1)根据查找数据的起始时间计算所在的数据块的块号。(起始时间/数据块长度)

(2)根据数据块号,从时间块索引中查找数据块的偏移地址

(3)根据对象编号计算出其数据在数据块中的偏移地址

(4)两个偏移地址相加即为数据所属对象存储的起始位置

(5)根据产生数据频率和本对象存储第一个数据的时间计算查找数据是本段中存储的第几个数据,从而计算出偏移地址

(6)根据偏移地址,读取数据。结束

5 总结

这种时间和对象二维结构的设计,充分利用了对象数据产生有固定频率特性,减少了大量存储空间;结构固定,使用预分配空间的方式,建立二维索引,提高了查询效率。但是,固定结构也必然存在着不够灵活的问题。这些问题可以通过增加辅助存储空间和存储信息的方法解决。另外可以使用缓存、多进程并行操作等技术进一步提高系统效率。

参考文献:

[1]彭秀萍,刘亚锋.选择数据结构和存储结构的一般原则研究[J].成都大学学报(自然科学版),2007(3).

[2]王振东.铁路调度指挥系统中日志数据库的设计与优化[D].中国铁道科学研究院,2011.

[3]刘纯悦,葛海通,严晓浪.面向视频处理的高效二维流存储系统[J].江南大学学报(自然科学版),2008(1).

[4]丁治明.一种海量传感器数据存储与查询方法[P].CN201210093419.7,2012(8).

作者简介:张青(1976-),男,山东泰安市人,山东科技大学软件工程硕士,讲师,研究方向:软件工程。

作者单位:泰山职业技术学院 信息工程系,山东泰安 271001

转载请注明出处学文网 » 一种多对象时间序列数据存储设计

学习

广州生活垃圾填埋场封场后土地利用初探

阅读(205)

本文为您介绍广州生活垃圾填埋场封场后土地利用初探,内容包括广州垃圾填埋场修复流程,广州垃圾填埋场分布黄埔区。以广州市现有封场填埋场为研究对象,根据填埋场现实条件,分析了封场后填埋场的土地利用方向,为其发挥最大土地价值提供依据。

学习

发动机螺栓连接及拧紧工具应用技术

阅读(40)

本文为您介绍发动机螺栓连接及拧紧工具应用技术,内容包括发动机重要螺栓拧紧工艺,螺栓软连接拧紧策略。在工业生产尤其是汽车发动机当中,广泛运用了螺纹连接,在每一台发动机当中,螺纹紧固件的数量往往在一千到两千件,而品种数量也常常多达一

学习

患者使用泰能致严重不良反应1例

阅读(98)

本文为您介绍患者使用泰能致严重不良反应1例,内容包括泰能不良反应发热,泰能粉针不良反应。1病例资料患者女,28岁,因“乏力、尿黄进行性加重7d,神志欠清1d”入院。体格检查:体温36.8℃,脉搏120次/min,血压133/77mmHg。神志欠清,呼之能应,对答部

学习

“云安模式”能走多远?

阅读(39)

“全国最富的地方在广东,最穷的地方也在广东,到现在这个发展阶段,最穷的地方还在广东,这是广东之耻,是先富地区之耻。”2010年3月,在河源调研时就尖锐地指出广东区域发展不平衡的现状。2009年,人均生产总值珠三角地区为67321元,而东西两翼和粤北

学习

关于春的成语范文精选

阅读(35)

本文为您介绍关于春的成语范文精选,内容包括写春的成语加句子,写关于春的成语十个。关于春的成语篇1关键词:Sapir-Whorf假说;语言;文化;思维一、Sapir-Whorf假说Sapir认为在语言和文化之间有某种关联,而且能表明这种关联的证据体现在词汇上。

学习

违法所得没收程序的证明

阅读(70)

本文为您介绍违法所得没收程序的证明,内容包括没收财产上缴国库去哪开证明,没收违法所得清单填写规范。根据新《刑事诉讼法》和"两高"的司法解释的规定,并没有对没收程序的举证责任作明确规定,只规定没收申请人需要提供与犯罪事实、违法所

学习

春天散发出什么样的气息作文400字

阅读(32)

本文为您介绍春天散发出什么样的气息作文400字,内容包括春天的气息作文400字,我和春天有个约会400字作文怎么写。我父亲到集体农庄干活去了。妈妈说:等闻到春天的气息时,咱俩也去。可我又不知道,春天能散发出什么样的气息。去年的春天是什

学习

孙悟空的奴性

阅读(30)

曾看到网上有人讨论,孙悟空最好的朋友是谁?是观音,还是东海龙王?是哪吒,还是太白金星?呵,我觉得与孙悟空谈朋友,很让人为难。当然孙悟空是个热闹人,在花果山的时候便四处交游,结拜了以牛魔王为首的七个兄弟,后来到天上称圣去,也是“见三清,称个‘老’

学习

浅谈压实度试验中超尺寸颗粒的处理方法

阅读(32)

本文为您介绍浅谈压实度试验中超尺寸颗粒的处理方法,内容包括压实度的检测方法与评定标准,压实度试验过程注意事项有哪些。路基压实度试验中超尺寸颗粒的处理方法路基现场干密度与室内最大干密度之比,得到路基压实度。但室内材料与现场填

学习

一直很安静作文600字

阅读(28)

本文为您介绍一直很安静作文600字,内容包括那一刻很安静作文600字简单,我真想安静600字。空荡的街景,想找个人诉说心情。做这种决定,是忧伤与我为邻。我们的友谊,像你路过的风景,一直在进行,脚步却从来不会为我而停。给我的寂寞,一直很安静,来

学习

访北京大学人民医院信息中心主任刘帆

阅读(42)

医卫行业信息化建设的最关键问题不在技术,而在思路。北京大学人民医院(以下简称“人民医院”)大门外,仍然人满为患。与三年前相比,这家医院没有扩大地盘,没有增加床位,没有延长工作时间,但每天就诊的病人却多了近一倍――从4000余人增加到7000人

学习

融合通信的未来

阅读(33)

本文为您介绍融合通信的未来,内容包括融合通信业务是什么,融合通信未来发展趋势。21CBR:过去10年,消费通信领域的变化是颠覆性的,在企业通信领域产生了怎样的变化?GaryBarnett:10年前,一般都是企业首次采用新技术,再慢慢扩展至消费级市场,比如,雇

学习

“咸与维新”中“与”的读音与释义

阅读(36)

本文为您介绍“咸与维新”中“与”的读音与释义,内容包括咸与维新中与的正确解释是,咸与维新中与的意思。高中语文所选鲁迅作品中出现的“咸与维新”一词中的“与”字,有读者反映教学中有争议:有人认为应当读yǔ,是“准许、允许”的意思

学习

不要总拿互联网说事儿

阅读(37)

“不要总拿互联网说事儿了,我们现在面对的很多问题都不是互联网带来的。”2012年,褚橙被本来生活网发现,继而在互联网上引爆,变得家喻户晓。是互联网成就了褚橙么?黄铁鹰以为恰恰相反――其实是褚橙成就了本来生活网。为此,黄铁鹰还摆出数据:20

学习

货币时间价值与时间货币价值概念辨析

阅读(42)

本文为您介绍货币时间价值与时间货币价值概念辨析,内容包括怎样理解货币时间价值的概念,货币时间价值的概念及计算。摘要:本文对货币时间价值和时间货币价值概念进行了辨析,前者主要体现货币资金在财富积累过程中所起作用,后者主要体现

学习

Teambition:帮助用户在工作时间贡献更多价值

阅读(49)

本文为您介绍Teambition:帮助用户在工作时间贡献更多价值,内容包括teambition管理,teambition资源管理。档案:企业名称:上海汇翼信息科技有限公司产品形态:基于云服务的协作化项目管理平台CEO:齐俊元成立时间:2011年产品:Teambition产品来历:因

学习

2017全国寒假放假时间安排表一览

阅读(73)

本文为您介绍2017全国寒假放假时间安排表一览,内容包括2018寒假放假时间全国,小学寒假放假安排2017。寒假将至,是指冬季1-2月期间的假期,下面是特意准备的2017全国寒假放假时间安排表一览,供各位阅读,希望内容对您有帮助。更多精彩的内容更

学习

《尔雅.释乐》“徒序列”新解

阅读(29)

对《释乐》“徒鼓瑟谓之步,徒吹谓之和,徒歌谓之谣,徒击鼓谓之号,徒鼓钟谓之修,徒鼓磬谓之密”的理解,前辈学人多持这样一种观点:古人认为作乐需八音克谐,即所谓“非歌不弦,非弦不歌”,不歌而弹或不弹而歌则作为“异体”收录在“释乐”中。郭璞最先

学习

激起采访对象的谈话欲望

阅读(29)

本文为您介绍激起采访对象的谈话欲望,内容包括采访对象资料的收集,采访对象的故事。[编者按]本刊2000年曾发表睿之所撰介绍著名学者、外交家传记作家宗道一先生的《宗道一:传记文坛的“黑马”》一文。嗣后又相继刊出了宗道一的《真假杨公

学习

计算内浇口截面积和浇注时间的简明方法

阅读(26)

本文为您介绍计算内浇口截面积和浇注时间的简明方法,内容包括浇口流速计算公式,内浇道断面尺寸计算公式。【摘要】生产钻镗床铸铁件巳有几十年的历史,在长期生产实践中,我们体会到为了获得质量好的铸件,必须控制许多工艺因素,其中正确的浇注

学习

以《孔雀东南飞》为比较对象来看渡边淳一作品中的积极殉情

阅读(35)

本文为您介绍以《孔雀东南飞》为比较对象来看渡边淳一作品中的积极殉情,内容包括渡边淳一源氏物语,渡边淳一樱花树下结局。日本作家渡边淳一的两部代表作《失乐园》中,男女主人公最终选择殉情来实现爱的完美。本文主要以中国汉乐府诗《孔

学习

科研必须追求时间与速度

阅读(25)

本文为您介绍科研必须追求时间与速度,内容包括科研公式规范,科研论文中的公式。陈晔光:1996年在美国爱因斯坦医学院获博士学位,2000年~2002年任美国加州大学河边分校助理教授,现为清华大学“长江学者”特聘教授,生物科学与技术系博士生导师,中