二维数据的存储系统、存储方法和查询方法与流程

文档序号:12121304阅读:511来源:国知局
二维数据的存储系统、存储方法和查询方法与流程

本发明属于数字数据处理技术领域,涉及一种数据存储和查询方法,具体的说,涉及一种二维数据的存储和查询方法。



背景技术:

本发明所述二维数据,是指包含时间信息的二维数据,指来自于按照时间周期返回数据的传感器的数据,即二维数据是指一个测点某个时间点对应的数据,或者是一个时间点某个测点对应的数据。这类传感器通常被安装在需要实时检测的设备上,如:仪表盘、锅炉等,通过传感器传回检测设备的属性数据,如:某时刻的温度、压力、流量等数据。此类传感器通常按周期返回数据,完整的时间周期内的数据,可完整记录下设备的整个运行状况。

某一时刻,传感器反馈的二维数据包括时间维度、测点维度信息以及测量数据值信息,现有技术中,二维数据通常以时间标识、测点标识以及测量数据值的格式存储,并在测点维度和时间维度上附加索引,以加快查询速度。在设备出现问题时可通过历史记录进行问题分析和问题定位。

当前,应用发展的趋势表明,被监测个体的数目正在迅速增长,同时,随着技术的进步以及应用的需求,要求在有具体需求时,数据的存储和查询均快速做出反应,要求数据回传的周期越来越短,同时对存储和查询数据的效率要求也越来越高。



技术实现要素:

本发明的目的在于针对现有技术的不足,提供一种占用资源少、查询速度快、存储效率高的二维数据的存储系统、存储方法,以及二维数据的查询方法。

本发明的技术方案为:二维数据的存储系统,包括用于接收并储存各个测点测量数据的数据存储设备,所述数据存储设备划分为元数据区和测量数据存储区;

所述元数据区用于存储测点属性及数据管理信息;

所述测点属性包括:测点号,用于表示各个测点的标识信息;开始测量时间,用于表示各个测点开始测量数据的时间;测量时间间隔,用于存储各个测点测量的时间周期;

所述数据管理信息包括:有效数据块数,用于表示存储各个测点数据的数据块数量;数据块位置,用于表示存储测点数据的数据块在数据存储设备上的存储位置;可存储的数据个数,用于表示单个数据块中存储数据量的上限;

每个测点对应其开始测量时间、测量时间间隔、有效数据块数;每个数据块对应其数据 块位置、可存储数据量;

所述测量数据区用于存放各测点测量数据,测点测量数据分数据块存储。

二维数据的存储方法,包括以下步骤:

采用测点号、开始测量时间、测量时间间隔、有效数据块数、数据块位置、可存储数据量为元素构建存储查询表;

为各个测点编号,记为测点号,作为测点的身份标识信息;记录每个测点对应的开始测量时间、测量时间间隔,将以上信息记入存储查询表内。

设置每个测点数据块可存储的数据量,并记入存储查询表内;

读取某一测点某时间段内的测量数据,以数据块的可存储数据量为标准将测量数据分成多个数据块,获得测点有效数据块个数,记入存储查询表内;同时将测量数据按数据块保存到测量数据区,获得数据块位置,记入存储查询表内。

二维数据的多维度查询方法,包括测点维度查询方法和时间维度查询方法,所述测点维度查询方法用于查询指定测点指定时间段的测量数据,所述时间维度查询方法用于查询指定时间多个测点的测量数据。

更进一步的:测点维度查询方法包括,指定待查询的测点号为a;指定查询时间段的开始时间为t1和结束时间为t2;查询元数据区,按测点号查找到a号测点的位置;查询存储查询表,获取a号测点的开始测量时间ta及测量时间间隔Δta;及测点a对应每个数据块可存储数据个数ma;计算开始数据序号L1及结束数据序号L2

根据数据块可存储数据个数ma计算L1号数据所在的数据块序号sa1及L2号数据所在的数据块序号sa2

结果整数部分表示L1号数据所在的数据块编号,余数部分表示L1号数据对应所在数据块中的序号;

结果整数部分表示L2号数据所在的数据块编号,余数部分表示L2号数据对应 所在数据块中的序号;

根据数据块对应的序号、数据块位置,在测量数据区中查找并读取该测点对应数据块中的数据。

