CN103853499B - 一种多源数据存储和读取方法 - Google Patents

一种多源数据存储和读取方法 Download PDF

Info

Publication number
CN103853499B
CN103853499B CN201210506830.2A CN201210506830A CN103853499B CN 103853499 B CN103853499 B CN 103853499B CN 201210506830 A CN201210506830 A CN 201210506830A CN 103853499 B CN103853499 B CN 103853499B
Authority
CN
China
Prior art keywords
measuring point
data
group
storage
deployment object
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.)
Active
Application number
CN201210506830.2A
Other languages
English (en)
Other versions
CN103853499A (zh
Inventor
俞高宇
张晓华
梁俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Left Bank Investment Management Co ltd
Shanghai Kelu Software Co Ltd
Original Assignee
Shanghai Kelu Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Kelu Software Co Ltd filed Critical Shanghai Kelu Software Co Ltd
Priority to CN201210506830.2A priority Critical patent/CN103853499B/zh
Publication of CN103853499A publication Critical patent/CN103853499A/zh
Application granted granted Critical
Publication of CN103853499B publication Critical patent/CN103853499B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种多源数据存储和读取方法,通过划分部署对象组和内部组的方式,使得进行量测点数据存储/读取时能够快速找到存储数据所在的文件,从而加快了数据存储及读取速率;通过将量测点本地标识和其索引位置依次对应的方式,可以直接定位量测点索引的位置,无需对索引位置进行其他映射操作,从而进一步加快了数据存储速率;通过为量测点动态分配数据片的方式,使得存储空间得到了充分利用,不会造成存储空间的浪费。

Description

一种多源数据存储和读取方法
技术领域
本发明涉及一种数据存储和读取技术,尤其涉及一种多源数据存储和读取技术。
背景技术
对于电力、石油和连锁经营等大型企业,其分站或经营场所分布在全国、甚至全球各地,它们的每个分站或经营场所又包含许多的量测点,这些大型企业的数据中心,随时随刻都要对这些量测点产生的数据进行存储,需要的时候,还要从存储的众多数据中读取所需的数据。而这些工业数据有一个共同点:数据量比较大、数据来源比较广泛。通常,工业数据是各个量测点一段连续的量,其存储的数据都带有时间戳。工业数据具有明显的时间特性,其结构可以用VQT(Value、Quality、Timestamp,数据值、质量码、时间戳)来表示。同时工业数据是不断产生的,从而具有海量数据、以及来源广泛的特点。针对这些特点,怎样更快速地对数据进行存储和读取,而且有效地利用存储空间是需要亟待解决的问题。
在数据库中,索引策略决定数据库快速定位数据的效率,索引可以提高数据存储和查询的效率。
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。
高效的索引不仅取决于索引策略,还取决于数据的存储方式,以及待存储的数据的特性。对于数量大、来源范围广的工业数据,采用通用的存储和索引方式存在以下问题:
由于工业数据是随着时间推移逐渐产生、进行存储的,即不同的数据源(量测点)均是陆续不规律地生成数据;而在读取时,则都是以数据源(量测点)为单位、以时间为条件进行读取的,即通常会读取部分量测点在某一时间段内的数据,因此为了降低读取时检索的复杂度,传统的关系型数据库一般都是预先为每个量测点分配一较大的存储空间,在收到属于该量测点的数据时,将其存到对应空间。然而这种数据存储方式所需预留的存储空间极大,而每个量测点的数据量是不可预测的,在部分量测点没有数据需要存储、或存储数据比较少时,会造成存储空间的很大浪费。并且,在量测点的数量是成千上万、甚至更多的情况下,采用这种存储方式,所需要的索引时间依然较多,需要进一步改进。
发明内容
本发明主要解决的技术问题是提供一种多源数据存储及读取方法,使得在对数据量比较大、来源比较广泛的数据进行存储时,能够快速找到对应的存储文件进行存储,并且几乎不浪费存储空间;在读取所需数据时,能够在众多的存储文件中快速找到所要读取数据所在的存储文件和存储位置,对数据进行读取。
为了解决上述技术问题,本发明提供了一种多源数据存储方法,多源数据来自不同部署对象的不同量测点,包含以下步骤:
对部署对象进行分组,形成各部署对象组,并对各部署对象组包含的量测点进行划分,形成内部组;
为每个部署对象组的内部组中的各量测点分配唯一对应的本地标识;
每个部署对象组中的每个内部组包含一个或多个存储文件,存储文件包含文件头和文件体,文件体由固定大小、连续的数据片组成,该文件体中包含索引区和数据区,索引区中保存每个量测点在该存储文件中存储位置的索引;
在收到来自一部署对象辖下量测点的数据时,根据该量测点所属的部署对象组和内部组,找到该量测点对应的存储文件,根据该量测点的本地标识找到该量测点对应的存储位置索引,如果该索引表示当前未在数据区中为该量测点分配数据片、或所分配的数据片已存满,则在数据区中为该量测点分配一空白数据片,所分配的数据片与该数据区中已分配的数据片连续,将量测点数据存储在该新分配的数据片中;反之,则将量测点的数据存储在该索引指示的数据片的相应位置;
如果在存储过程中,当前数据片已存满,则为该量测点新分配一数据片进行存储,所分配的数据片与该数据区中已分配的数据片连续。
作为进一步改进,对部署对象进行分组,形成各部署对象组的方式为:根据各部署对象所包含的量测点数量,对各部署对象分组,将所包含量测点数量总和小于预设值的两个或以上部署对象分为一组,将其余的每个部署对象分别分为一组;
对各部署对象组包含的量测点进行划分,形成内部组的方式为:对各部署对象组进行组内划分,以预设值为界限,每达到预设值数量的量测点划分为一内部组,对应一组内标识,其余不足预设值数量的量测点划分为一内部组。
作为进一步改进,为每个部署对象组的内部组中的各量测点分配唯一对应的本地标识的步骤中,本地标识为连续的;
索引区中以本地标识为顺序,依次保存每个量测点在该存储文件中存储位置的索引;
根据该量测点的本地标识找到该量测点对应的存储位置索引的步骤中,由该量测点的本地标识和单个索引的长度直接定位该量测点对应的索引位置。
作为进一步改进,量测点在存储文件中存储位置的索引包含:该量测点在该存储文件中保存的第一条记录的指针和最后一条记录的指针;
将量测点的数据存储在该索引指示的数据片的相应位置的步骤中,根据最后一条记录的指针进行存储。
作为进一步改进,待存储的量测点数据包含:数据值、质量码、和时间戳;
数据片包含页面头和页面体,将量测点数据存储在数据片的步骤中,将量测点数据存储在数据片的页面体中;将量测点数据存储在数据片中的步骤之后,将该数据片中保存的数据的起始时间和结束时间存储在该数据片的页面头中。
作为进一步改进,页面头中还保存有本量测点对应的上一数据片的页面号和/或下一数据片的页面号。
作为进一步改进,各部署对象组中各内部组对应的存储文件的名称中包含该部署对象组和该内部组标识;
根据该量测点所属的部署对象组和内部组,找到该量测点对应的存储文件的步骤中,查找包含该部署对象组标识和该内部组标识名称的文件。
作为进一步改进,各部署对象组中各内部组对应的存储文件的名称中还包含:该存储文件所保存数据的起始时间和结束时间;
在部署对象组中内部组对应的存储文件存满时,为该内部组分配新的存储文件,新分配的存储文件的名称中同样包含该部署对象组和该内部组标识,以及所保存数据的起始时间和结束时间。
作为进一步改进,该方法还包含以下步骤:在部署对象新增量测点时,优先将新增的量测点分配到其所属部署对象组中已有的不足预设值数量的内部组,超出预设值数量的部分量测点,划分为该部署对象组中一新内部组,对应一新存储文件。
本发明还提供了一种多源数据读取方法,包含以下步骤:
在需要读取一个或多个部署对象中一个或多个量测点某一时间段的数据时,根据该部署对象所属的部署对象组、和该量测点所属的内部组,找到该部署对象组和该内部组对应的所有存储文件;
将待查找的时间段和存储文件名称中包含的起始时间和结束时间进行比较,选择相匹配的存储文件;
在匹配的存储文件中,根据该量测点的本地标识和单个索引长度定位该量测点对应的存储位置索引,找到该量测点对应的第一个数据片,根据数据片中保存的本量测点对应的上一数据片的页面号和/或下一数据片的页面号,确定该量测点对应的其他数据片;
将各数据片中保存的数据起始时间和结束时间信息与待查找的时间段相比较,读取所需的数据。
本发明实施方式与现有技术相比,主要区别及其效果在于:对于来自不同部署对象的不同量测点的多源数据,通过对部署对象进行分组,形成各部署对象组,并对各部署对象组包含的量测点进行划分,形成内部组;每个内部组包含一个或多个存储文件,其文件体由固定大小、连续的数据片组成,包含索引区和数据区,索引区中保存每个量测点在该存储文件中存储位置的索引;在收到来自一部署对象辖下量测点的数据时,根据该量测点所属的部署对象组和内部组,找到该量测点对应的存储文件,根据该量测点的本地标识找到该量测点对应的存储位置索引,如果该索引表示当前未在数据区中为该量测点分配数据片、或所分配的数据片已存满,则在数据区中为该量测点分配一空白数据片,所分配的数据片与该数据区中已分配的数据片连续,将量测点数据存储在该新分配的数据片中;反之,则将量测点的数据存储在该索引指示的数据片的相应位置;如果在存储过程中,当前数据片已存满,则为该量测点新分配一数据片进行存储,所分配的数据片与该数据区中已分配的数据片连续。本发明通过划分部署对象组和内部组的方式,使得进行量测点数据存储/读取时能够快速找到存储数据所在的文件,从而加快了数据存储及读取速率;通过将量测点本地标识和其索引位置依次对应的方式,可以直接定位量测点索引的位置,无需对索引位置进行其他映射操作,从而进一步加快了数据存储速率;通过为量测点动态分配数据片的方式,使得存储空间得到了充分利用,不会造成存储空间的浪费。
附图说明
图1是本发明第一实施方式中的一种多源数据存储方法的流程图;
图2是本发明第二实施方式中的一种多源数据读取方法的流程图;
图3是本发明第一实施方式中的存储文件的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明第一实施方式涉及一种多源数据存储方法,多源数据来自不同部署对象的不同量测点,其具体流程图如图1所示。
步骤101中,对部署对象进行分组,形成各部署对象组;具体方式为:根据各部署对象所包含的量测点数量,对各部署对象分组,将所包含量测点数量总和小于预设值的至少两个部署对象分为一组,将其余的每个部署对象分别分为一组;为这些部署对象组命名为:部署对象组1,部署对象组2,......
步骤102中,对各部署对象组包含的量测点进行划分,形成内部组;具体方式为:对各部署对象组进行组内划分,以预设值为界限,每达到预设值数量的量测点划分为一内部组,对应一组内标识,其余不足预设值数量的量测点划分为一内部组。为这些部署对象组中的内部组命名为:部署对象组1-内部组1,部署对象组1-内部组2,......,部署对象组2-内部组1,部署对象组2-内部组2,......
需要进一步说明的是,在部署对象新增量测点时,优先将新增的量测点分配到其所属部署对象组中已有的不足预设值数量的内部组,超出预设值数量的部分量测点,划分为该部署对象组中一新内部组。
步骤103中,为每个部署对象组的内部组中的各量测点分配唯一对应的本地标识。
本步骤中,为每个部署对象组的内部组中的各量测点分配的本地标识为连续的;每个量测点唯一对应一量测点标识,由部署对象组标识、内部组标识和本地标识三部分构成,例如,部署对象组1的内部组1中有20000个量测点,则这20000个量测点的标识依次为:部署对象组1-内部组1-1,部署对象组1-内部组1-2,......,部署对象组1-内部组1-20000。
步骤104中,为每个部署对象组中的每个内部组预分配一个存储文件。
针对步骤102,若部署对象中新增量测点时划分了新的内部组,则新的内部组对应新的存储文件。
需要进一步说明的是,各部署对象组中各内部组对应的存储文件的名称中包含该部署对象组和该内部组标识、以及该存储文件所保存数据的起始时间和结束时间;即存储文件的名称格式为:部署对象组(一级文件名)+内部组(二级文件名)+文件起始时间~文件结束时间(三级文件名),其中,文件起始时间~文件结束时间是在存储数据过程中自动更新的。
在部署对象组中内部组对应的存储文件存满时,为该内部组分配新的存储文件,新分配的存储文件的名称中同样包含该部署对象组和该内部组标识,以及所保存数据的起始时间和结束时间。
针对步骤102中的例子,为部署对象组1中的内部组1分配的存储文件名称为“部署对象组1-内部组1-T1~T2”,T1为该文件保存数据的起始时间,T2为该文件保存数据的结束时间,在该文件存储数据的过程中,T1、T2会自动更新;当该存储文件存满后,为部署对象组1中的内部组1分配新的存储文件“部署对象组1-内部组1-T3~T4”,以此类推。
因此,对于每个部署对象组中的每个内部组来说,它们对应一个或者多个一级文件名和二级文件名不变的的存储文件(一级文件名为部署对象组标识、二级文件名为内部组标识)。
通过这种文件命名方式,使得进行量测点数据存储/读取时能够快速找到存储数据所在的文件,从而加快了数据存储及读取速率。
本实施方式中,存储文件的结构图如图3所示,包含文件头和文件体;其中文件头由固定长度的数据块构成,为64字节。具体如下:
数据类型 变量名 变量长度(字节) 含义
uint16 typeId 2 文件类型ID
uint8 version 1 文件版本ID
uint8 reserve 1
uint16 itemBaseNo 2 索引区起始页面
uint32 itemCount 4 索引区包含索引个数
uint32 pageSize 4 数据页面大小
uint32 pageCount 4 数据页面总数
uint32 itemPages 4 索引区包含页面个数
uint32 dataPages 4 数据区包含页面个数
uint32 currPagePos 4 当前数据页面
uint64 begin_time 8 文件开始记录时间
uint64 end_time 8 文件结束记录时间
uint16 checksum 2 校验和
文件体由固定大小、连续的页面组成,包含索引区和数据区。索引区中保存每个量测点在该存储文件中存储位置的索引,包含:该量测点在该存储文件中保存的第一条记录的指针和最后一条记录的指针。
本实施方式中索引区由40片大小为4096字节(4KB)的页面组成,每个量测点的索引为8个字节,每个数据片可以保存4096÷8=512个量测点的索引。整个索引区可以保存512×40=20480个量测点的索引。对于每个量测点的索引,前4个字节为第一条记录指针,后4个字节为最后一条记录指针。
需要进一步说明的是,在索引区中以本地标识为顺序,依次保存每个量测点在该存储文件中存储位置的索引;针对步骤103中的例子,量测点:部署对象组1-内部组1-1,部署对象组1-内部组1-2,......,部署对象组1-内部组1-20000在该存储文件索引区中的索引依次为:第一个8字节(即0至8字节),第二个8字节(即9至16字节),......,第20000个8字节(即159993至160000字节)。通过这种方式,可以直接定位量测点索引的位置,无需对索引位置进行其他映射操作,从而进一步加快了数据存储速率。
数据区由32728片大小为4096字节(4KB)的数据片组成。每个数据片包含页面头和页面体。页面头为16字节,页面体中每个量测点数据的长度为16字节。每个数据片中最多保存(4096-16)÷16=255个量测点数据。
其中,页面头用于记录该数据片的索引等信息,包含:该数据片相对文件头时间的起始时间、相对文件头时间的结束时间、当前页面号、数据片的当前记录数、以及本量测点对应的上一数据片的页面号和/或下一数据片的页面号;页面体用于保存量测点数据,包含:数据值、质量码、和时间戳。
步骤105中,收到来自一部署对象辖下量测点的数据。
步骤106中,根据该量测点所属的部署对象组和内部组,找到该量测点对应的存储文件。本步骤中,查找包含该部署对象组标识和该内部组标识名称的文件。
步骤107中,根据该量测点的本地标识找到该量测点对应的存储位置索引。
本步骤中,由该量测点的本地标识和单个索引的长度直接定位该量测点对应的索引位置。针对步骤104中的对于索引区的说明,本地标识为部署对象组1-内部组1-n(1≤n≤20000)的量测点索引开始位置为:索引区中第[(n-1)×8+1]个字节。比如,本地标识为部署对象组1-内部组1-30的量测点,其索引在索引区中的开始位置为:第[(30-1)×8+1]=233个字节。
通过这种方式,可以直接定位量测点索引的位置,无需对索引位置进行其他映射操作,从而进一步加快了数据存储速率。
步骤108中,判断该索引是否表示已在数据区为该量测点分配数据片。如果已分配数据片,则进入步骤109;如果没有分配数据片,则进入步骤112。
需要进一步说明的是,在具体实施过程中,也可以为每个量测点预分配一个数据片,在收到量测点数据时,直接存储到对应的数据片中,由于每个数据片的大小只有4K,即使有部分量测点在一定时间内没有进行数据存储,也不会造成存储空间明显的浪费。
步骤109中,找到该量测点索引最后一条数据记录指针指示的数据片。
步骤110中,判断所分配的数据片是否已存满;如果已存满,则进入步骤112;如果没有存满,则进入步骤111。
步骤111中,将量测点的数据存储在该索引中最后一条记录的指针指示的的相应位置,更新该量测点的索引。
需要进一步说明的是,如果在存储过程中,当前数据片已存满,则为该量测点新分配一数据片进行存储,所分配的数据片与该数据区中已分配的数据片连续。
步骤112中,在数据区中为该量测点分配一空白数据片;本步骤中所分配的数据片与该数据区中已分配的数据片连续。
步骤113中,将量测点数据存储在该新分配的数据片中,更新该量测点的索引。
需要进一步说明的是,将量测点的数据存储在数据片中后,该数据片中保存的数据的起始时间和结束时间存储在该数据片的页面头中。
通过这种为量测点动态分配数据片方式,使得存储空间得到了充分利用,不会造成存储空间的浪费。
本发明第二实施方式涉及一种多源数据读取方法,其具体流程图如图2所示。
步骤201中,收到需要读取一个或多个部署对象中一个或多个量测点某一时间段的数据的请求。本实施方式中,用户查询量测点的数据时,需要输入量测点的标识(由部署对象组标识、内部组标识和本地标识构成)、所查询数据的起始时间和结束时间。
步骤202中,根据该量测点所属的部署对象组、和内部组,找到该部署对象组和该内部组对应的所有存储文件。
通过这种方式,在读取所需数据时,能够在众多的存储文件中快速找到所要读取数据所在的存储文件,提高了读取数据的效率。
步骤203中,判断待查找的时间段和存储文件名称中包含的起始时间和结束时间是否有重叠或部分重叠;如果有,则进入步骤204;如果没有,则结束查找。
步骤204中,根据比较结果,选择相匹配的存储文件。本步骤中,相匹配的存储文件可能为一个,也可能为两个或以上。
举例而言,部署对象组1-内部组1按文件起始时间从早到晚有三个存储文件:部署对象组1-内部组1-T1~T2、部署对象组1-内部组1-T3~T4,和部署对象组1-内部组1-T5~T6。现要查询部署对象组1-内部组1-量测点100在时间段t1~t2内的数据,如果T1≦t2≦T2,则相匹配的存储文件只有部署对象组1-内部组1-T1~T2;如果T3≦t1≦t2≦T4,则相匹配的存储文件只有部署对象组1-内部组1-T3~T4;如果T5≦t1≦T6,则相匹配的存储文件只有部署对象组1-内部组1-T5~T6;如果t1≦T2且T3≦t2≦T4,则相匹配的存储文件为部署对象组1-内部组1-T1~T2、和部署对象组1-内部组1-T3~T4;如果T3≦t1≦T4且t2≧T5,则相匹配的存储文件为部署对象组1-内部组1-T3~T4、和部署对象组1-内部组1-T5~T6;如果t1≦T2且t2≧T5,则相匹配的存储文件为部署对象组1-内部组1-T1~T2、部署对象组1-内部组1-T3~T4、和部署对象组1-内部组1-T5~T6。
需要进一步说明的是,当t2<T1、或t1>T6时,是没有相匹配的存储文件的,直接结束查找。
步骤205中,在匹配的存储文件中,根据该量测点的本地标识和单个索引长度定位该量测点对应的存储位置索引。本步骤中,定位该量测点对应的存储位置索引的方法和第一实施方式中步骤107中相同。
通过这种方式,能够快速定位量测点数据在存储文件中存储位置,从而进一步提高了读取数据的效率。
步骤206中,判断该存储文件中该量测点的索引记录是否为空。如果是,则结束该文件中该量测点的查找;如果不是,则进入步骤207。
步骤207中,根据索引中第一条记录指针,找到该量测点对应的第一个数据片。
步骤208中,判断待查询时间段与该数据片保存数据的起止时间是否完全不重合;如果是,则进入步骤210;如果不是,则进入步骤209。
针对步骤204中的例子,部署对象组1-内部组1-量测点100对应的该数据片保存数据的起始时间为x1,结束时间为x2;待查询时间段与该数据片保存数据的起止时间完全不重合的情况有两种:(1)t2<x1;(2)t1>x2。
步骤209中,读取相重合时间段内的数据。
步骤210中,判断待查找的时间段的结束时间是否晚于该数据片保存数据的结束时间;如果是,则进入步骤211;如果不是,则结束查找。
针对步骤208中的例子,在待查询时间段与第一片数据片保存数据的起止时间完全不重合的情况下(t2<x1或者t1>x2),如果t2>x2,则说明待查询时间段与该数据片保存数据的起止时间完全不重合的情况为第二种:t1>x2,这种情况说明当前数据片没有保存该量测点在待查找时间段内的数据,但下一数据片可能保存了该量测点在待查找时间段内的数据;如果t2≦x2,说明待查询时间段与该数据片保存数据的起止时间完全不重合的情况为第一种:t2<x1,这种情况说明该量测点在待查询时间段内没有保存数据,结束查找。
步骤211中,判断该数据片是否有对应的下一数据片。如果有,则进入步骤212;如果没有,则结束查找。
步骤212中,根据该数据片中保存的下一数据片的页面号,找到下一数据片。然后回到步骤208,继续循环判断查找。
本实施方式中,如果步骤204中匹配的存储文件为两个或以上,可以从开始时间最早的存储文件开始按步骤205到步骤212逐个文件进行查找,也可以对所有匹配的存储文件按步骤205到步骤212进行并行查找。比如,相匹配的存储文件为部署对象组1-内部组1-T1~T2、部署对象组1-内部组1-T3~T4、和部署对象组1-内部组1-T5~T6,则可以先从文件部署对象组1-内部组1-T1~T2开始进行查找,待其查找结束后,再从文件部署对象组1-内部组1-T3~T4进行查找,待其查找结束后,最后从文件部署对象组1-内部组1-T5~T6进行查找;也可以从文件部署对象组1-内部组1-T1~T2、部署对象组1-内部组1-T3~T4、和部署对象组1-内部组1-T5~T6并行开始进行查找。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (10)

1.一种多源数据存储方法,所述多源数据来自不同部署对象的不同量测点,其特征在于,包含以下步骤:
对所述部署对象进行分组,形成各部署对象组,并对各部署对象组包含的量测点进行划分,形成内部组;
为每个部署对象组的内部组中的各量测点分配唯一对应的本地标识;
每个部署对象组中的每个内部组包含至少一个存储文件,所述存储文件包含文件头和文件体,所述文件体由固定大小、连续的数据片组成,该文件体中包含索引区和数据区,所述索引区中保存每个所述量测点在该存储文件中存储位置的索引;
在收到来自一部署对象辖下量测点的数据时,根据该量测点所属的部署对象组和内部组,找到该量测点对应的存储文件,根据该量测点的本地标识找到该量测点对应的存储位置索引,如果该索引表示当前未在数据区中为该量测点分配数据片、或所分配的数据片已存满,则在所述数据区中为该量测点分配一空白数据片,所分配的数据片与该数据区中已分配的数据片连续,将所述量测点数据存储在新分配的数据片中;反之,则将所述量测点的数据存储在该索引指示的数据片的相应位置;
如果在存储过程中,当前数据片已存满,则为该量测点新分配一数据片进行存储,所分配的数据片与该数据区中已分配的数据片连续。
2.根据权利要求1所述的多源数据存储方法,其特征在于,所述对部署对象进行分组,形成各部署对象组的方式为:
根据各部署对象所包含的量测点数量,对所述各部署对象分组,将所包含量测点数量总和小于预设值的至少两个部署对象分为一组,将其余的每个部署对象分别分为一组;
所述对各部署对象组包含的量测点进行划分,形成内部组的方式为:
对各部署对象组进行组内划分,以所述预设值为界限,每达到所述预设值数量的量测点划分为一内部组,对应一组内标识,其余不足所述预设值数量的量测点划分为一内部组。
3.根据权利要求1所述的多源数据存储方法,其特征在于,所述为每个部署对象组的内部组中的各量测点分配唯一对应的本地标识的步骤中,所述本地标识为连续的;
所述索引区中以所述本地标识为顺序,依次保存每个所述量测点在该存储文件中存储位置的索引;
所述根据该量测点的本地标识找到该量测点对应的存储位置索引的步骤中,由该量测点的本地标识和单个索引的长度直接定位该量测点对应的索引位置。
4.根据权利要求1所述的多源数据存储方法,其特征在于,所述量测点在存储文件中存储位置的索引包含:该量测点在该存储文件中保存的第一条记录的指针和最后一条记录的指针;
所述将量测点的数据存储在该索引指示的数据片的相应位置的步骤中,根据所述最后一条记录的指针进行存储。
5.根据权利要求1所述的多源数据存储方法,其特征在于,所述量测点数据包含:数据值、质量码、和时间戳;
所述数据片包含页面头和页面体,所述将量测点数据存储在新分配的数据片中的步骤和所述将量测点的数据存储在该索引指示的数据片的相应位置的步骤中,将量测点数据存储在数据片的页面体中;所述将量测点数据存储在数据片的页面体中的步骤之后,将该数据片中保存的数据的起始时间和结束时间存储在该数据片的页面头中。
6.根据权利要求5所述的多源数据存储方法,其特征在于,所述页面头中还保存有本量测点对应的上一数据片的页面号和/或下一数据片的页面号。
7.根据权利要求1所述的多源数据存储方法,其特征在于,所述各部署对象组中各内部组对应的存储文件的名称中包含该部署对象组和该内部组标识;
所述根据该量测点所属的部署对象组和内部组,找到该量测点对应的存储文件的步骤中,查找包含该部署对象组标识和该内部组标识名称的文件。
8.根据权利要求7所述的多源数据存储方法,其特征在于,各部署对象组中各内部组对应的存储文件的名称中还包含:该存储文件所保存数据的起始时间和结束时间;
在所述部署对象组中内部组对应的存储文件存满时,为该内部组分配新的存储文件,新分配的存储文件的名称中同样包含该部署对象组和该内部组标识,以及所保存数据的起始时间和结束时间。
9.根据权利要求1所述的多源数据存储方法,其特征在于,还包含以下步骤:
在所述部署对象新增量测点时,优先将新增的量测点分配到其所属部署对象组中已有的不足预设值数量的内部组,超出预设值数量的部分量测点,划分为该部署对象组中一新内部组,对应一新存储文件。
10.一种多源数据读取方法,与权利要求1至9中任意一项所述的多源数据存储方法相匹配,其特征在于,包含以下步骤:
在需要读取至少一个部署对象中至少一个量测点某一时间段的数据时,根据该部署对象所属的部署对象组、和该量测点所属的内部组,找到该部署对象组和该内部组对应的所有存储文件;
将待查找的时间段和所述存储文件名称中包含的起始时间和结束时间进行比较,选择相匹配的存储文件;
在所述匹配的存储文件中,根据该量测点的本地标识和单个索引长度定位该量测点对应的存储位置索引,找到该量测点对应的第一个数据片,根据所述数据片中保存的本量测点对应的上一数据片的页面号和/或下一数据片的页面号,确定该量测点对应的其他数据片;
将各数据片中保存的数据起始时间和结束时间信息与待查找的时间段相比较,读取所需的数据。
CN201210506830.2A 2012-11-30 2012-11-30 一种多源数据存储和读取方法 Active CN103853499B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210506830.2A CN103853499B (zh) 2012-11-30 2012-11-30 一种多源数据存储和读取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210506830.2A CN103853499B (zh) 2012-11-30 2012-11-30 一种多源数据存储和读取方法

Publications (2)

Publication Number Publication Date
CN103853499A CN103853499A (zh) 2014-06-11
CN103853499B true CN103853499B (zh) 2017-02-08

Family

ID=50861216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210506830.2A Active CN103853499B (zh) 2012-11-30 2012-11-30 一种多源数据存储和读取方法

Country Status (1)

Country Link
CN (1) CN103853499B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104090987B (zh) * 2014-07-28 2018-03-13 华中科技大学 一种历史数据存储及索引方法
CN105653613A (zh) * 2015-12-24 2016-06-08 浙江中控技术股份有限公司 一种应用于智能粮库的数据存储方法及装置
CN107305564B (zh) * 2016-04-21 2021-06-11 阿里巴巴集团控股有限公司 一种数据处理的方法和设备
CN106777378A (zh) * 2017-02-13 2017-05-31 北京小米移动软件有限公司 访问用户数据的方法和装置
CN108920553B (zh) * 2018-06-19 2020-10-30 西安电子科技大学 一种用于机载多传感器平台的数据记录方法
CN110515952A (zh) * 2019-08-28 2019-11-29 广州高谱技术有限公司 一种电力数据的存储方法
CN111966304B (zh) * 2020-09-15 2023-09-05 山东钢铁集团日照有限公司 一种基于egd方式的数据读取方法
CN112100227A (zh) * 2020-09-22 2020-12-18 国网辽宁省电力有限公司电力科学研究院 一种基于多级异构数据存储的大数据处理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102419752A (zh) * 2010-09-28 2012-04-18 上海可鲁系统软件有限公司 一种工业数据库报文存储方法
CN102446184A (zh) * 2010-10-12 2012-05-09 上海可鲁系统软件有限公司 一种基于时间序列的工业数据存储及索引方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3940718B2 (ja) * 2003-10-30 2007-07-04 株式会社東芝 試験装置、良否判定基準設定装置、試験方法及び試験プログラム
US8244846B2 (en) * 2007-12-26 2012-08-14 Symantec Corporation Balanced consistent hashing for distributed resource management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102419752A (zh) * 2010-09-28 2012-04-18 上海可鲁系统软件有限公司 一种工业数据库报文存储方法
CN102446184A (zh) * 2010-10-12 2012-05-09 上海可鲁系统软件有限公司 一种基于时间序列的工业数据存储及索引方法

Also Published As

Publication number Publication date
CN103853499A (zh) 2014-06-11

Similar Documents

Publication Publication Date Title
CN103853499B (zh) 一种多源数据存储和读取方法
CN109471905B (zh) 一种支持时间范围和属性范围复合查询的区块链索引方法
US7257599B2 (en) Data organization in a fast query system
CN102419752B (zh) 一种工业数据库报文存储方法
US7523288B2 (en) Dynamic fragment mapping
CN103049473A (zh) 一种数据查询方法及装置
CN100501734C (zh) 实体属性数据处理装置及方法
CN102629269A (zh) 一种嵌入式数据库的检索及存储方法
CN102446184B (zh) 一种基于时间序列的工业数据存储及索引方法
CN103914449A (zh) 一种多源时间序列数据压缩存储方法
CN106528787A (zh) 一种基于海量数据多维分析的查询方法及装置
CN102915382A (zh) 一种基于索引的数据库的数据查询方法和装置
CN102375827B (zh) 一种对版本化的电网模型数据库进行快速加载的方法
CN106354890B (zh) 一种基于N-ary树结构的随机访问的文件系统的实现方法
CN107918642A (zh) 数据查询方法、服务器及计算机可读存储介质
CN109213761A (zh) 一种自由扩展免迁移的分库分表方法
CN101571869A (zh) 一种智能卡的文件存储、读取方法及装置
CN107229429A (zh) 一种存储空间管理方法及装置
CN101093482A (zh) 一种大量信息存储和检索的方法
CN104572486B (zh) 一种电能表数据动态存储方法
US7310719B2 (en) Memory management tile optimization
CN101963993B (zh) 一种数据库单表记录快速查找的方法
CN103761316A (zh) 一种基于稀疏矩阵的数据压缩存储方法及装置
CN105138632A (zh) 一种文件数据组织管理方法及文件管理服务器
CN104750743A (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
C14 Grant of patent or utility model
GR01 Patent grant
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 201203 403d, building 5, No. 3000, Longdong Avenue, Pudong New Area, Shanghai

Patentee after: Shanghai Kelu Software Co.,Ltd.

Address before: 201203 Shanghai city Pudong New Area road 887 Lane 82 Zuchongzhi Building No. two North

Patentee before: Shanghai Kelu Software Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231101

Address after: 201203 north, 2nd floor, No.82, Lane 887, Zuchongzhi Road, Pudong New Area, Shanghai

Patentee after: Shanghai Kelu Software Co.,Ltd.

Patentee after: Shanghai Left Bank Investment Management Co.,Ltd.

Address before: 201203 403D 5, 3000 Longdong Avenue, Pudong New Area, Shanghai.

Patentee before: Shanghai Kelu Software Co.,Ltd.