CN112765170B - 一种嵌入式时间序列数据管理方法及设备 - Google Patents
一种嵌入式时间序列数据管理方法及设备 Download PDFInfo
- Publication number
- CN112765170B CN112765170B CN202110035703.8A CN202110035703A CN112765170B CN 112765170 B CN112765170 B CN 112765170B CN 202110035703 A CN202110035703 A CN 202110035703A CN 112765170 B CN112765170 B CN 112765170B
- Authority
- CN
- China
- Prior art keywords
- data
- time interval
- time
- retrieval
- base point
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000013523 data management Methods 0.000 title claims abstract description 14
- 238000007726 management method Methods 0.000 claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 28
- 230000004044 response Effects 0.000 claims abstract description 14
- 238000013507 mapping Methods 0.000 claims description 60
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010845 search algorithm Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 8
- 239000012634 fragment Substances 0.000 description 6
- 238000005299 abrasion Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013524 data verification Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013434 data augmentation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/23—Updating
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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/24—Querying
- G06F16/248—Presentation of query results
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种嵌入式时间序列数据管理方法及设备。所述方法包括接收时间序列数据的注册信息,按照所述时间序列数据的采集时间划分管理对象,使采集时间相同的时间序列数据作为一个管理对象;为每个管理对象创建对象管理空间,并在所述对象管理空间中创建对象存储单元;所述对象存储单元包括若干一级时间区间存储块,每个一级时间区间存储块用于存储对应时间区间范围内的时间序列数据;响应于数据操作命令,执行相应数据操作。以此方式,可以在资源有限的嵌入式环境内极大的提高了对具有时间标签的数据的处理能力,适用于需要长期对具有时间标签的数据进行周期性、持续性存储与读取的嵌入式产品。
Description
技术领域
本发明的实施例一般涉及嵌入式存储领域,并且更具体地,涉及一种嵌入式时间序列数据管理方法及设备。
背景技术
随着分布式***监控、物联网技术的逐渐普及,大数据对时间序列数据的要求越来越高,随着数十年日积月累的数据累计,数以万计的物联网设备将会产生海量的时间序列数据,若采用集中存储于云端服务器中的方式,将对整个云端服务器产生巨大的压力,采用边缘存储的方式,将时间序列数据直接存储于本地嵌入式设备中,将会很好的解决此问题,因此,这对本地嵌入式设备对时间序列数据的管理能力与效率提出了更高的要求。但像MySQL、SQLite等这类关系型数据库对时间序列数据处理效率不高,也很难移植,即使移植成功,受限于嵌入式***软硬件资源,当数据累积的越多,检索的时间越长。
发明内容
根据本发明的实施例,提供了一种嵌入式时间序列数据管理方案。
在本发明的第一方面,提供了一种嵌入式时间序列数据管理方法,应用于管理***。该方法包括:
接收时间序列数据的注册信息,按照所述时间序列数据的采集时间划分管理对象,使采集时间相同的时间序列数据作为一个管理对象;
为每个管理对象创建对象管理空间,并在所述对象管理空间中创建对象存储单元;所述对象存储单元包括若干一级时间区间存储块,每个一级时间区间存储块用于存储对应时间区间范围内的时间序列数据;
响应于数据操作命令,执行相应数据操作。
进一步地,所述时间序列数据为由在不同时间点上收集到的带有时间标签的数据按时间顺序组成的有序数据集。
进一步地,所述数据操作命令,包括数据增加命令、数据检索命令、数据读取命令和数据删除命令;
响应于所述数据增加命令,执行数据增加操作;
响应于所述数据检索命令,执行数据检索操作;
响应于所述数据读取命令,执行数据读取操作;
响应于所述数据删除命令,执行数据删除操作。
进一步地,所述数据增加命令,包括对象属性信息、流控制信息和数据信息;
所述响应于所述数据增加命令,执行数据增加操作,包括:
S201、判断所述对象存储单元中是否存在待增加数据的时间标签所属的一级时间区间对应的一级时间区间存储块,如果存在,则执行S202;否则创建对应的一级时间区间存储块,执行S202;
S202、创建所述待增加数据对应的检索映射链表,将所述检索映射链表与对应的待增加数据一同存储在对应的一级时间区间存储块中。
进一步地,还包括对所述待增加数据进行流写入控制;
所述流写入控制包括:
如果所述待增加数据达到或超过对象的数据最大长度,则本条待增加数据增加结束;
如果所述待增加数据为一条数据的数据片段且未达到对象的数据最大长度,则可继续对本条数据进行追加,直至达到对象的数据最大长度或启动下一条数据的增加,本条数据增加结束。
进一步地,所述创建所述待增加数据对应的检索映射链表,包括:
S301、为所述待增加数据创建一检索映射链表,所述检索映射链表包括二级时间区间映射链接和数据编号,所述二级时间区间映射链接用于描述当前一级时间区间存储块中的二级时间区间的链接链路,包括二级时间区间基点标识和二级时间区间基点编号;所述数据编号用于描述数据的唯一序列编号;一级时间区间由若干二级时间区间组成;
S302、读取相邻的上一条时间序列数据的检索映射链表,判断待增加数据的时间标签所属的二级时间区间属性与上一条时间序列数据的时间标签所属的二级时间区间属性是否一致,如果是,则执行S303;否则将待增加数据的二级时间区间映射链接中的二级时间区间基点编号设置为上一条时间序列数据的二级时间区间基点编号,并设置二级时间区间基点标识为真;
S303、判断上一条时间序列数据的二级时间区间基点标识是否为真,如果是,则上一条时间序列数据为所述二级时间区间基点,将待增加数据的二级时间区间映射链接中的二级时间区间基点编号设置为上一条时间序列数据的数据编号;否则,上一条时间序列数据不为所述二级时间区间基点,将待增加数据的二级时间区间映射链接中的二级时间区间基点编号设置为上一条时间序列数据的二级时间区间基点编号;
进一步地,所述数据检索命令,包括对象属性信息和检索条件信息;
所述响应于所述数据检索命令,执行数据检索操作,包括:
当所述检索条件信息中的检索时间的粒度为一级时间区间时,通过检索时间的一级时间区间计算哈希值,映射到对应的一级时间区间存储块;
当所述检索条件信息中的检索时间的粒度为二级时间区间时,在映射出一级时间区间存储块后,加载检索映射链表,通过递归算法定位到检索映射链表中的二级时间区间的数据编号,通过二级时间区间的数据编号匹配出一级时间区间存储块中对应的二级时间区间基点,映射出二级时间区间;
当所述检索条件信息中的检索时间的粒度为单位粒度时,在映射出二级时间区间后,获取二级时间区间的数据总数,通过binary search算法在二级时间区间内循环筛查检索时间,定位到目标数据。
进一步地,所述数据读取命令,包括:
对象属性信息、检索结果信息、流控制信息和数据处理句柄;
所述响应于所述数据读取命令,执行数据读取命令,包括:
根据所述检索结果信息判断待读取数据的数据长度是否超过对象的数据最大长度,如果是,则采用完整读取模式对待读取数据进行读取;否则采用流读取模式对待读取数据进行读取;
所述流读取模式,包括:
每次从对应的一级时间区间存储块中读取流控制信息中指定长度的数据片段,映射到数据处理句柄,对数据片段进行处理,直到整条数据读取完整;
所述完整读取模式,包括:
每次从对应的一级时间区间存储块中读取一条完整数据,映射到数据处理句柄,对整条数据进行处理。
进一步地,所述数据删除命令,包括:对象属性信息和删除输入信息;
所述响应于所述数据删除命令,执行数据删除操作,包括:
当所述删除输入信息的时间粒度为一级时间区间时,对对应的一级时间区间存储块进行删除;
当所述删除输入信息的时间粒度为第二时间区间时,检索出待删除数据的后一相邻的二级时间区间基点对应的数据,将该数据的二级时间区间基点编号修改为所述待删除数据的前一相邻的二级时间区间基点编号。
在本发明的第二方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本发明的实施例的关键或重要特征,亦非用于限制本发明的范围。本发明的其它特征将通过以下的描述变得容易理解。
本发明在资源有限的嵌入式环境内极大的提高了对具有时间标签的数据的处理能力,将数据以块的方式进行存储,避免重复擦写一块存储区域,实现均匀磨损,适用于需要长期对具有时间标签的数据进行周期性、持续性存储与读取的嵌入式产品。
附图说明
结合附图并参考以下详细说明,本发明各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了根据本发明的实施例的嵌入式时间序列数据管理方法的流程图;
图2示出了根据本发明的实施例的数据增加操作的流程图;
图3示出了根据本发明的实施例的创建所述待增加数据对应的检索映射链表的流程图;
图4示出了能够实施本发明的实施例的示例性电子设备的方框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本发明保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本发明中,利用文件***,在资源有限的嵌入式环境内极大的提高了对具有时间标签的数据的处理能力,将数据以块的方式进行存储,避免重复擦写一块存储区域,实现均匀磨损,适用于需要长期对具有时间标签的数据进行周期性、持续性存储与读取的嵌入式产品。
图1示出了本发明实施例的嵌入式时间序列数据管理方法的流程图。
该方法包括:
S101、接收时间序列数据的注册信息,按照所述时间序列数据的采集时间划分管理对象,使采集时间相同的时间序列数据作为一个管理对象。
所述时间序列数据(time series data)为由在不同时间点上收集到的带有时间标签的数据按时间顺序组成的有序数据集。
作为本发明的一种实施例,时间序列数据可以是一设备每秒记录一条温湿度数据,共记录了30天,此30天内的所有带时间标签的温湿度数据形成的数据集合。
应用程序根据自身需求,将需要进行管理的时间序列数据注册到管理***中,形成管理对象。所述管理对象按照时间序列数据的采集时间划分。例如,应用程序在3个不同时间点分别采集了温度数据、湿度数据和压力数据,则将温度数据、湿度数据和压力数据划分为三个管理对象进行管理。又例如,应用程序在同一时间同时采集了温度、湿度和压力数据,则将该同一时间采集的温度、湿度和压力数据作为一个管理对象注册到管理***中。
应用程序将需要进行管理的数据注册到管理***中,需要调用管理***的数据注册API接口,其中,应用程序需要提供需要管理的数据的名称、最大长度及时间跨度。
管理***通过时间对数据进行管理,用于观察某一数据在某一时间段的连续性变化,把采集时间相同的时间序列数据作为一个管理对象,可以更有针对性的对此数据进行长时间的监测与管理,管理***可以通过时间单位对此数据进行更加有效的增加、检索、读取和删除等管理行为。
作为本发明的一种实施例,优选的,当注册完成后,管理***形成对象管理列表;所述对象管理列表用于记录管理对象。
将需要进行管理的数据抽象为一个数据管理对象,并将所有的数据管理信息形成静态数据管理信息列表,即对象管理列表,方便对所有的数据进行管理,应用程序仅对数据管理对象进行操作,不用关心数据的其他属性信息。
S102、为每个管理对象创建对象管理空间,并在所述对象管理空间中创建对象存储单元。
所述对象存储单元包括若干一级时间区间存储块,每个一级时间区间存储块用于存储对应时间区间范围内的时间序列数据。
在本实施例中,可选的,所述一级时间区间存储块为年存储块。每个年存储块中存储采集时间为对应年份的时间序列数据。
将数据以块的方式进行存储,避免重复擦写一块存储区域,实现均匀磨损。
S103、响应于数据操作命令,执行相应数据操作。
所述数据操作命令,包括数据增加命令、数据检索命令、数据读取命令和数据删除命令。
所述数据增加命令,包括对象属性信息、流控制信息和数据信息。
响应于所述数据增加命令,执行数据增加操作,包括:
S201、判断所述对象存储单元中是否存在待增加数据的时间标签所属的一级时间区间对应的一级时间区间存储块,如果存在,则执行S202;否则创建对应的一级时间区间存储块,执行S202。
作为本发明的一种实施例,当应用程序需要对管理对象增加数据时,管理***会检查本条数据时间标签的年份,并将数据存储到相应的年存储块中,若没有对应年份的年存储块,则管理***将创建相应的年存储块。
在本实施例中,可选的,对待增加数据进行校验,所述校验通过生成一个校验值,用于确定本条已存入数据的准确性。
在本实施例中,具体的,应用程序需要对管理对象增加一条数据时,会对每条数据增加数据校验后存储,例如,在写入的过程中,自动的对这个条数据进行CRC计算,并将计算后的结果写入单数据信息,存储本条数据之后。
对每条数据增加数据校验后存储,是为了对本条已经存入的数据进行校验,用于确定本条已存入数据的准确性。每条数据都带CRC校验,保证数据的安全可靠性。
作为本发明的一种实施例,还包括对所述待增加数据进行流写入控制;
所述流写入控制包括:
如果所述待增加数据达到或超过对象的数据最大长度,则本条待增加数据增加结束;
如果所述待增加数据为一条数据的数据片段且未达到对象的数据最大长度,则可继续对本条数据进行追加,直至达到对象的数据最大长度或启动下一条数据的增加,本条数据增加结束。
在本实施例中,可选的,管理***提供了两套对数据增加的API函数,当应用程序需要增加整条数据时,可调用对应的API一次写入一整条数据,当应用程序需要将数据分多次存入数据管理***时,可调用对应的API每次只写入数据的一个片段,通过多次写入,直到整条数据全部写入。
管理***在注册对象时,确定了本条数据的最大长度,用户在写入时,由于流写入控制功能的存在,管理***其实不在乎用户一次写入多长,只要长度不超过对象的最大长度即可,管理***只关心本条数据已写入的总长度,即,若用户一次写入超过或等于对象的最大长度,本条数据增加结束,管理***等待下一条数据的增加。若用户只增加一个片段,那么用户还可继续对本条数据进行追加,直到本条数据达到对象最大长度,或本条未达到最大长度,用户启动下一条数据的增加,那么本条数据增加结束。
通过对数据的流写入方式,运行应用程序将单条数据拆分成若干个数据片段进行写入,此方法很好的解决了若单条数据过长导致的内存开销大的问题,同时提高了整个写入的效率,让管理***对数据增加的过程更加灵活,非常友好的支持了非定长数据的存储。
在本实施例中,判断待增加数据为本条数据的完整数据还是数据片段,通过以下过程实现:
识别所述流控制信息中的流属性,所述流属性用于描述所述待增加数据的完整数据长度;
根据所述流控制信息中的流属性判断当前数据信息中的数据长度是否与完整数据长度相同,如果是,则待增加数据为完整数据,否则,待增加数据为数据片段。
作为本实施例中的可选实施例,应用程序需要对管理对象增加一条数据时,应向管理***API接口提供对象属性信息、流控制信息及数据片段;管理***根据流控制信息中的流属性判断本次增加的数据为完整数据还是数据片段,控制信息中数据长度对管理***描述了本次增加的数据长度。
S202、创建所述待增加数据对应的检索映射链表,将所述检索映射链表与对应的待增加数据一同存储在对应的一级时间区间存储块中。解决现有数据库当数据越来越多时,会导致查询效率越来越低的问题;通过增加映射链表,把检索有效的控制在固定的算法时间内,减少或消除数据总量对算法时间的影响。
所述创建所述待增加数据对应的检索映射链表,包括:
S301、为所述待增加数据创建一检索映射链表,所述检索映射链表包括二级时间区间映射链接和数据编号,所述二级时间区间映射链接用于描述当前一级时间区间存储块中的二级时间区间的链接链路,包括二级时间区间基点标识和二级时间区间基点编号;所述数据编号用于描述数据的唯一序列编号;一级时间区间由若干二级时间区间组成。
作为本发明的一种实施例,可选的,所述二级时间区间为月,所述二级时间区间映射链接为月映射链接,包括月基点标识和月基点编号;所述数据编号用于描述本条数据的唯一序列编号,例如5月份。
S302、读取相邻的上一条时间序列数据的检索映射链表,判断待增加数据的时间标签所属的二级时间区间属性与上一条时间序列数据的时间标签所属的二级时间区间属性是否一致,如果是,则执行S303;否则将待增加数据的二级时间区间映射链接中的二级时间区间基点编号设置为上一条时间序列数据的二级时间区间基点编号,并设置二级时间区间基点标识为真。
S303、判断上一条时间序列数据的二级时间区间基点标识是否为真,如果是,则上一条时间序列数据为所述二级时间区间基点,将待增加数据的二级时间区间映射链接中的二级时间区间基点编号设置为上一条时间序列数据的数据编号;否则,上一条时间序列数据不为所述二级时间区间基点,将待增加数据的二级时间区间映射链接中的二级时间区间基点编号设置为上一条时间序列数据的二级时间区间基点编号;
在本实施例中,管理***为需要增加的数据创建检索映射链表时,会先读取上一条数据的检索映射链表,若本条数据的时间标签中月份与上一条保持一致,先检查上一条数据是否为月份基点,若为月份基点,本条数据的检索映射链表中月映射链接中的月基点编号设置为上一条的数据唯一序号;若非月份基点,继承上一条数据的月基点编号;若本条数据的时间标签中月份与上一条产生变化,则继承上一条数据的月映射链接,修改月基点标识为真。
本发明所述增加数据时,采用文件***的append写入模式,避免了定位文件写入位置造成的时间开销,写入效率大大提高。
进一步地,当检索某一段时间的数据时,应用数据应向管理***API接口函数提供数据检索命令,管理***响应于所述数据检索命令,执行数据检索操作,检索到数据后向应用程序返回检索结果信息。所述数据检索命令,包括对象属性信息和检索条件信息。响应于所述数据检索命令,执行数据检索操作。根据检索时间的粒度不同,可以分三类执行数据检索操作,包括:
管理***通过散列表对一级时间区间存储块进行管理,当所述检索条件信息中的检索时间的粒度为一级时间区间时,通过检索时间的一级时间区间计算哈希值,映射到对应的一级时间区间存储块。
当所述检索条件信息中的检索时间的粒度为二级时间区间时,在映射出一级时间区间存储块后,加载检索映射链表到内存中,通过递归算法定位到检索映射链表中的二级时间区间的数据编号,通过二级时间区间的数据编号匹配出一级时间区间存储块中对应的二级时间区间基点,映射出二级时间区间。
当所述检索条件信息中的检索时间的粒度为单位粒度时,在映射出二级时间区间后,获取二级时间区间的数据总数,通过binary search算法在二级时间区间内循环筛查检索时间,定位到目标数据。
可见,检索条件信息中检索时间粒度为年或月时,管理***打开相应的年存储块,读取最后一条数据的检索映射链表进行跳跃式检索确定月份基点。检索输入信息中检索时间粒度小于月时,管理***先按照月粒度检索到月份基点,在此月份中使用binary search算法进行数据检索。
在本发明的一种实施例中,作为数据检索的一种应用场景,可以用于统计,即只对本段时间的数据量进行统计,如:一公共场合的打卡记录设备,用户需要统计冬季与夏季两个时间段的打卡记录在数量上的变化,仅需检索2012年11月至2013年4月(冬季)与2013年6月至2013年10月(夏季)两个时间段的打卡记录总量即可,无须输出上述两个时间段所有的打卡记录的详细信息;这种应用场景下,只有检索过程与检索结果,没有读取。
在检索评价指标中,检索运行时间可以映射出检索效率,是重要的数据指标。检索运行时间指的是管理***接收到检索条件信息到向应用程序返回检索结果信息所用的时间。下面针对于不同情况对检索运行时间进行计算:
当检索粒度为一级时间区间,例如年时,根据检索原理,管理***对年份的查找直接打开相应的年存储块,则其对应的最大检索运行时间为一常数,与数据总量无关,即:
Tyear=O(1);
其中,Tyear为检索粒度为年的最大检索运行时间。
当检索粒度为月时,管理***打开相应的年存储块,对月份基点进行检索,最大检索运行时间为常数,与数据总量无关:
Tmon<=O(1);
其中,Tmon为在年存储块中对月份基点进行检索的最大检索运行时间。
因此,据以上可知,当检索粒度为年时,管理***直接打开相应的年存储块,最大检索运行时间为常数,与数据总量无关:
T(y)=Tyear=O(1);
其中,T(y)为检索粒度为年的最大检索运行时间。
当检索粒度为月时,管理***打开相应的年存储块,对月份基点进行检索,最大检索运行时间为常数,与数据总量无关:
T(m)=Tyear+Tmon=O(2);
其中,T(m)为检索粒度为月的最大检索运行时间。
而当检索条件信息中的检索时间粒度小于月时,管理***先按照月粒度检索到月份基点,在此月份中使用binary search算法进行数据检索,若按照管理***的数据采集极限频率1Hz计算,一个月的采集数据量为:
K=3600*34*31=2678400(条);
在月份中检索到目标数据的最大检索运行时间为:
Tbs=log2K=O(22);
因此,据以上可知,当检索条件信息中检索时间粒度小于月时,对数据检索的算法数据总量无关,仅与目标数据月份的数据总量有关,其最大检索运行时间为:
T(n)=Tyear+Tmon+Tbs=O(24);
其中,T(n)为检索粒度小于月的最大检索运行时间。
数据检索使用了检索跳跃列表+binary search混合检索算法,检索效率与数据总量无关,在检索粒度设置为最高精度时,算法最大运行时间恒定小于O(24),而一般对时间序列的检索粒度都是按照年粒度或月粒度,本算法可将算法最大运行时间再次缩小到O(1),在有限的嵌入式平台内,发挥了极高的检索效率。可见,本实施例中的数据检索对总数据量敏感度极低,数据越多,检索效率越高,同时,基本没有内存上的开销,非常使用与资源有限的嵌入式***。
进一步地,当需要读取某一段数据时,应用程序向管理***API接口函数提供数据读取命令;所述数据读取对象包括对象属性信息、检索结果信息、流控制信息及数据处理句柄。管理***响应于所述数据读取命令,执行数据读取命令,从存储单元获取到对应的数据后,调用数据处理句柄对数据进行处理。
读取过程是基于检索结果信息进行的,数据检索的另一种应用场景是用于数据读取。根据检索的结果,将检索结果中的数据全部输出,如:用户需要输出2019年6月到2019年12月的所有打卡记录信息,那么,应用程序先调用检索API产生检索结果,再通过读取API输入检索结果信息将本段时间所有的详细打开信息读取处理。
如此,将检索过程与读取过程分离,层次化设计,能够使整个应用更加灵活,提升效率。
在本实施例中,所述管理***响应于所述数据读取命令,执行数据读取命令,包括以下过程:
根据所述检索结果信息判断待读取数据的数据长度是否超过对象的数据最大长度,如果是,则采用完整读取模式对待读取数据进行读取;否则采用流读取模式对待读取数据进行读取;
所述流读取模式,包括:
每次从对应的一级时间区间存储块中读取流控制信息中指定长度的数据片段,映射到数据处理句柄,对数据片段进行处理,直到整条数据读取完整;
所述完整读取模式,包括:
每次从对应的一级时间区间存储块中读取一条完整数据,映射到数据处理句柄,对整条数据进行处理。
在本实施例中,对于读取一般长度的数据,用户可以直接申请一段缓存,存放整条数据,直接对整条数据进行处理,或用户的需求就是需要对整条数据进行读取。
而对于长数据,可能会存在两种情况,第一种情况是,一条完整数据长度非常长,应用程序申请一段能容纳完整数据的缓存对内存的开销非常大,或根本无法申请成功,在这种情况下很容易造成内存溢出,影响整体的***的稳定性。例如,一条数据长度为20K字节长度,在有限的嵌入式内存(RAM)资源内,可能无法申请一段能容纳完整数据的缓存,但对此长度的数据又有需求,流读取的方式提供了一个解决方案,即通过流读取模式对数据分段进行读取。第二种情况是,根据应用程序需求,需要对数据进行分段多次处理,即每次只读取一个数据片段进行处理,例如,一种设备在某一时刻采集了1000个震动数据,用户在对本条数据进行读取时,由于屏幕尺寸或软件界面设计的限制,一次仅能查看100个震动数据曲线,应用程序为此设计为分页或屏幕滑动的方式将1000个震动数据分多次读取与显示,在这种场景下,应用程序不必一次性将1000个震动数据全部读取到缓存里,而是每次仅读取100个震动数据(一个数据片段)进行显示即可。针对这种需求,使用流读取的方式可为用户提供更加灵活的读取方法。
通过对数据的流读取方式,运行应用程序将单条数据拆分成若干个数据片段进行读取,此方法很好的解决了若单条数据过长导致的内存开销大的问题,同时提高了整个读取的效率。
所述数据处理句柄为应用程序提供数据处理接口,其描述了管理***对数据处理的格式化函数,当应用程序需要对读取的数据进行处理时,管理***将数据处理方法自动映射到应用程序提供的数据处理句柄。
进一步地,当应用程序需要删除某一段时间数据时,应用数据应向管理***API接口函数提供数据删除命令,所述数据删除命令包括对象属性信息和删除输入信息;管理***响应于所述数据删除命令,执行数据删除操作。执行数据删除操作需要判断待删除数据的时间粒度,具体包括:
当所述删除输入信息的时间粒度为一级时间区间时,对对应的一级时间区间存储块进行删除。
作为本发明的一种实施例,当所述删除输入信息的时间粒度为年时,管理***直接将对应的年存储块进行删除操作。
当所述删除输入信息的时间粒度为第二时间区间时,检索出待删除数据的后一相邻的二级时间区间基点对应的数据,将该数据的二级时间区间基点编号修改为所述待删除数据的前一相邻的二级时间区间基点编号。
作为本发明的一种实施例,当所述删除输入信息的时间粒度为月时,管理***先对后一相邻的月份基点进行检索,再对将此条数据月基点编号修改为目标月份的前一相邻的月基点编号,以便检索时,跨过目标月份。
根据本发明的实施例,采用独立模块的开发方式,方便在不同的嵌入式平台进行移植,具有内存占用空间小、检索效率高、均匀磨损及安全可靠性高等优点,适用于需要长期对具有时间标签的数据进行周期性、持续性存储与读取的嵌入式产品。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
以上是关于方法实施例的介绍,以下通过设备实施例,对本发明所述方案进行进一步说明。
如图4所示,电子设备包括中央处理单元(CPU),其可以根据存储在只读存储器(ROM)中的计算机程序指令或者从存储单元加载到随机访问存储器(RAM)中的计算机程序指令,来执行各种适当的动作和处理。在RAM中,还可以存储设备操作所需的各种程序和数据。CPU、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也连接至总线。
电子设备中的多个部件连接至I/O接口,包括:输入单元,例如键盘、鼠标等;输出单元,例如各种类型的显示器、扬声器等;存储单元,例如磁盘、光盘等;以及通信单元,例如网卡、调制解调器、无线通信收发机等。通信单元允许电子设备通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元执行上文所描述的各个方法和处理,例如方法S101~S103。例如,在一些实施例中,方法S101~S103可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元。在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元而被载入和/或安装到设备上。当计算机程序加载到RAM并由CPU执行时,可以执行上文描述的方法S101~S103的一个或多个步骤。备选地,在其他实施例中,CPU可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法S101~S103。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本发明的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (9)
1.一种嵌入式时间序列数据管理方法,其特征在于,应用于管理***,包括:
接收时间序列数据的注册信息,按照所述时间序列数据的采集时间划分管理对象,使采集时间相同的时间序列数据作为一个管理对象;
为每个管理对象创建对象管理空间,并在所述对象管理空间中创建对象存储单元;所述对象存储单元包括若干一级时间区间存储块,每个一级时间区间存储块用于存储对应时间区间范围内的时间序列数据;
响应于数据操作命令,执行相应数据操作,包括:响应于数据检索命令,执行数据检索操作,其中,所述数据操作命令包括所述数据检索命令,所述数据检索命令,包括对象属性信息和检索条件信息;
所述响应于数据检索命令,执行数据检索操作,包括:
当所述检索条件信息中的检索时间的粒度为一级时间区间时,通过检索时间的一级时间区间计算哈希值,映射到对应的一级时间区间存储块;
当所述检索条件信息中的检索时间的粒度为二级时间区间时,在映射出一级时间区间存储块后,加载检索映射链表,通过递归算法定位到检索映射链表中的二级时间区间的数据编号,通过二级时间区间的数据编号匹配出一级时间区间存储块中对应的二级时间区间基点,映射出二级时间区间;
当所述检索条件信息中的检索时间的粒度为单位粒度时,在映射出二级时间区间后,获取二级时间区间的数据总数,通过binary search算法在二级时间区间内循环筛查检索时间,定位到目标数据。
2.根据权利要求1所述的方法,其特征在于,所述时间序列数据为由在不同时间点上收集到的带有时间标签的数据按时间顺序组成的有序数据集。
3.根据权利要求1所述的方法,其特征在于,所述数据操作命令,包括数据增加命令、数据读取命令和数据删除命令;
响应于所述数据增加命令,执行数据增加操作;
响应于所述数据读取命令,执行数据读取操作;
响应于所述数据删除命令,执行数据删除操作。
4.根据权利要求3所述的方法,其特征在于,所述数据增加命令,包括对象属性信息、流控制信息和数据信息;
所述响应于所述数据增加命令,执行数据增加操作,包括:
S201、判断所述对象存储单元中是否存在待增加数据的时间标签所属的一级时间区间对应的一级时间区间存储块,如果存在,则执行S202;否则创建对应的一级时间区间存储块,执行S202;
S202、创建所述待增加数据对应的检索映射链表,将所述检索映射链表与对应的待增加数据一同存储在对应的一级时间区间存储块中。
5.根据权利要求4所述的方法,其特征在于,还包括对所述待增加数据进行流写入控制;
所述流写入控制包括:
如果所述待增加数据达到或超过对象的数据最大长度,则本条待增加数据增加结束;
如果所述待增加数据为一条数据的数据片段且未达到对象的数据最大长度,则可继续对本条数据进行追加,直至达到对象的数据最大长度或启动下一条数据的增加,本条数据增加结束。
6.根据权利要求4所述的方法,其特征在于,所述创建所述待增加数据对应的检索映射链表,包括:
S301、为所述待增加数据创建一检索映射链表,所述检索映射链表包括二级时间区间映射链接和数据编号,所述二级时间区间映射链接用于描述当前一级时间区间存储块中的二级时间区间的链接链路,包括二级时间区间基点标识和二级时间区间基点编号;所述数据编号用于描述数据的唯一序列编号;一级时间区间由若干二级时间区间组成;
S302、读取相邻的上一条时间序列数据的检索映射链表,判断待增加数据的时间标签所属的二级时间区间属性与上一条时间序列数据的时间标签所属的二级时间区间属性是否一致,如果是,则执行S303;否则将待增加数据的二级时间区间映射链接中的二级时间区间基点编号设置为上一条时间序列数据的二级时间区间基点编号,并设置二级时间区间基点标识为真;
S303、判断上一条时间序列数据的二级时间区间基点标识是否为真,如果是,则上一条时间序列数据为所述二级时间区间基点,将待增加数据的二级时间区间映射链接中的二级时间区间基点编号设置为上一条时间序列数据的数据编号;否则,上一条时间序列数据不为所述二级时间区间基点,将待增加数据的二级时间区间映射链接中的二级时间区间基点编号设置为上一条时间序列数据的二级时间区间基点编号。
7.根据权利要求3所述的方法,其特征在于,所述数据读取命令,包括:
对象属性信息、检索结果信息、流控制信息和数据处理句柄;
所述响应于所述数据读取命令,执行数据读取命令,包括:
根据所述检索结果信息判断待读取数据的数据长度是否超过对象的数据最大长度,如果是,则采用完整读取模式对待读取数据进行读取;否则采用流读取模式对待读取数据进行读取;
所述流读取模式,包括:
每次从对应的一级时间区间存储块中读取流控制信息中指定长度的数据片段,映射到数据处理句柄,对数据片段进行处理,直到整条数据读取完整;
所述完整读取模式,包括:
每次从对应的一级时间区间存储块中读取一条完整数据,映射到数据处理句柄,对整条数据进行处理。
8.根据权利要求3所述的方法,其特征在于,所述数据删除命令,包括:对象属性信息和删除输入信息;
所述响应于所述数据删除命令,执行数据删除操作,包括:
当所述删除输入信息的时间粒度为一级时间区间时,对对应的一级时间区间存储块进行删除;
当所述删除输入信息的时间粒度为第二时间区间时,检索出待删除数据的后一相邻的二级时间区间基点对应的数据,将该数据的二级时间区间基点编号修改为所述待删除数据的前一相邻的二级时间区间基点编号。
9.一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110035703.8A CN112765170B (zh) | 2021-01-12 | 2021-01-12 | 一种嵌入式时间序列数据管理方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110035703.8A CN112765170B (zh) | 2021-01-12 | 2021-01-12 | 一种嵌入式时间序列数据管理方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112765170A CN112765170A (zh) | 2021-05-07 |
CN112765170B true CN112765170B (zh) | 2024-01-09 |
Family
ID=75701536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110035703.8A Active CN112765170B (zh) | 2021-01-12 | 2021-01-12 | 一种嵌入式时间序列数据管理方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112765170B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115718825B (zh) * | 2022-11-25 | 2024-05-31 | 中电金信软件有限公司 | 一种时长标签的确定方法、装置及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256088A (zh) * | 2018-01-23 | 2018-07-06 | 清华大学 | 一种基于键值数据库的时序数据的存储方法及*** |
CN110825733A (zh) * | 2019-10-08 | 2020-02-21 | 华中科技大学 | 一种面向多采样流的时间序列数据管理方法及*** |
-
2021
- 2021-01-12 CN CN202110035703.8A patent/CN112765170B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256088A (zh) * | 2018-01-23 | 2018-07-06 | 清华大学 | 一种基于键值数据库的时序数据的存储方法及*** |
CN110825733A (zh) * | 2019-10-08 | 2020-02-21 | 华中科技大学 | 一种面向多采样流的时间序列数据管理方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN112765170A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2017202873B2 (en) | Efficient query processing using histograms in a columnar database | |
CN112100219B (zh) | 基于数据库查询处理的报表生成方法、装置、设备和介质 | |
US10606806B2 (en) | Method and apparatus for storing time series data | |
US11204935B2 (en) | Similarity analyses in analytics workflows | |
US20140358867A1 (en) | De-duplication deployment planning | |
CN111125171A (zh) | 一种监测数据存取方法、装置、设备及可读存储介质 | |
US9213759B2 (en) | System, apparatus, and method for executing a query including boolean and conditional expressions | |
CN112765170B (zh) | 一种嵌入式时间序列数据管理方法及设备 | |
CN112433888B (zh) | 数据处理方法及装置、存储介质和电子设备 | |
CN110580253B (zh) | 时序数据组的加载方法、装置、存储介质及电子设备 | |
US20110093688A1 (en) | Configuration management apparatus, configuration management program, and configuration management method | |
CN113297245A (zh) | 获取执行信息的方法及装置 | |
CN104317820B (zh) | 报表的统计方法和装置 | |
US11645283B2 (en) | Predictive query processing | |
CN114968725A (zh) | 任务依赖关系校正方法、装置、计算机设备及存储介质 | |
CN113553320B (zh) | 数据质量监控方法及装置 | |
CN110489125B (zh) | 文件管理方法和计算机存储介质 | |
JP6627809B2 (ja) | データベース処理装置、システム、方法およびプログラム | |
CN116467162A (zh) | 分布式数据库索引推荐的模拟环境搭建方法及*** | |
CN117743400A (zh) | 数据查询方法、装置、电子设备及计算机存储介质 | |
CN115712619A (zh) | 用于燃气用户标签生成的方法、装置、设备及介质 | |
CN117873388A (zh) | 数据写入方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |