- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一种多对象时间序列数据存储设计
一种多对象时间序列数据存储设计
摘 要:本文讨论了在现有的数据存储和索引技术的基础上,结合固定周期产生状态数据设备的检测特点定义了一种存储结构和索引结构,以获得更高的空间利用率和查询效率。首先深入分析状态数据所具有的时间和设备二维性并定义了相应的二维存储结构,分别针对每一维建立了索引,然后分析了基于此结构的存储和查询方法。
关键词:索引;二维存储;存储结构
中图分类号: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.da
文档评论(0)