更进一步的:时间维度的查询方法包括以下步骤:指定带查询时刻为T,指定待查询的测点号为b,查询存储查询表,获取b号测点的开始测量时间tb及测量时间间隔Δtb,及测点b对应每个数据块可存储数据个数mb;;计算测点b中T时刻对应的测量数据:

d表示T时刻,测点b中对应测量数据的序号;

结果整数部分表示T时刻测量数据所在的数据块编号,余数部分表示T时刻测量数据对应所在数据块中的序号;

根据数据块对应的序号、数据块位置,在测量数据区中查找并读取该测点对应数据块中的数据。

本发明的有益效果为:

本发明提供了一种新的二维数据存储方法。将存储设备分为元数据区和测量数据区,分别用于存储测点属性、数据管理属性和测量数据,与现有的索引方法相比,大大减少了测点和时间维度信息的存储,可根据保存在元数据区的信息,通过计算快速定位所要查询的测量数据,极大提高了数据的存储效率和查询速度。

采用本专利所实现的原型系统在实施示例上进行二维数据的存储和查询,存储效率在每秒数亿条数据,查询效率也在每秒亿条数据的数量级,在同样的硬件条件下,均大大优于目前流行的商用关系数据库系统。且内外存占用少,断面模式存储程序的内存占用不超过5M,批量模式存储程序的内存占用不超过1.5M,快速查询程序的内存占用不超过1M。一亿两千万条的测量数据的磁盘空间占用不到481M,平均每条数据占用的空间接近于4个字节(实施示例中单个测量数据值的存储长度),附加磁盘开销非常小。并且,由于批量存储和断面存储采用相同的数据格式存储,同一套查询程序就可查询两种模式生成的二维数据。

附图说明

图1为存储查询表结构示意图。

图2为本发明具体实施方式存储查询表结构示意图。

具体实施方式

以下将结合附图对本发明的具体实施方式进行进一步的描述。

二维数据的存储系统,包括用于接收并储存各个测点测量数据的数据存储设备,数据存储设备划分为元数据区和测量数据存储区。

具体的说,二维数据来源与工作系统中的数据测量点(检测测点),测点可为各种压力传感器、温度传感器等,其按一定数据测量周期反馈测量数据,其反馈的数据具有共同点:即数据都包括时间标识和测点标识信息,即包括时间和测点两个维度。工作系统中所有测量点测量的数据将存储到数据存储设备。

数据存储设备的元数据区用于存储测点属性信息及数据管理信息;

测点属性信息包括:测点号,用于表示各个测点的标识信息;开始测量时间,用于表示各个测点开始测量数据的时间;测量时间间隔,用于存储各个测点测量的时间周期。

其中,测点号为认为设定的编号,通常,一个工作系统中会包括多个测点,分别用于监控不同的设备或同一设备的不同属性。为了便于测点的管理,按顺序统一为测点编号,如:1号测点、2号测点、3号测点……n号测点。其中测点的开始测量时间和测量时间间隔为测点自身的属性,开始测量时间为测点设备启动测量的时间,可根据实际工况获取;测量时间间隔可通过测点自带的配置信息设置单元设置以上信息,并将每次新设置后的信息记入存储查询表,以更新存储查询表;若测点本身不具有配置信息设置单元,则测点测量时间间隔信息作为测点属性可直接获取。

数据管理信息包括:有效数据块数,用于表示存储各个测点数据的数据块数量;数据块位置,用于表示存储测点数据的数据块在数据存储设备上的存储位置;可存储的数据个数,用于表示单个数据块中存储数据量的上限。

具体的说,测点的测量数据将分数据块存储,对于同一测点,其每个数据块中存储的个数是相同的,即为数据块对应的可存储数据个数。但会有例外,即若所有的数据分存到数据块后,若数据量不足,其最后一个数据块存储的数据个数会少于数据块可存储的数据个数。而当将同一测点所有测量数据按可存储数据个数将所有数据都分配都数据块后,即获得了该测点对应的有效数据块数。

每个测点对应其开始测量时间、测量时间间隔、有效数据块数;每个数据块对应其数据块位置、可存储数据量。

测量数据区用于存放各测点测量数据,测点测量数据分数据块存储。将数据存储到测量数据区后,即获得每个数据块对应的数据块位置。

基于以上二维数据的存储方法,在进行二维数据的存储方法,包括以下步骤:

