CN103488727B - 基于周期对数的二维时序数据存储和查询方法 - Google Patents
基于周期对数的二维时序数据存储和查询方法 Download PDFInfo
- Publication number
- CN103488727B CN103488727B CN201310423324.1A CN201310423324A CN103488727B CN 103488727 B CN103488727 B CN 103488727B CN 201310423324 A CN201310423324 A CN 201310423324A CN 103488727 B CN103488727 B CN 103488727B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- node
- storage
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于周期对数的二维时序数据存储和查询方法,主要特点如下:(1)多级目录式结构;(2)将周期取对数作为索引;(3)按起始结束时间进行分块。本发明能够实现大量数据的分块存储,在使用较小内存的情况下仍能正常工作,并且此结构在两个维度上具有很高的存储和查询效率,为大数据提供了一种新型的快速存储和查询方法。
Description
技术领域
本发明涉及一种基于周期对数的二维时序数据存储和查询方法,适用于时序数据存储和查询技术领域。
背景技术
二维时序数据主要来自于一类按照时间周期返回数据的传感器,这类传感器会被安装在需要实时监测的设备上,比如仪表盘、锅炉等,通过传感器传回监测设备的属性数据,比如某一时刻的温度、锅炉的压力等,系统可以完整的记录下设备的整个运行状况,在设备出现问题时可以通过历史记录进行问题分析和问题定位。当前的应用发展趋势表明,被监测个体的数目正在迅速增长,同时随着技术的进步以及应用的需求,数据回传的周期也越来越短。对于大量二维时序数据,要进行两个维度的快速存储和查询,传统的朴素方法在数据量激增的时候,在某一维度上的查询将进行很多I/O操作,效率非常低。由于时序数据量通常非常之大,为每个数据都建立索引空间很不现实,为此,我们设计一种基于周期对数的二维数据存储方法,建立索引,提高查询效率。
发明内容
发明目的:针对现有技术中存在的问题,本发明提供一种基于周期对数的二维时序数据存储和查询方法,通过设计基于周期对数的数据存储结构,建立索引,实现对时序数据的二个维度的插入与查询功能。为了便于说明,此处说明一下应用背景:有若干个设备,分别按一定周期产生数据。查询某一设备一段时间内的数据称为批量查询,查询某一时间点,一批设备的数据称为断面查询;批量提交和断面提交即为对应的插入操作。
技术方案:一种基于周期对数的二维时序数据存储和查询方法,采用分块存储,其主要存储特点如下:
(1)采用多级目录结构:最底层为一个数据块,多个数据块构成一个节点,多个节点串成一条链;
(2)每条链有个唯一参数t,只存储周期在[2t,2t+1)上的数据;
(3)在参数为t的链上的节点有个唯一的参数i,只存储周期在[(i-1)*I*2t+1,i*I*2t+1)上的数据(其中I为常数)。
本发明采用上述技术方案,具有以下有益效果:通过设计基于周期对数的数据存储结构,建立索引,能够实现大量数据的分块存储,在使用较小内存的情况下仍能正常工作,并且此结构在两个维度上具有很高的存储和查询效率。
附图说明
图1是数据存储结构图;
图2是索引结构图;
图3是批量查询算法流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
基于周期对数的二维时序数据存储和查询方法,主要步骤如下:
1、设计数据存储结构
我们设计的数据存储结构如图1所示:
图中每一个小长方体代表一个数据块,存储数据,S、F代表每个数据块的开始时间和终止时间;每三个叠在一起的长方体代表一个数据块节点(并不代表每个数据块节点只有三个数据块,可以有任意个);每个横排的多个数据块节点为一条数据链,每条链都有不同的时间参数T,同一条链上的时间参数相同,多条链组成一个数据表。
设计过程可以从下述的几个方面来说明:
(1)数据块的设计
数据块的大小:数据块不应太小,否则查询数据量很大时会有很多IO操作,对于PC来说,参考大小为64M。
存储时间的限制:因为每个数据块的大小应该是事先固定的,所以每个数据块必须有规定的时间范围。假设时间下界为s,时间上界为f,则数据块存储的是某一设备在时间段[s,f]内的数据。
存储设备的限制:每个设备的数据都有固定的时间间隔,在同一个节点中应该尽量避免同时存储两个时间间隔相差很大的设备,否则会导致在某些情况下,对于大周期设备的批量查询,会跨越非常多的文件(块),这是不希望看到的。
为了解决这一问题,我们将时间间隔之比小于等于2的设备存储在同一数据块中,而为了使得设备的时间间隔之比小于等于2,我们为每条链(见下)增加了一个时间参数t,使每条链只存储时间周期在[2t,2t+1)内的设备。
(2)数据块节点的设计
由于数据量很大,一个数据块64M可能不能存储所有满足时间周期在[2t,2t+1)内的设备数据,需要多个数据块来存储,我们将所有时间参数t相同的数据块定义为一个数据块节点。为了保证节点的连续性,引进新的参数i,参数i代表数据块节点处于第几个时间段,引进参数I为数据块宽度,那么,对于数据链上第i个节点存储设备的时间范围为[(i-1)*I*2t+1,i*I*2t+1),在PC上,I的参考值为10240。
通过上面的分析,可知每个数据块节点中存储的设备数据的周期都在[2t,2t+1)之间,并且第i个节点存储的是设备在时间段[(i-1)*I*2t+1,i*I*2t+1)内的数据。并且,各个节点中每个数据块的时间参数和时间上下界是相同的。
(3)数据链的设计
每个数据块节点只存储了设备在时间段[s,f)内的数据,这些数据只是每个设备数据的一部分,所以要存储设备的所有数据就要将具有同一时间参数t而不同时间段的数据块节点组成一条链,定义为一个数据链。
每个数据链存储的是设备数据的周期在[2t,2t+1)之间的所有设备的数据,包含时间参数t和链与数据块节点之间的索引关系。
(4)整个数据表的设计
每条数据链存储的是设备数据的周期在[2t,2t+1)之间的所有设备的数据,所以将具有不同时间参数t的数据链组成一个表,这个表存储了每个设备的所有数据,将这个表定义为数据表。
2、设计索引
针对上面所描述的数据存储结构,我们设计的索引如图2所示。
图中的Table代表整个数据表,Chain代表上面所提到的数据链,一个数据表Table是由若干个数据链组成的。数据链Chain包含两个参数:Node和t,Node代表数据块节点,一个数据链是由若干个数据块节点Node组成的;t代表时间参数,在存储结构的设计中已经提到过,数据块节点的存储对设备的周期有一定的限制,只存储时间周期在[2t,2t+1)内的设备。数据块节点Node包含四个参数:Block、i、t和last,Block代表一个数据块,一个数据块节点是由若干个数据块Block组成的;参数i用于和参数t共同决定数据块存储数据的起始时间和终止时间,第i个节点存储设备的时间范围为[(i-1)*I*2t+1,i*I*2t+1);t和数据块节点中的t含义是相同的;last代表当前活跃的块,在写入数据操作中把新添加的数据存放在活跃块里。数据块Block包含三个参数:Item、cur和filename。Item代表数据块中存储的设备信息,一个数据块中存储着多个设备,所以数据块Block是由若干个Item组成的;cur代表当前数据大小;filename代表所要查询的设备存储的文件名。Item包含三个参数:offset、size和s,offset代表数据的地址偏移量;size代表本块中存储设备个数最大值;s代表本数据块中存储设备的开始时间。
3、抽象数据结构描述
根据索引的设计,我们可以进一步定义数据的抽象结构,如下:
(1)数据表的抽象数据结构
定义数据表为Table,其数据类型如下所示:
Table
map<int,Chain>
map是STL中提供的关联容器,键-值的集合。在数据表Table中,map<int,Chain>表示可以根据时间参数t找到相应的数据链。
(2)数据链的抽象数据结构
定义数据链为Chain,其数据类型如下所示:
Chain
t
map<int,Node>M;
在数据链Chain中,时间参数t表示每条链中只能存储时间周期在[2t,2t+1)内的设备数据,数据链中的时间参数t也是这条链中的所有数据块节点和数据块的时间参数,参数t的数据类型是int型。map<int,Node>M表示可以根据参数i找到相应的节点。
(3)数据块节点的抽象数据结构
定义数据块节点为Node,其数据类型如下所示:
在数据块节点Node中,参数i和时间参数t共同决定数据块节点的起始时间和终止时间,i和t的数据类型均为unsigned int。last代表当前活跃的块,数据类型为int型。map<int,Block*>M表示可以根据查询时间找到相应的数据块指针。
(4)数据块的抽象数据结构
1)定义数据块为Block,其数据类型如下所示:
在Block数据块中,cur表示当前数据大小,数据类型为unsigned int。filename表示所要查询的设备存储的文件名,数据类型为char。map<int,Item>M表示可以根据设备号找到相应的数据块中存储的设备。
2)定义数据块中存储的设备信息为Item,其数据类型如下所示:
在数据块中存储的设备Item中,offset记录数据的地址偏移量,数据类型为unsigned int。size代表本块中存储设备个数最大值,数据类型为unsigned int。s表示本数据块中存储设备的开始时间,数据类型为unsigned long long。
4、实现二维数据的批量存储
将设备周期以2为底取对数向下取整计算其t值,即根据t值找到相对应的链(Chain),若找不到则新创建一个。根据起始时间找到对应的节点(Node),若没有则再创建一新节点,新节点包括一个块(Block),一个块包括一个项(Item),第一个项保证其大小为I。找到对应节点后,根据设备ID找到对应块,若没有则在当前活跃的块里插入一项,并将此设备ID映射到当前活跃块,若当前活跃块已满,新建一个块作为当前活跃块。找到对应块后,若有此项,则在此项里进行插入,否则新建一个项进行插入。
5、实现二维数据的批量查询
根据上述的抽象数据类型,对批量查询算法进行如下设计:首先根据设备id找到设备周期,然后对周期以2为底取对数得到t,根据t找到其所对应的链,然后根据链的开始时间找到链上所对应的节点,如果找到的节点的结束时间小于结束时间,就根据设备id找到节点里面的数据块,从数据块里得到数据信息,从文件中读取数据,指针指向下一节点,再根据链的开始时间找到对应节点,循环执行直到找出一段时间内的所有数据。算法流程图如图3所示。
6、实现二维数据的断面存储
在读取数据进内存时,按批量提交的格式进行预处理,然后按照批量存储的过程进行插入。
7、实现二维数据的断面查询
首先对存储信息进行预处理,建立数据块指针和设备号的映射关系,在建立映射关系的过程中,设备号要在断面查询设备号的范围内。然后在建立的映射关系中,逐个扫描数据块指针,读取对应的设备信息并存储。
Claims (4)
1.一种基于周期对数的二维时序数据存储和查询方法,其特征在于,包括如下步骤:
设计数据存储结构;
设计索引;
对抽象数据结构描述;
实现二维数据的批量存储;
实现二维数据的批量查询;
实现二维数据的断面存储;
实现二维数据的断面查询;
其中,数据存储结构的设计为,
(1)采用多级目录结构:最底层为一个用于存储数据的数据块,多个数据块构成一个节点,多个节点串成一条链;
(2)每条链有个唯一参数t,只存储周期在[2t,2t+1)上的数据;t代表时间参数;
在参数为t的链上的节点有个唯一的参数i,只存储周期在[(i-1)*I*2t+1,i*I*2t+1)上的数据,其中I为常数,i表示一条链上的第i个节点;
设计索引具体为:
用Table代表整个数据表,Chain代表数据链,一个数据表Table是由若干个数据链组成的;数据链Chain包含两个参数:Node和t,Node代表数据块节点,一个数据链是由若干个数据块节点Node组成的;t代表时间参数,只存储时间周期在[2t,2t+1)内的设备;数据块节点Node包含四个参数:Block、i、t和last,Block代表一个数据块,一个数据块节点是由若干个数据块Block组成的;参数i用于和参数t共同决定数据块存储数据的起始时间和终止时间,第i个节点存储设备的时间范围为[(i-1)*I*2t+1,i*I*2t+1);t和数据块节点中的t含义是相同的;last代表当前活跃的块,在写入数据操作中把新添加的数据存放在活跃块里;数据块Block包含三个参数:Item、cur和filename,Item代表数据块中存储的设备信息,一个数据块中存储着多个设备,所以数据块Block是由若干个Item组成的;cur代表当前数据大小;filename代表所要查询的设备存储的文件名;Item包含三个参数:offset、size和s,offset代表数据的地址偏移量;size代表本块中存储设备个数最大值;s代表本数据块中存储设备的开始时间。
2.如权利要求1所述的基于周期对数的二维时序数据存储和查询方法,其特征在于:实现二维数据的批量存储具体为:
将设备周期以2为底取对数向下取整计算其t值,即根据t值找到相对应的链Chain,若找不到则新创建一个;根据起始时间找到对应的节点Node,若没有则再创建一新节点,新节点包括一个块Block,一个块包括一个Item,第一个项保证其大小为I;找到对应节点后,根据设备ID找到对应块,若没有则在当前活跃的块里插入一项,并将此设备ID映射到当前活跃块,若当前活跃块已满,新建一个块作为当前活跃块;找到对应块后,若有此项,则在此项里进行插入,否则新建一个项进行插入。
3.如权利要求2所述的基于周期对数的二维时序数据存储和查询方法,其特征在于,实现二维数据的批量查询具体为:
根据抽象数据类型,对批量查询算法进行如下设计:首先根据设备id找到设备周期,然后对周期以2为底取对数得到t,根据t找到其所对应的链,然后根据链的开始时间找到链上所对应的节点,如果找到的节点的结束时间小于结束时间,就根据设备id找到节点里面的数据块,从数据块里得到数据信息,从文件中读取数据,指针指向下一节点,再根据链的开始时间找到对应节点,循环执行直到找出一段时间内的所有数据。
4.如权利要求3所述的基于周期对数的二维时序数据存储和查询方法,其特征在于,实现二维数据的断面查询具体为:
首先对存储信息进行预处理,建立数据块指针和设备号的映射关系,在建立映射关系的过程中,设备号要在断面查询设备号的范围内;然后在建立的映射关系中,逐个扫描数据块指针,读取对应的设备信息并存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310423324.1A CN103488727B (zh) | 2013-09-16 | 2013-09-16 | 基于周期对数的二维时序数据存储和查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310423324.1A CN103488727B (zh) | 2013-09-16 | 2013-09-16 | 基于周期对数的二维时序数据存储和查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103488727A CN103488727A (zh) | 2014-01-01 |
CN103488727B true CN103488727B (zh) | 2017-05-03 |
Family
ID=49828953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310423324.1A Expired - Fee Related CN103488727B (zh) | 2013-09-16 | 2013-09-16 | 基于周期对数的二维时序数据存储和查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103488727B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019160600A1 (en) * | 2018-02-14 | 2019-08-22 | Hrl Laboratories, Llc | System and method for side-channel based detection of cyber-attack |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239447A (zh) * | 2014-09-01 | 2014-12-24 | 江苏瑞中数据股份有限公司 | 电网时序大数据存储方法 |
CN105353994B (zh) * | 2015-12-11 | 2019-10-22 | 上海斐讯数据通信技术有限公司 | 三维结构的数据存储方法及装置、查询方法及装置 |
CN107391600A (zh) * | 2017-06-30 | 2017-11-24 | 北京百度网讯科技有限公司 | 用于在内存中存取时序数据的方法和装置 |
CN110019352B (zh) * | 2017-09-14 | 2021-09-03 | 北京京东尚科信息技术有限公司 | 用于存储数据的方法和装置 |
US11256806B2 (en) | 2018-02-14 | 2022-02-22 | Hrl Laboratories, Llc | System and method for cyber attack detection based on rapid unsupervised recognition of recurring signal patterns |
CN111274259A (zh) * | 2020-02-16 | 2020-06-12 | 西安奥卡云数据科技有限公司 | 一种分布式存储系统中存储节点的数据更新方法 |
CN112506918B (zh) * | 2020-11-03 | 2024-06-04 | 深圳市宏电技术股份有限公司 | 数据存取方法、终端及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102598019A (zh) * | 2009-09-09 | 2012-07-18 | 弗森-艾奥公司 | 用于分配存储的设备、系统和方法 |
CN102859517A (zh) * | 2010-05-14 | 2013-01-02 | 株式会社日立制作所 | 时序数据管理装置、系统、方法以及程序 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080120346A1 (en) * | 2006-11-22 | 2008-05-22 | Anindya Neogi | Purging of stored timeseries data |
US9323775B2 (en) * | 2010-06-19 | 2016-04-26 | Mapr Technologies, Inc. | Map-reduce ready distributed file system |
-
2013
- 2013-09-16 CN CN201310423324.1A patent/CN103488727B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102598019A (zh) * | 2009-09-09 | 2012-07-18 | 弗森-艾奥公司 | 用于分配存储的设备、系统和方法 |
CN102859517A (zh) * | 2010-05-14 | 2013-01-02 | 株式会社日立制作所 | 时序数据管理装置、系统、方法以及程序 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019160600A1 (en) * | 2018-02-14 | 2019-08-22 | Hrl Laboratories, Llc | System and method for side-channel based detection of cyber-attack |
Also Published As
Publication number | Publication date |
---|---|
CN103488727A (zh) | 2014-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103488727B (zh) | 基于周期对数的二维时序数据存储和查询方法 | |
CN110413611B (zh) | 数据存储、查询方法及装置 | |
CN105447174B (zh) | 一种报表生成方法及装置 | |
US10496523B2 (en) | Sequential access storage and data de-duplication | |
CN103617232B (zh) | 一种针对HBase表的分页查询方法 | |
CN108205577B (zh) | 一种数组构建、数组查询的方法、装置及电子设备 | |
CN108932236A (zh) | 一种文件管理方法、过期文件删除方法及装置 | |
CN108140050B (zh) | 一种使用布隆过滤器过滤文件的方法及装置 | |
CN106156070B (zh) | 一种查询方法、文件合并方法与相关装置 | |
CN104090962A (zh) | 面向海量分布式数据库的嵌套查询方法 | |
WO2010062554A2 (en) | Index compression in databases | |
CN110362549A (zh) | 日志存储检索方法、电子装置及计算机设备 | |
CN103914483B (zh) | 文件存储方法、装置及文件读取方法、装置 | |
CN103514291A (zh) | 一种文本中树形结构数据的显示方法 | |
CN103049473A (zh) | 一种数据查询方法及装置 | |
CN106326309A (zh) | 一种数据查询方法和装置 | |
CN108021702A (zh) | 基于LSM-tree的分级存储方法、装置、OLAP数据库系统及介质 | |
CN103002061A (zh) | 一种长域名与短域名互相转化的方法及装置 | |
CN105117442A (zh) | 一种基于概率的大数据查询方法 | |
CN104090954B (zh) | 只读表的连接方法和只读表的连接系统 | |
CN104346347A (zh) | 数据存储方法、装置、服务器及系统 | |
CN111651372A (zh) | 一种基于哈希查找的Flash检索方法及存储介质 | |
CN104615459A (zh) | 一种MoCA设备参数配置方法及装置 | |
CN105095457B (zh) | 历史数据存储管理方法 | |
CN108228606A (zh) | 数据的写入方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170503 Termination date: 20200916 |
|
CF01 | Termination of patent right due to non-payment of annual fee |