如图1所示,采用测点号、开始测量时间、测量时间间隔、有效数据块数、数据块位置、 可存储数据量为元素构建存储查询表。

为各个测点编号,记为测点号,作为测点的身份标识信息;记录每个测点对应的开始测量时间、测量时间间隔,将以上信息记入存储查询表内。为便于管理,为每个测点按1~n的顺序顺次编号;并通过测点设备属性的查询,结合实际工况,获取测点开始测量时间,测量时间间隔,对应测点号记入存储查询表内。

设置每个测点数据块可存储的数据量,并记入存储查询表内;

读取某一测点某时间段内的测量数据,以数据块的可存储数据量为标准将测量数据分成多个数据块,获得测点有效数据块个数,记入存储查询表内;同时将测量数据按数据块保存到测量数据区,获得数据块位置,记入存储查询表内。

数据存储的目的是为便于日后进行数据查询。

本实施例提供的二维数据的查询方法位二维数据的多维度查询方法,包括测点维度查询方法和时间维度查询方法。其中测点维度查询方法用于查询指定测点指定时间段的测量数据;时间维度查询方法用于查询指定时间多个测点的测量数据。

具体的说,测点维度查询方法包括,指定待查询的测点号为a;指定查询时间段的开始时间为t1和结束时间为t2;查询元数据区,按测点号查找到a号测点的位置;查询存储查询表,获取a号测点的开始测量时间ta及测量时间间隔Δta;及测点a对应每个数据块可存储数据个数ma;计算开始数据序号L1及结束数据序号L2

根据数据块可存储数据个数ma计算L1号数据所在的数据块序号sa1及L2号数据所在的数据块序号sa2

结果整数部分表示L1号数据所在的数据块编号,余数部分表示L1号数据对应所在数据块中的序号;

结果整数部分表示L2号数据所在的数据块编号,余数部分表示L2号数据对应所在数据块中的序号;

根据数据块对应的序号、数据块位置,在测量数据区中查找并读取该测点对应数据块中的数据。

如图2所示,结合具体数据实例,若查询第327号测点从时间989800ms到时间1019800ms时间段内的数据,具体查询方法如下:

查询出,第327号测点开始测量时间为第100ms,测量时间间隔为300ms,每个数据块可存储数据个数为1000个,则待查询测点数据区间的计算方法如下:

因此应查询测点的第3300个数据到第3400个数据区间的数据值。

商为3,余数为300;

商为3,余数为400;

根据数据区间3300-3400可计算出应查询测点数据块3中数据,根据测点的数据块位置信息将测点数据块3读入到数据缓冲区。

要查询的数据即数据块3中第300到第400个数据。从测量数据区读取数据,并存到数据缓存区。

具体的说:时间维度的查询方法包括以下步骤:指定带查询时刻为T,指定待查询的测点号为b,查询存储查询表,获取b号测点的开始测量时间tb及测量时间间隔Δtb,及测点b对应每个数据块可存储数据个数mb;;计算测点b中T时刻对应的测量数据:

d表示T时刻,测点b中对应测量数据的序号;

结果整数部分表示T时刻测量数据所在的数据块编号,余数部分表示T时刻测量数据对应所在数据块中的序号;

根据数据块对应的序号、数据块位置,在测量数据区中查找并读取该测点对应数据块中的数据。

依然如图2所示,结合具体数据实例,

查询时间点为24100的从测点6到测点9的数据。假设各个测点的开始测量时间均为100,各测点的测量时间间隔分别为200、300、400、500、100,每个数据块中均可存储1000个数据。

根据时间点计算各测点在该时间点对应测点的第几个数据:

测点6:(24100-100)/200+1=121

测点7:(24100-100)/300+1=81

测点8:(24100-100)/400+1=61

测点9:(24100-100)/500+1=49

相应的:

商为0,余数为121;

商为0,余数为81;

商为0,余数为61;

商为0,余数为49;

根据上述计算结果可计算出待查询数据所在的数据块,应读取测点6的数据块0中的第121个数据;应读取测点7的数据块0中的第81个数据;应读取测点8的数据块0中的第61个数据;应读取测点9的数据块0中的第49个数据。

再根据上述计算结果以及元数据区中的单位测量数据长度和数据块位置信息可计算出待查询数据在测量数据区的位置并读取。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1