CN114090577A - 时序数据的存储、读取方法及装置 - Google Patents
时序数据的存储、读取方法及装置 Download PDFInfo
- Publication number
- CN114090577A CN114090577A CN202111302173.5A CN202111302173A CN114090577A CN 114090577 A CN114090577 A CN 114090577A CN 202111302173 A CN202111302173 A CN 202111302173A CN 114090577 A CN114090577 A CN 114090577A
- Authority
- CN
- China
- Prior art keywords
- time
- data
- sequence
- memory
- series data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000013500 data storage Methods 0.000 title claims description 16
- 230000015654 memory Effects 0.000 claims abstract description 168
- 238000005192 partition Methods 0.000 claims description 53
- 238000012545 processing Methods 0.000 claims description 52
- 238000009825 accumulation Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 230000002123 temporal effect Effects 0.000 description 13
- 230000008569 process Effects 0.000 description 9
- 101100247669 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB1 gene Proteins 0.000 description 3
- 101150025928 Segment-1 gene Proteins 0.000 description 3
- 101100242902 Thogoto virus (isolate SiAr 126) Segment 1 gene Proteins 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 241000282575 Gorilla Species 0.000 description 1
- 101100242890 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PA gene Proteins 0.000 description 1
- 101100242901 Quaranfil virus (isolate QrfV/Tick/Afghanistan/EG_T_377/1968) PB2 gene Proteins 0.000 description 1
- 101150082826 Segment-2 gene Proteins 0.000 description 1
- 101150027881 Segment-3 gene Proteins 0.000 description 1
- 101100194052 Thogoto virus (isolate SiAr 126) Segment 2 gene Proteins 0.000 description 1
- 101100242891 Thogoto virus (isolate SiAr 126) Segment 3 gene Proteins 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
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
-
- 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/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2477—Temporal data queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种时序数据的存储、读取方法及装置。在存储第一时序数据时,基于第一时序数据的时间戳,将其对应地存储在第一内存的时序数据序列中;从时序数据序列中确定待淘汰的第二时序数据,将第二时序数据存储至第二内存中。其中,时序数据序列用于提供最新的第一时段的数据查询,第二内存用于提供次新的第二时段内的数据查询。在查询数据时,当待查询时序数据的时间戳处于第一时段内时,从第一内存的时序数据序列中获取待查询时序数据;当时间戳处于第二时段内时,从第二内存中获取待查询时序数据。
Description
技术领域
本说明书一个或多个实施例涉及数据处理技术领域,尤其涉及一种时序数据的存储、读取方法及装置。
背景技术
时序数据是随着时间不断产生的、以时间为序列的数据。例如,机器的性能数据每时每刻都在产生,是一种典型的时间序列数据,简称时序数据。很多时候,时序数据需要长期保存,以方便在运营维护时查看指定时间范围内的状态趋势,或者查看某一时刻的详细时序数据。因此,对时序数据进行存储和读取是机器需要不断地执行的操作。
因此,希望能有改进的方案,可以提供更合理的时序数据存储模式,使得对时序数据的读取更方便,效率更高。
发明内容
本说明书一个或多个实施例描述了一种时序数据的存储、读取方法及装置,以提供更合理的时序数据存储模式,使得对时序数据的读取更方便,效率更高。具体的技术方案如下。
第一方面,实施例提供了一种时序数据存储方法,通过处理设备执行,所述处理设备包括第一内存和第二内存;所述方法包括:
获取待存储的第一时序数据;
基于所述第一时序数据的第一时间戳,将所述第一时序数据对应地存储在所述第一内存的时序数据序列中;其中,所述时序数据序列包含第一时长的时序数据,用于提供针对第二时刻到第一时刻的第一时段内的数据查询,所述第二时刻比所述第一时刻早所述第一时长;
从所述时序数据序列中确定待淘汰的第二时序数据,将所述第二时序数据存储至所述第二内存中;其中,所述第二内存用于存储第二时长的时序数据,并用于提供针对第三时刻到所述第二时刻的第二时段内的数据查询,所述第三时刻比所述第二时刻早所述第二时长。
在一种实施方式中,从所述时序数据序列中确定待淘汰的第二时序数据的步骤,包括:
基于所述时序数据序列中时间戳超出所述第一时段的时序数据,确定待淘汰的第二时序数据。
在一种实施方式中,所述时序数据序列包括临时序列和存储序列;
所述将所述第一时序数据对应地存储在所述第一内存的时序数据序列中的步骤,包括:
当所述第一时间戳落在所述第一时段中时间最晚的第三时长内时,将所述第一时序数据存储在所述临时序列中;
当所述临时序列中的时序数据达到预设累积条件时,将所述临时序列中的累积时序数据转存至所述存储序列中,所述累积时序数据中包含所述第一时序数据;
所述从所述时序数据序列中确定待淘汰的第二时序数据的步骤,包括:
从所述存储序列中确定待淘汰的第二时序数据。
在一种实施方式中,所述临时序列和存储序列被划分为若干个时间分桶,所述时间分桶的时长为所述第三时长;
所述将所述临时序列中的累积时序数据存储至所述存储序列中的步骤,包括:
当所述临时序列中的最晚时间分桶的时序数据存满时,将所述最晚时间分桶中的时序数据作为累积时序数据,转存至所述存储序列中对应的最晚时间分桶中。
在一种实施方式中,所述从所述存储序列中确定待淘汰的第二时序数据的步骤,包括:
在将所述累积时序数据转存至所述存储序列中对应的最晚时间分桶中之前,将所述存储序列中的最早时间分桶中的时序数据,确定为待淘汰的第二时序数据。
在一种实施方式中,所述临时序列的数量为若干个,若干个临时序列分别与不同的对象对应,所述第一时序数据包括若干个对象的时序数据;
所述将所述第一时序数据存储在所述临时序列中的步骤,包括:
将所述第一时序数据中若干个对象的时序数据分别存储至对应的临时序列中;
所述转存至所述存储序列中对应的最晚时间分桶中的步骤,包括:
当若干个临时序列中的最晚时间分桶的时序数据存满时,将所述最晚时间分桶中若干个对象的时序数据作为累积时序数据,转存至所述存储序列中对应的最晚时间分桶中。
在一种实施方式中,所述第二内存包括多个物理存储单元;所述将所述第二时序数据存储至所述第二内存中的步骤,包括:
确定所述第二内存中待写入的物理存储单元;
基于所述待写入的物理存储单元,对所述第二时序数据进行存储。
在一种实施方式中,所述时序数据序列包括若干个时间分桶;所述第二时序数据为一个时间分桶的时序数据;
在对所述第二时序数据进行存储之后,还包括:
记录所述第二时序数据对应的时间分桶与存储所述第二时序数据的物理存储单元之间的对应关系。
在一种实施方式中,所述第二时序数据包括若干个对象的时序数据;一个物理存储单元被划分为若干个逻辑单元;
所述对所述第二时序数据进行存储的步骤,包括:
针对所述若干个对象中的任意一个对象,将所述第二时序数据中该对象的时序数据,写入物理存储单元中与该对象对应的逻辑单元中。
在一种实施方式中,所述记录所述第二时序数据对应的时间分桶与存储所述第二时序数据的物理存储单元之间的对应关系的步骤,包括:
基于时序数据归属的对象与数据分区的对应关系,以及所述第二时序数据归属的对象,确定所述第二时序数据所在的第一数据分区;
将所述第二时序数据对应的时间分桶与存储所述第二时序数据的物理存储单元之间的对应关系,记录在所述第一数据分区对应的列表中。
在一种实施方式中,所述第二内存采用AEP实现。
在一种实施方式中,该方法还包括:
将所述第一时序数据存储在磁盘中;其中,所述磁盘用于存储第四时长的时序数据,并用于提供针对第四时刻到所述第三时刻的第三时段内的数据查询,所述第四时刻早于所述第三时刻,所述第四时长大于所述第三时段的时长。
第二方面,实施例提供了一种时序数据读取方法,通过处理设备执行,所述处理设备包括第一内存和第二内存;所述方法包括:
接收针对时序数据的查询请求,其中携带待查询时序数据的第二时间戳;
当所述第二时间戳处于第二时刻到第一时刻的第一时段内时,从所述第一内存中的时序数据序列中获取所述待查询时序数据;其中,所述第二时刻比所述第一时刻早第一时长,所述时序数据序列包含第一时长的时序数据;
当所述第二时间戳处于第三时刻到所述第二时刻的第二时段内时,从所述第二内存中获取所述待查询时序数据;其中,所述第三时刻比所述第二时刻早第二时长,所述第二内存用于存储第二时长的时序数据。
在一种实施方式中,所述时序数据序列包括临时序列和存储序列;
所述从所述第一内存中的时序数据序列中获取所述待查询时序数据的步骤,包括:
当所述第二时间戳落在所述第一时段中时间最晚的第三时长内时,从所述临时序列中获取所述待查询时序数据;
当所述第二时间戳落在所述第一时段中所述时间最晚的第三时长之外时,从所述存储序列中获取所述待查询时序数据。
在一种实施方式中,所述第二内存包括多个物理存储单元;所述时序数据序列包括若干个时间分桶;
所述从所述第一内存中的时序数据序列中获取所述待查询时序数据的步骤,包括:
确定所述第二时间戳所在的第一时间分桶;
从所述时序数据序列的第一时间分桶中获取所述待查询时序数据;
所述从所述第二内存中获取所述待查询时序数据的步骤,包括:
基于时间分桶与物理存储单元之间的对应关系,确定所述第一时间分桶对应的第一物理存储单元;
从所述第一物理存储单元中获取所述待查询时序数据。
在一种实施方式中,所述第一物理存储单元包含若干个逻辑单元,逻辑单元与对象对应;所述待查询时序数据归属于第一对象;所述从所述第一物理存储单元中获取所述待查询时序数据的步骤,包括:
从所述若干个逻辑单元中确定所述第一对象对应的第一逻辑单元;
从所述第一逻辑单元中获取所述待查询时序数据。
在一种实施方式中,所述待查询时序数据归属于第一对象;所述基于时间分桶与物理存储单元之间的对应关系,确定所述第一时间分桶对应的第一物理存储单元的步骤,包括:
从时序数据归属的对象与数据分区之间的对应关系中,确定所述第一对象对应的第二数据分区,所述第二数据分区对应于第一列表;
从所述第一列表包含的时间分桶与物理存储单元之间的对应关系中,确定所述第一时间分桶对应的第一物理存储单元。
在一种实施方式中,该方法还包括:
当所述第二时间戳处于第四时刻到第三时刻的第三时段内时,从磁盘中获取所述待查询时序数据;其中,所述第四时刻早于所述第三时刻,所述磁盘用于存储第四时长的时序数据,所述第四时长大于所述第三时段的时长。
第三方面,实施例提供了一种时序数据存储装置,部署在处理设备中,所述处理设备包括第一内存和第二内存;所述装置包括:
第一获取模块,配置为,获取待存储的第一时序数据;
第一存储模块,配置为,基于所述第一时序数据的第一时间戳,将所述第一时序数据对应地存储在所述第一内存的时序数据序列中;其中,所述时序数据序列包含第一时长的时序数据,用于提供针对第二时刻到第一时刻的第一时段内的数据查询,所述第二时刻比所述第一时刻早所述第一时长;
第二存储模块,配置为,从所述时序数据序列中确定待淘汰的第二时序数据,将所述第二时序数据存储至所述第二内存中;其中,所述第二内存用于存储第二时长的时序数据,并用于提供针对第三时刻到所述第二时刻的第二时段内的数据查询,所述第三时刻比所述第二时刻早所述第二时长。
第四方面,实施例提供了一种时序数据读取装置,部署在处理设备中,所述处理设备包括第一内存和第二内存;所述装置包括:
接收模块,配置为,接收针对时序数据的查询请求,其中携带待查询时序数据的第二时间戳;
第二获取模块,配置为,当所述第二时间戳处于第二时刻到第一时刻的第一时段内时,从所述第一内存中的时序数据序列中获取所述待查询时序数据;其中,所述第二时刻比所述第一时刻早第一时长,所述时序数据序列包含第一时长的时序数据;
第三获取模块,配置为,当所述第二时间戳处于第三时刻到所述第二时刻的第二时段内时,从所述第二内存中获取所述待查询时序数据;其中,所述第三时刻比所述第二时刻早第二时长,所述第二内存用于存储第二时长的时序数据。
第五方面,实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面和第二方面中任一项所述的方法。
第六方面,实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面和第二方面中任一项所述的方法。
本说明书实施例提供的方法及装置中,在对时序数据进行存储时,采用第一内存存储第一时长的时序数据,并用于提供第一时段内的数据查询,采用第二内存存储第二时长的时序数据,并用于提供第二时段内的数据查询。第一时段是比第一时段更晚的时段,即第一内存存储最新的时序数据,并提供针对最新时序数据的数据查询,而第二内存存储次新的时序数据,并提供针对次新时序数据的数据查询。由于针对最新和次新时序数据的查询频率是不同的,采用第一内存和第二内存分别针对不同查询频率的时序数据进行存储,使得次新的时序数据也能更快地被读取到,因此能够提高对时序数据的读取效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书披露的一个实施例的实施场景示意图;
图2为实施例提供的一种时序数据存储方法的流程示意图;
图3-1为时间轴上多个时刻、时段和时长的一种示意图;
图3-2为临时序列和存储序列中时间分桶的一种示意图;
图3-3为采用物理存储单元存储时间分桶中数据的一种示意图;
图4为实施例提供的一种时序数据读取方法的流程示意图;
图5为实施例提供的一种时序数据存储装置的示意性框图;
图6为实施例提供的一种时序数据读取装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
时序数据是时间序列数据的简称,是对象在时间维度上产生的原始数据,也可以是对对象在时间维度上产生的原始数据进行处理后的数据,该处理可以包括降采样和/或聚合。上述对象可以是实体对象或事件。实体对象可以包括计算机设备、摄像头和音频设备等。实体对象在时间维度上产生的原始数据可以是实体对象的状态数据,也可以是实体对象输入和/或输出的数据。时序数据可以包含日志数据。事件在时间维度上产生的原始数据,可以是对事件的跟踪而产生的原始数据。
在下文中,采用“对象”标识时序数据,即时序数据包含这三部分:对象、时间戳和数据。例如,某时序数据是主机a的CPU在不同时刻的温度数据,那么对象则表示“主机a的CPU的温度”。
处理设备可以用于存储和读取时序数据。该处理设备可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。在实际应用中,处理设备往往会同时处理多个对象的时序数据的存储和读取需求。这就对处理设备在处理读取请求时的性能有了更高的要求。为了使得对时序数据的读取更方便,效率更高,本说明书实施例提供了一种更合理的时序数据存储、读取模式。
图1为本说明书披露的一个实施例的实施场景示意图。处理设备中包括CPU、第一内存和第二内存。处理设备可以获取时序数据,并将最新数据存储在第一内存中,将次新数据存储在第二内存中,第一内存可以用于提供最新、最热数据的查询,第二内存可以用于提供次新数据的查询。最新数据例如可以是12h内的数据,次新数据例如可以是12h之外、5天内的数据。最新数据和次新数据的具体时间范围可以根据需要进行设定。由于内存的读写速度比较快,将最新和次新的数据存储在内存中,能够在较大程度上提供高性能的查询服务。对于时序数据,还可以将其持久化存储在磁盘中,以保证数据的安全不丢失。例如磁盘中可以存储30天内的全量数据。磁盘可以用于提供非最新数据和非次新数据的时序数据查询,例如可以提供5天之外、30天以内的查询服务。
上述第一内存可以是处理设备中的原有内存。上述第二内存可以采用AEP(ApachePass)实现。AEP是基于3D XPoint介质的新型内存,是采用双列直插内存模块(Dual InlineMemory Module,DIMM)形态的产品。AEP的读写性能比磁盘高出几个数量级,其价格比普通内存更便宜,因此可以作为第二内存的一种选择。上述磁盘可以是处理设备中的磁盘,也可以是其他的数据存储设备中的磁盘。
下面结合具体实施例对本申请进行详细说明。
图2为实施例提供的一种时序数据存储方法的流程示意图。该方法可以通过处理设备执行,该处理设备包括第一内存和第二内存。该方法包括以下步骤S210~S230。
步骤S210,获取待存储的第一时序数据(采用data1表示)。
其中,第一时序数据data1是大量时序数据中的任意一个。第一时序数据data1也可以流式时序数据中的任意一段。第一时序数据data1携带自身的第一时间戳timestamp1。
当第一时序数据data1是其他设备生成的时,处理设备可以接收其他设备发送的第一时序数据data1。当第一时序数据是处理设备自身生成的时,处理设备可以从自身读取第一时序数据。
步骤S220,基于第一时序数据data1的第一时间戳timestamp1,将第一时序数据data1对应地存储在第一内存的时序数据序列中。
其中,第一内存用于存储最新的时序数据,最新的时序数据以时序数据序列的形式存储在第一内存中。时序数据序列包含第一时长的时序数据,用于提供针对第二时刻t2到第一时刻t1的第一时段内的数据查询,第二时刻t2比第一时刻t1早第一时长,也就是第一时刻t1与第二时刻t2之间的时间长度为第一时长。参见图3-1所示示意图,该图3-1为时间轴上多个时刻、时段和时长的一种示意图。其中,第一时段可以采用t2~t1表示。
第一时刻t1可以理解为当前时刻,也就是获取到第一时序数据data1的时刻。
步骤S230,从时序数据序列中确定待淘汰的第二时序数据data2,将第二时序数据data2存储至第二内存中。
其中,第二内存用于存储第二时长的时序数据,并用于提供针对第三时刻t3到第二时刻t2的第二时段内的数据查询,第三时刻t3比第二时刻t2早第二时长,参见图3-1所示示意图。第二时段内的数据是次新的时序数据,第二内存用于提供次新的时序数据的存储和查询。
在从时序数据序列中确定待淘汰的第二时序数据data2时,可以基于时序数据序列中时间戳超出第一时段t2~t1的时序数据,确定待淘汰的第二时序数据data2。例如,可以直接将时序数据序列中时间戳超出第一时段t2~t1的时序数据,确定为第二时序数据data2。也可以采用其他方式确定第二时序数据data2。
随着时间的推进,第一内存中时序数据不断地被更新,淘汰的较旧数据被转移至第二内存中。当向第一内存的时序数据序列中添加当前时刻的时序数据时,时序数据序列中最早的时序数据被挤到第二内存中。
在本实施例中,用户针对最新时序数据和次新时序数据的查询频率一般是不同的。例如,将第一时长设定为当前时刻之前的12h以内,将第二时长设定为12h以外且5天以内。当前时刻之前,是指早于当前时刻的时间。经过研究测试可知,大约90%的数据查询落在第一时段内,大约8%的数据查询落在第二时段内。针对较大的查询频率差别,将不同查询频率的时序数据存储在不同的内存中,使得第一内存和第二内存分别针对不同查询频率的时序数据进行存储,这对于数据查询的底层读写操作来说,是更加合理、高效的。
在一种应用场景中,可以仅使用第一内存存储最新的时序数据,全量数据存储在磁盘中。但是,会有部分查询请求落在第一内存之外。对于这部分查询请求,处理设备可以从磁盘中获取对应的待查询数据。而本实施例中,在处理设备中增加第二内存,将次新的时序数据从磁盘存储转移至第二内存存储。针对落在第一内存之外的查询请求,可以从第二内存中获取,进而能够缩短这部分查询的时延,提高读取效率。当查询请求是用户发出时,本实施例中的缩短时延能较明显地提高用户体验。
在一种实施方式中,为了进一步提高应对查询时的处理效率,可以将时序数据序列划分为临时序列和存储序列。临时序列的时间长度可以与存储序列的时间长度相同,也可以不相同。临时序列和存储序列的时间长度可以都是第一时长,也可以是,两者的时长加起来是第一时长;还可以是,临时序列的时长小于第一时长,存储序列的时长大于第一时长。
具体的,临时序列可以用于存储第一时段中时间最晚的第三时长内的时序数据,存储序列用于存储第一时段内的其他数据。其中,第三时长小于第一时长。例如,第一时长为12h,第三时长可以设置为100s。这种情况下,临时序列存储当前时刻(也就是第一时刻t1)之前的100s内的时序数据,存储序列存储当前时刻之前100s以外且12h以内的时序数据。
在步骤S210中,处理设备在获取到时序数据之后,可以对其进行压缩,并将压缩后的数据存储在临时序列中。在一种应用场景中,当时序数据是流数据时,处理设备可以采用Gorilla压缩算法对流数据进行压缩,将压缩数据存储在临时序列中。
因此,当第一时间戳timestamp1落在第一时段中时间最晚的第三时长内时,将第一时序数据data1存储在临时序列中。当临时序列中的时序数据达到预设累积条件时,将临时序列中的累积时序数据转存至存储序列中,累积时序数据中包含第一时序数据data1。
其中,上述预设累积条件可以是时序数据累积达到第三时长中的部分时长或全部时长。转存的含义是指,将累积时序数据转移到存储序列中,临时序列中不再存储这部分数据。
当第一时间戳timestamp1落在上述时间最晚的第三时长之外的第一时段内时,将第一时序数据data1直接存储在存储序列中。例如,data1的时间戳落在当前时刻之前的100s到10h之间,可以将data1存储在存储序列中。在这种情况下,第一时序数据data1并不是当前时刻的数据,可能是较早时刻的时序数据的更新数据。如果存储序列中的时序数据是按照时间戳排列的,则可以将第一时序数据data1存储在存储序列中的对应位置处,该对应位置处,是指在时间戳排序中第一时间戳timestamp1所在的位置。
在本实施例中,可以从存储序列中确定待淘汰的第二时序数据data2。
在一种实施方式中,可以将第一内存中的时序数据序列划分成若干个时间分桶,也就是,临时序列和存储序列被划分为若干个时间分桶。所划分的时间分桶的数量可以是一个,也可以是两个或两个以上。一般情况下,临时序列和存储序列被划分为多个时间分桶。例如,当存储序列所存储的时序数据的时长为12h时,可以按照1h为单位,将12h划分为12个时间分桶。时间分桶的时长,一般来说是相同的。将临时序列和/或存储序列划分成多个时间分桶,能够对连续的流式时序数据进行划分,使得数据查询更方便。
在一种实施方式中,时间分桶的时长可以设置为第三时长。临时序列中的时间分桶可以存储最新的时序数据,该时间分桶也称为临时序列中的最晚时间分桶bucket1。当临时序列中的最晚时间分桶bucket1的时序数据存满时,将临时序列中的最晚时间分桶bucket1中的时序数据作为累积时序数据,转存至存储序列中对应的最晚时间分桶中。
在从存储序列中确定待淘汰的第二时序数据data2时,可以在将累积时序数据转存至存储序列中对应的最晚时间分桶中之前,将存储序列中的最早时间分桶中的时序数据,确定为待淘汰的第二时序数据data2。
对于临时序列和/或存储序列,其中的时间分桶以及时间分桶中的时序数据,可以按照时间顺序进行排列。例如可以按照从晚到早的时间顺序排列。这样,在从存储序列中确定待淘汰的第二时序数据data2时,可以将最后一个时间分桶bucketN中的时序数据确定为第二时序数据data2。基于最后一个时间分桶确定第二时序数据,可以不再检测时序数据的时间戳是否是最晚的,从而减少检测次数,提高处理效率。当然,上述时间顺序也可以是从早到晚的顺序,从而可以将存储序列中第一个时间分桶bucket1中的时序数据确定为第二时序数据data2。
在一种应用场景中,处理设备需要处理多个对象的时序数据,例如很多主机设备的状态监测数据。在本实施例中,第一时序数据data1可以包括若干个对象的时序数据,临时序列的数量为若干个,若干个临时序列分别与不同的对象对应。
参见图3-2,图3-2为临时序列和存储序列中时间分桶的一种示意图。其中,临时序列和存储序列被划分为N个时间分桶bucket1~bucketN,N为整数。每个时间分桶的时长为1h,0可以理解为当前时刻的位置,3600s代表当前时刻之前的3600s的时刻。临时序列和存储序列中时间分桶的时长相同,bucket1为最晚时间分桶,bucketN为最早时间分桶。bucket1~bucketN按照时间从晚到早的顺序排列。图3-2中示例性地出2个对象的临时序列,实际应用中可以存在更多个对象以及临时序列。
当第一时序数据data1包含若干个对象的时序数据时,可以将第一时序数据data1中若干个对象的时序数据分别存储至对应的临时序列中。对应的临时序列是指与对象对应的临时序列,例如,对象1的时序数据存储至对象1的临时序列中,对象2的时序数据存储至对象2的临时序列中。
当多个临时序列中的最晚时间分桶的时序数据存满时,将临时序列的最晚时间分桶中若干个对象的时序数据作为累积时序数据,转存至存储序列中对应的最晚时间分桶中。例如,当对象1和对象2的临时序列中最晚时间分桶bucket1的时序数据存满时,将该bucket1中的时序数据转存至存储序列的bucket1中。
最晚时间分桶bucket1的时序数据存满,可以理解为,按照该最晚时间分桶bucket1对应的时间区间,该时间区间的临界点已经到来。例如,时间分桶bucket1的时间区间是5时到6时,当6时到来时,则可以认为bucket1中的时序数据已经存满。每个时间分桶的时间区间可以预先确定,也可以随时根据需求调整。
本实施例中,将临时序列中多个对象的时序数据存储在存储序列的一个时间分桶中。例如,在图3-2中,将对象1的临时序列bucket1中的数据a,以及对象2的临时序列bucket1中的数据b存储在存储序列的bucket1中,数据a采用对象1进行标识,数据b采用对象2进行标识。
在存储序列中,多个对象的时序数据,都存储在一个时间分桶中,使得内存中的数据结构更加紧密,空间利用率更高。
将临时序列中的时序数据转移至存储序列中,还可以在临时序列的时间分桶中存储索引信息,该索引信息指向存储序列中对应的时间分桶。在进行数据查询时,可以基于临时序列中的索引信息,从存储序列中确定对应的时序数据。
下面再来对第二内存进行详细说明。
第二内存可以包括多个物理存储单元,一个物理存储单元的存储量是固定的。例如,当第二内存采用AEP时,可以采用本实施例的存储方式进行存储。在将第二时序数据data2存储至第二内存中时,可以确定第二内存中待写入的物理存储单元,基于待写入的物理存储单元,对第二时序数据data2进行存储。在确定待写入的物理存储单元时,可以从空闲的物理存储单元中确定待写入物理存储单元,例如可以是任意一个空闲的物理存储单元。也可以是,按照顺序,根据偏移位置确定待写入的物理存储单元。
在写入第二时序数据data2时,可以从待写入的物理存储单元开始写入,确定写入第二时序数据data2的结尾物理存储单元,并将该结尾物理存储单元的下一个物理存储单元的位置确定为偏移位置。
在一种实施方式中,当时序数据序列包括若干个时间分桶时,第二时序数据data2可以是一个时间分桶的时序数据,例如可以是从存储序列中的最早时间分桶淘汰的时序数据。
在对第二时序数data2据进行存储之后,还可以记录第二时序数据data2对应的时间分桶与存储第二时序数据data2的物理存储单元之间的对应关系,作为索引信息,用于时序数据查询。这里,存储第二时序数据data2的物理存储单元可以是一个,也可以是多个。在记录时,可以采用“对象+时间戳”的形式表示时序数据,并利用物理存储单元的标识记录上述对应关系。
一个物理存储单元可以被划分为若干个逻辑单元。当第二时序数据data2中包括若干个对象的时序数据时,可以采用不同的逻辑单元来存储不同对象的时序数据。例如,针对若干个对象中的任意一个对象,将第二时序数据data2中该对象的时序数据,写入物理存储单元中与该对象对应的逻辑单元中。对象的时序数据可以采用键值对的方式进行存储,对象作为键,时序数据作为值。当一个对象的时序数据写入对应的逻辑单元之后,可以记录该时序数据在该物理存储单元中的偏移位置。
将物理存储单元划分成若干个逻辑单元的过程,可以是在存储对象的时序数据的过程中进行的。每个逻辑单元的大小(存储量)可以是不同的,这可以由对象时序数据的数据量决定。
参见图3-3,该图3-3为采用物理存储单元存储时间分桶中数据的一种示意图。其中,时间分桶bucket1中的时序数据在物理存储单元datafileA中存储,bucket2中的时序数据在物理存储单元datafileB中存储,bucket3中的时序数据在物理存储单元datafileC中存储。datafileA、datafileB和datafileC是任意的三个物理存储单元。在datafileA中,逻辑单元segment1用于存储对象1在bucket1中的数据,逻辑单元segment2用于存储对象2在bucket1中的数据,逻辑单元segment3用于存储对象3在bucket1中的数据。这里的多个时间分桶仅仅是一种举例,并不代表存储的顺序。
在一种实施方式中,一个物理存储单元可以包含头部信息,该头部信息中可以包含时间分桶的开始时刻、所在数据分区以及偏移位置等。一个逻辑单元可以包括头部信息,该头部信息可以包含数据长度、对象的各种具体标识和数据量等信息。
在一种实施场景中,对象的数量非常大。为了减少索引带来的开销,可以对对象进行分区。例如,某个监测场景中有1万台主机,可以将这1万台主机划分为10个分区,每个分区中包含1000台主机。对于这1万台主机的时序数据,也进行对应的数据分区,并记录主机归属的数据分区。
因此,可以预先对对象进行数据分区,并记录对象与数据分区的对应关系。对于任意一个数据分区,归属于该数据分区的对象的时序数据,被存储在N个时间分桶中。
每一个数据分区可以维护一个列表,记录时间分桶与物理存储单元之间的对应关系。在一种实施方式中,在记录第二时序数据data2对应的时间分桶与存储第二时序数据data2的物理存储单元之间的对应关系时,可以基于对象与数据分区的对应关系,以及第二时序数据data2归属的对象,确定第二时序数据data2所在的第一数据分区,将第二时序数据对应的时间分桶与存储第二时序数据的物理存储单元之间的对应关系,记录在第一数据分区对应的列表中。
数据分区、对象、时间分桶和物理存储单元之间的关系可以见表1示例。
表1
其中,上表中示例性地将2000个对象划分为2个数据分区1和数据分区2。每个数据分区中包含4个时间分桶,每个时间分桶对应的物理存储单元datafile的编号标注在右侧表格中。上表中右侧的两列,就是每个数据分区对应的列表。表1仅仅是一个例子,并不构成对本申请的限定。
每个数据分区包含的对象可以采用散列表的形式表示。
上述将多个对象划分到不同数据分区的实施方式,也可以应用在第一内存存储时序数据中。在第一内存中,临时序列和存储序列均与数据分区对应,也就是,对于任意一个数据分区,存在与该数据分区对应的临时序列和存储序列。在将第一时序数据存储在第一内存中时,可以根据对象确定数据分区,利用该数据分区对应的临时序列和存储序列,对第一时序数据进行存储。
在本说明书的一个实施例中,可以将时序数据进行持久化存储,例如将数据存储在数据库DB中,以实现全量化存储。
图2所示方法实施例还可以包括,将第一时序数据data1存储在磁盘中,具体可以存储在磁盘的数据库中。其中,磁盘用于存储第四时长的时序数据,并用于提供针对第四时刻t4到第三时刻t3的第三时段内的数据查询,第四时刻t4早于第三时刻t3,第四时长大于第三时段的时长。参见图3-1所示,其中第三时段采用t4~t3表示,第三时长可以是t4与t1之间的时长。其中,第四时长可以但不限于是第三时段的时长与第一时长、第二时长之和,也就是,第四时长可以比第三时段的时长多以下和值:第一时长+第二时长。在这种实施方式中,磁盘可以存储从当前时刻到第四时刻的全量时序数据,包括第一内存和第二内存中的时序数据。
以上内容是针对时序数据存储过程的说明,下面继续对时序数据的读取过程进行说明。时序数据的读取过程与存储过程是相互对应的,因此,在对读取过程进行说明时,会沿用图2所示方法实施例中针对存储过程提供的实施方式以及说明,其中,概念性的内容不再赘述。
图4为实施例提供的一种时序数据读取方法的流程示意图。该方法通过处理设备执行,该处理设备包括第一内存和第二内存。本实施例的方法包括以下步骤S410~S430。
步骤S410,接收针对时序数据的查询请求,其中携带待查询时序数据的第二时间戳timestamp2。该查询请求用于查询与第二时间戳相关联的时序数据。
该查询请求可以是其他设备向处理设备发送的。上述第二时间戳timestamp2的数量,可以是一个,也可以是多个。该查询请求可以用于查询某时间范围内的时序数据,也可以用于查询一个或多个时间点的时序数据。当第二时间戳为多个时,第二时间戳可以用来表示时间范围,也可以用来表示多个时间点。
在接收到查询请求时,处理设备可以判断第二时间戳处于第一时段内,还是第二时段内,根据判断结果执行以下的步骤S420或者S430。
当第二时间戳的数量为多个时,可以针对任意一个第二时间戳执行判断其处于第一时段内还是第二时段内的步骤。当查询请求用于查询某时间范围内的时序数据时,可以确定该时间范围落在第一时段还是第二时段,或者部分落在第一时段,部分落在第二时段。针对落在第一时段的时序数据部分,执行步骤S420;针对落在第二时段的时序数据部分,执行步骤S430。
为了使得描述更简洁明了,以下仅以第二时间戳timestamp2的数量是一个的情况为例进行说明。对于第二时间戳timestamp2的数量是多个的情况,可以将第二时间戳timestamp2拆分成单个的时间戳,或者若干个时间范围,再参照第二时间戳timestamp2的数量是一个的情况进行实施。
步骤S420,当第二时间戳timestamp2处于第一时段内时,从第一内存中的时序数据序列中获取待查询时序数据。
当时序数据序列包括临时序列和存储序列时,可以具体判断第二时间戳落在临时序列中还是存储序列中。当第二时间戳timestamp2落在第一时段中时间最晚的第三时长内时,可以从临时序列中获取待查询时序数据。
当第二时间戳timestamp2落在第一时段中上述时间最晚的第三时长之外时,从存储序列中获取待查询时序数据。
在一种实施方式中,时序数据序列包括若干个时间分桶。在从时序数据序列中获取待查询时序数据时,可以确定第二时间戳timestamp2所在的第一时间分桶bucket_1,从时序数据序列的第一时间分桶bucket_1中获取待查询时序数据。
具体的,当时序数据序列包括临时序列和存储序列时,该临时序列和存储序列可以划分为若干个时间分桶。时间分桶的时长可以为第三时长。在获取待查询时序数据时,如果第一时间分桶bucket_1为若干个时间分桶中的最晚时间分桶时,从临时序列中获取待查询时序数据。最晚时间分桶也是最新时序数据所在的时间分桶,临时序列用于存放最新的第三时长的时序数据。当第一时间分桶bucket_1不为上述最晚时间分桶时,从存储序列中获取待查询时序数据。
在从存储序列中获取待查询时序数据时,可以从临时序列的第一时间分桶bucket_1中获取索引信息,基于该索引信息,从存储序列中获取待查询时序数据。
步骤S430,当第二时间戳timestamp2处于第二时段内时,从第二内存中获取待查询时序数据。
在一种实施方式中,第二内存包括多个物理存储单元。从第二内存中获取待查询时序数据时,可以利用存储时序数据时构建的索引信息进行查询。具体的,可以基于时间分桶与物理存储单元之间的对应关系,确定第一时间分桶bucket_1对应的第一物理存储单元datafile_1,从第一物理存储单元datafile_1中获取待查询时序数据。其中,第一物理存储单元datafile_1的数量可以是一个或多个。
物理存储单元还可以包含若干个逻辑单元。这样,第一物理存储单元datafile_1也包含若干个逻辑单元segment,并且逻辑单元与对象对应,不同的逻辑单元对应于不同的对象。待查询时序数据归属于第一对象A,该第一对象A可以携带在查询请求中。
在从第一物理存储单元datafile_1中获取待查询时序数据时,可以从第一物理存储单元datafile_1的若干个逻辑单元中确定第一对象A对应的第一逻辑单元segment_1,从第一逻辑单元segment_1中获取待查询时序数据。
当多个对象被划分在不同的数据分区中时,在基于时间分桶与物理存储单元之间的对应关系,确定第一时间分桶bucket_1对应的第一物理存储单元datafile_1时,可以采用以下步骤1和2进行。
步骤1,从对象与数据分区之间的对应关系中,确定第一对象A对应的第二数据分区partition2。第二数据分区partition2对应于第一列表。
步骤2,从第一列表包含的时间分桶与物理存储单元之间的对应关系中,确定第一时间分桶bucket_1对应的第一物理存储单元datafile_1。
以上述表1记录的关系为例。当需要在第二内存中查询第一对象A在第二时间戳timestamp2时序数据时,可以基于表1第一列和第二列所示的对象与数据分区的对应关系,确定第一对象A所在的数据分区,例如为数据分区1。然后,从数据分区1右侧的第三列和第四列所示的列表中,利用第一时间分桶bucket_1确定第一物理存储单元datafile_1。
当第一内存中存储的时序数据也按照对象划分不同的数据分区时,在从第一内存中读取待查询时序数据时,可以根据第一对象确定数据分区,利用数据分区对应的时序数据序列,确定该数据分区对应的临时序列和存储序列,从该临时序列和存储序列中确定第一对象的时序数据。
上述步骤S420和S430是针对第一内存和第二内存进行时序数据查询的过程说明。在极少数情况下,第三时刻之前的某时序数据也会被请求查询。
当第二时间戳timestamp2处于第三时段内时,可以从磁盘中获取待查询时序数据。当磁盘位于远程设备中时,可以通过网络获取待查询时序数据。
综上,本说明提供的实施例中,对时序数据采用分级存储的方式,区分最新时序数据、次新时序数据和早起时序数据,分别采用第一内存、第二内存和磁盘进行存储。这种时序数据存储模式下,不同热度的时序数据对应于不同的存储器件,提高了读、写速度。当第二内存采用AEP实现时,利用AEP的硬件性能,可以更方便地实现对既有处理设备的改造,使其达到更高效的时序数据读写处理,进而更好地实现查询服务。
本说明书中,第一时间戳、第一时序数据、第一内存、第一时长和第一时段等中的“第一”,以及文中相应的“第二”“第三”等,仅仅是为了区分和描述方便,而不具有任何限定意义。
上述内容对本说明书的特定实施例进行了描述,其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行,并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的,或者可能是有利的。
图5为实施例提供的一种时序数据存储装置的示意性框图。该装置实施例与图2所示方法实施例相对应。该装置500部署在处理设备中,该处理设备可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。该处理设备包括第一内存和第二内存。
该装置500包括:
第一获取模块510,配置为,获取待存储的第一时序数据;
第一存储模块520,配置为,基于所述第一时序数据的第一时间戳,将所述第一时序数据对应地存储在所述第一内存的时序数据序列中;其中,所述时序数据序列包含第一时长的时序数据,用于提供针对第二时刻到第一时刻的第一时段内的数据查询,所述第二时刻比所述第一时刻早所述第一时长;
第二存储模块530,配置为,从所述时序数据序列中确定待淘汰的第二时序数据,将所述第二时序数据存储至所述第二内存中;其中,所述第二内存用于存储第二时长的时序数据,并用于提供针对第三时刻到所述第二时刻的第二时段内的数据查询,所述第三时刻比所述第二时刻早所述第二时长。
在一种实施方式中,所述第二存储模块530,从所述时序数据序列中确定待淘汰的第二时序数据时,包括:
基于所述时序数据序列中时间戳超出所述第一时段的时序数据,确定待淘汰的第二时序数据。
在一种实施方式中,上述时序数据序列包括临时序列和存储序列;第一存储模块520,具体配置为:
当所述第一时间戳落在所述第一时段中时间最晚的第三时长内时,将所述第一时序数据存储在所述临时序列中;
当所述临时序列中的时序数据达到预设累积条件时,将所述临时序列中的累积时序数据转存至所述存储序列中,所述累积时序数据中包含所述第一时序数据;
所述第二存储模块530,具体配置为,从所述存储序列中确定待淘汰的第二时序数据。
在一种实施方式中,所述临时序列和存储序列被划分为若干个时间分桶,所述时间分桶的时长为所述第三时长;
所述第一存储模块520,将所述临时序列中的累积时序数据存储至所述存储序列中时,包括:
当所述临时序列中的最晚时间分桶的时序数据存满时,将所述最晚时间分桶中的时序数据作为累积时序数据,转存至所述存储序列中对应的最晚时间分桶中。
在一种实施方式中,所述第二存储模块530,具体配置为:
在将所述累积时序数据转存至所述存储序列中对应的最晚时间分桶中之前,将所述存储序列中的最早时间分桶中的时序数据,确定为待淘汰的第二时序数据。
在一种实施方式中,所述临时序列的数量为若干个,若干个临时序列分别与不同的对象对应,所述第一时序数据包括若干个对象的时序数据;
所述第一存储模块520,将所述第一时序数据存储在所述临时序列中时,包括:
将所述第一时序数据中若干个对象的时序数据分别存储至对应的临时序列中;
所述第一存储模块520,在转存至所述存储序列中对应的最晚时间分桶中时,包括:
当若干个临时序列中的最晚时间分桶的时序数据存满时,将所述最晚时间分桶中若干个对象的时序数据作为累积时序数据,转存至所述存储序列中对应的最晚时间分桶中。
在一种实施方式中,所述第二内存包括多个物理存储单元;所述第二存储模块530,将所述第二时序数据存储至所述第二内存中时,包括:
确定所述第二内存中待写入的物理存储单元;
基于所述待写入的物理存储单元,对所述第二时序数据进行存储。
在一种实施方式中,所述时序数据序列包括若干个时间分桶;所述第二时序数据为一个时间分桶的时序数据;装置500还包括:
记录模块(图中未示出),配置为,在对所述第二时序数据进行存储之后,记录所述第二时序数据对应的时间分桶与存储所述第二时序数据的物理存储单元之间的对应关系。
在一种实施方式中,所述第二时序数据包括若干个对象的时序数据;一个物理存储单元被划分为若干个逻辑单元;所述第二存储模块530对所述第二时序数据进行存储时,包括:
针对所述若干个对象中的任意一个对象,将所述第二时序数据中该对象的时序数据,写入物理存储单元中与该对象对应的逻辑单元中。
在一种实施方式中,所述记录模块,具体配置为:
基于时序数据归属的对象与数据分区的对应关系,以及所述第二时序数据归属的对象,确定所述第二时序数据所在的第一数据分区;
将所述第二时序数据对应的时间分桶与存储所述第二时序数据的物理存储单元之间的对应关系,记录在所述第一数据分区对应的列表中。
在一种实施方式中,所述第二内存采用AEP实现。
在一种实施方式中,装置500还包括:
第三存储模块(图中未示出),具体配置为,将所述第一时序数据存储在磁盘中;其中,所述磁盘用于存储第四时长的时序数据,并用于提供针对第四时刻到所述第三时刻的第三时段内的数据查询,所述第四时刻早于所述第三时刻,所述第四时长大于所述第三时段的时长。
图6为实施例提供的一种时序数据读取装置的示意性框图。该装置实施例与图4所示方法实施例相对应。该装置600部署在处理设备中,该处理设备可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。处理设备包括第一内存和第二内存;装置600包括:
接收模块610,配置为,接收针对时序数据的查询请求,其中携带待查询时序数据的第二时间戳;
第二获取模块620,配置为,当所述第二时间戳处于第二时刻到第一时刻的第一时段内时,从所述第一内存中的时序数据序列中获取所述待查询时序数据;其中,所述第二时刻比所述第一时刻早第一时长,所述时序数据序列包含第一时长的时序数据;
第三获取模块630,配置为,当所述第二时间戳处于第三时刻到所述第二时刻的第二时段内时,从所述第二内存中获取所述待查询时序数据;其中,所述第三时刻比所述第二时刻早第二时长,所述第二内存用于存储第二时长的时序数据。
在一种实施方式中,所述时序数据序列包括临时序列和存储序列;第二获取模块620具体配置为:
当所述第二时间戳落在所述第一时段中时间最晚的第三时长内时,从所述临时序列中获取所述待查询时序数据;
当所述第二时间戳落在所述第一时段中所述时间最晚的第三时长之外时,从所述存储序列中获取所述待查询时序数据。
在一种实施方式中,所述第二内存包括多个物理存储单元;所述时序数据序列包括若干个时间分桶;所述第二获取模块620,具体配置为:
确定所述第二时间戳所在的第一时间分桶;
从所述时序数据序列的第一时间分桶中获取所述待查询时序数据;
所述第三获取模块630,具体配置为:
基于时间分桶与物理存储单元之间的对应关系,确定所述第一时间分桶对应的第一物理存储单元;
从所述第一物理存储单元中获取所述待查询时序数据。
在一种实施方式中,所述第一物理存储单元包含若干个逻辑单元,逻辑单元与对象对应;所述待查询时序数据归属于第一对象;所述第三获取模块630,从所述第一物理存储单元中获取所述待查询时序数据时,包括:
从所述若干个逻辑单元中确定所述第一对象对应的第一逻辑单元;
从所述第一逻辑单元中获取所述待查询时序数据。
在一种实施方式中,所述待查询时序数据归属于第一对象;所述第三获取模块630,基于时间分桶与物理存储单元之间的对应关系,确定所述第一时间分桶对应的第一物理存储单元时,包括:
从时序数据归属的对象与数据分区之间的对应关系中,确定所述第一对象对应的第二数据分区,所述第二数据分区对应于第一列表;
从所述第一列表包含的时间分桶与物理存储单元之间的对应关系中,确定所述第一时间分桶对应的第一物理存储单元。
在一种实施方式中,装置600还包括:
第四获取模块(图中未示出),配置为,当所述第二时间戳处于第四时刻到第三时刻的第三时段内时,从磁盘中获取所述待查询时序数据;其中,所述第四时刻早于所述第三时刻,所述磁盘用于存储第四时长的时序数据,所述第四时长大于所述第三时段的时长。
上述各个装置实施例与方法实施例相对应,具体说明可以参见方法实施例部分的描述,此处不再赘述。装置实施例是基于对应的方法实施例得到,与对应的方法实施例具有同样的技术效果,具体说明可参见对应的方法实施例。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行图1至图4任一项所述的方法。
本说明书实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现图1至图4任一项所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于存储介质和计算设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步的详细说明。所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (22)
1.一种时序数据存储方法,通过处理设备执行,所述处理设备包括第一内存和第二内存;所述方法包括:
获取待存储的第一时序数据;
基于所述第一时序数据的第一时间戳,将所述第一时序数据对应地存储在所述第一内存的时序数据序列中;其中,所述时序数据序列包含第一时长的时序数据,用于提供针对第二时刻到第一时刻的第一时段内的数据查询,所述第二时刻比所述第一时刻早所述第一时长;
从所述时序数据序列中确定待淘汰的第二时序数据,将所述第二时序数据存储至所述第二内存中;其中,所述第二内存用于存储第二时长的时序数据,并用于提供针对第三时刻到所述第二时刻的第二时段内的数据查询,所述第三时刻比所述第二时刻早所述第二时长。
2.根据权利要求1所述的方法,所述从所述时序数据序列中确定待淘汰的第二时序数据的步骤,包括:
基于所述时序数据序列中时间戳超出所述第一时段的时序数据,确定待淘汰的第二时序数据。
3.根据权利要求1所述的方法,所述时序数据序列包括临时序列和存储序列;
所述将所述第一时序数据对应地存储在所述第一内存的时序数据序列中的步骤,包括:
当所述第一时间戳落在所述第一时段中时间最晚的第三时长内时,将所述第一时序数据存储在所述临时序列中;
当所述临时序列中的时序数据达到预设累积条件时,将所述临时序列中的累积时序数据转存至所述存储序列中,所述累积时序数据中包含所述第一时序数据;
所述从所述时序数据序列中确定待淘汰的第二时序数据的步骤,包括:
从所述存储序列中确定待淘汰的第二时序数据。
4.根据权利要求3所述的方法,所述临时序列和存储序列被划分为若干个时间分桶,所述时间分桶的时长为所述第三时长;
所述将所述临时序列中的累积时序数据存储至所述存储序列中的步骤,包括:
当所述临时序列中的最晚时间分桶的时序数据存满时,将所述最晚时间分桶中的时序数据作为累积时序数据,转存至所述存储序列中对应的最晚时间分桶中。
5.根据权利要求4所述的方法,所述从所述存储序列中确定待淘汰的第二时序数据的步骤,包括:
在将所述累积时序数据转存至所述存储序列中对应的最晚时间分桶中之前,将所述存储序列中的最早时间分桶中的时序数据,确定为待淘汰的第二时序数据。
6.根据权利要求4所述的方法,所述临时序列的数量为若干个,若干个临时序列分别与不同的对象对应,所述第一时序数据包括若干个对象的时序数据;
所述将所述第一时序数据存储在所述临时序列中的步骤,包括:
将所述第一时序数据中若干个对象的时序数据分别存储至对应的临时序列中;
所述转存至所述存储序列中对应的最晚时间分桶中的步骤,包括:
当若干个临时序列中的最晚时间分桶的时序数据存满时,将所述最晚时间分桶中若干个对象的时序数据作为累积时序数据,转存至所述存储序列中对应的最晚时间分桶中。
7.根据权利要求1所述的方法,所述第二内存包括多个物理存储单元;所述将所述第二时序数据存储至所述第二内存中的步骤,包括:
确定所述第二内存中待写入的物理存储单元;
基于所述待写入的物理存储单元,对所述第二时序数据进行存储。
8.根据权利要求7所述的方法,所述时序数据序列包括若干个时间分桶;所述第二时序数据为一个时间分桶的时序数据;
在对所述第二时序数据进行存储之后,还包括:
记录所述第二时序数据对应的时间分桶与存储所述第二时序数据的物理存储单元之间的对应关系。
9.根据权利要求7所述的方法,所述第二时序数据包括若干个对象的时序数据;一个物理存储单元被划分为若干个逻辑单元;
所述对所述第二时序数据进行存储的步骤,包括:
针对所述若干个对象中的任意一个对象,将所述第二时序数据中该对象的时序数据,写入物理存储单元中与该对象对应的逻辑单元中。
10.根据权利要求8所述的方法,所述记录所述第二时序数据对应的时间分桶与存储所述第二时序数据的物理存储单元之间的对应关系的步骤,包括:
基于时序数据归属的对象与数据分区的对应关系,以及所述第二时序数据归属的对象,确定所述第二时序数据所在的第一数据分区;
将所述第二时序数据对应的时间分桶与存储所述第二时序数据的物理存储单元之间的对应关系,记录在所述第一数据分区对应的列表中。
11.根据权利要求1所述的方法,所述第二内存采用AEP实现。
12.根据权利要求1所述的方法,其中还包括:
将所述第一时序数据存储在磁盘中;其中,所述磁盘用于存储第四时长的时序数据,并用于提供针对第四时刻到所述第三时刻的第三时段内的数据查询,所述第四时刻早于所述第三时刻,所述第四时长大于所述第三时段的时长。
13.一种时序数据读取方法,通过处理设备执行,所述处理设备包括第一内存和第二内存;所述方法包括:
接收针对时序数据的查询请求,其中携带待查询时序数据的第二时间戳;
当所述第二时间戳处于第二时刻到第一时刻的第一时段内时,从所述第一内存中的时序数据序列中获取所述待查询时序数据;其中,所述第二时刻比所述第一时刻早第一时长,所述时序数据序列包含第一时长的时序数据;
当所述第二时间戳处于第三时刻到所述第二时刻的第二时段内时,从所述第二内存中获取所述待查询时序数据;其中,所述第三时刻比所述第二时刻早第二时长,所述第二内存用于存储第二时长的时序数据。
14.根据权利要求13所述的方法,所述时序数据序列包括临时序列和存储序列;
所述从所述第一内存中的时序数据序列中获取所述待查询时序数据的步骤,包括:
当所述第二时间戳落在所述第一时段中时间最晚的第三时长内时,从所述临时序列中获取所述待查询时序数据;
当所述第二时间戳落在所述第一时段中所述时间最晚的第三时长之外时,从所述存储序列中获取所述待查询时序数据。
15.根据权利要求13所述的方法,所述第二内存包括多个物理存储单元;所述时序数据序列包括若干个时间分桶;
所述从所述第一内存中的时序数据序列中获取所述待查询时序数据的步骤,包括:
确定所述第二时间戳所在的第一时间分桶;
从所述时序数据序列的第一时间分桶中获取所述待查询时序数据;
所述从所述第二内存中获取所述待查询时序数据的步骤,包括:
基于时间分桶与物理存储单元之间的对应关系,确定所述第一时间分桶对应的第一物理存储单元;
从所述第一物理存储单元中获取所述待查询时序数据。
16.根据权利要求15所述的方法,所述第一物理存储单元包含若干个逻辑单元,逻辑单元与对象对应;所述待查询时序数据归属于第一对象;所述从所述第一物理存储单元中获取所述待查询时序数据的步骤,包括:
从所述若干个逻辑单元中确定所述第一对象对应的第一逻辑单元;
从所述第一逻辑单元中获取所述待查询时序数据。
17.根据权利要求15所述的方法,所述待查询时序数据归属于第一对象;所述基于时间分桶与物理存储单元之间的对应关系,确定所述第一时间分桶对应的第一物理存储单元的步骤,包括:
从时序数据归属的对象与数据分区之间的对应关系中,确定所述第一对象对应的第二数据分区,所述第二数据分区对应于第一列表;
从所述第一列表包含的时间分桶与物理存储单元之间的对应关系中,确定所述第一时间分桶对应的第一物理存储单元。
18.根据权利要求13所述的方法,其中还包括:
当所述第二时间戳处于第四时刻到第三时刻的第三时段内时,从磁盘中获取所述待查询时序数据;其中,所述第四时刻早于所述第三时刻,所述磁盘用于存储第四时长的时序数据,所述第四时长大于所述第三时段的时长。
19.一种时序数据存储装置,部署在处理设备中,所述处理设备包括第一内存和第二内存;所述装置包括:
第一获取模块,配置为,获取待存储的第一时序数据;
第一存储模块,配置为,基于所述第一时序数据的第一时间戳,将所述第一时序数据对应地存储在所述第一内存的时序数据序列中;其中,所述时序数据序列包含第一时长的时序数据,用于提供针对第二时刻到第一时刻的第一时段内的数据查询,所述第二时刻比所述第一时刻早所述第一时长;
第二存储模块,配置为,从所述时序数据序列中确定待淘汰的第二时序数据,将所述第二时序数据存储至所述第二内存中;其中,所述第二内存用于存储第二时长的时序数据,并用于提供针对第三时刻到所述第二时刻的第二时段内的数据查询,所述第三时刻比所述第二时刻早所述第二时长。
20.一种时序数据读取装置,部署在处理设备中,所述处理设备包括第一内存和第二内存;所述装置包括:
接收模块,配置为,接收针对时序数据的查询请求,其中携带待查询时序数据的第二时间戳;
第二获取模块,配置为,当所述第二时间戳处于第二时刻到第一时刻的第一时段内时,从所述第一内存中的时序数据序列中获取所述待查询时序数据;其中,所述第二时刻比所述第一时刻早第一时长,所述时序数据序列包含第一时长的时序数据;
第三获取模块,配置为,当所述第二时间戳处于第三时刻到所述第二时刻的第二时段内时,从所述第二内存中获取所述待查询时序数据;其中,所述第三时刻比所述第二时刻早第二时长,所述第二内存用于存储第二时长的时序数据。
21.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-18中任一项所述的方法。
22.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-18中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111302173.5A CN114090577A (zh) | 2021-11-04 | 2021-11-04 | 时序数据的存储、读取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111302173.5A CN114090577A (zh) | 2021-11-04 | 2021-11-04 | 时序数据的存储、读取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114090577A true CN114090577A (zh) | 2022-02-25 |
Family
ID=80298917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111302173.5A Pending CN114090577A (zh) | 2021-11-04 | 2021-11-04 | 时序数据的存储、读取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114090577A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033603A (zh) * | 2022-06-16 | 2022-09-09 | 支付宝(杭州)信息技术有限公司 | 一种数据存储、数据查询方法及装置 |
CN117056359A (zh) * | 2023-10-09 | 2023-11-14 | 宁波银行股份有限公司 | 一种表格重建方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140122022A1 (en) * | 2012-10-31 | 2014-05-01 | International Business Machines Corporation | Processing time series data from multiple sensors |
US20160078135A1 (en) * | 2013-04-28 | 2016-03-17 | Hithink Royalflush Information Network Co., Ltd. | Query selection method and system |
US20180373756A1 (en) * | 2017-06-22 | 2018-12-27 | Sap Se | Visualization-oriented time series data aggregation |
CN111552687A (zh) * | 2020-03-10 | 2020-08-18 | 远景智能国际私人投资有限公司 | 时序数据的存储方法、查询方法、装置、设备及存储介质 |
-
2021
- 2021-11-04 CN CN202111302173.5A patent/CN114090577A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140122022A1 (en) * | 2012-10-31 | 2014-05-01 | International Business Machines Corporation | Processing time series data from multiple sensors |
US20160078135A1 (en) * | 2013-04-28 | 2016-03-17 | Hithink Royalflush Information Network Co., Ltd. | Query selection method and system |
US20180373756A1 (en) * | 2017-06-22 | 2018-12-27 | Sap Se | Visualization-oriented time series data aggregation |
CN111552687A (zh) * | 2020-03-10 | 2020-08-18 | 远景智能国际私人投资有限公司 | 时序数据的存储方法、查询方法、装置、设备及存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033603A (zh) * | 2022-06-16 | 2022-09-09 | 支付宝(杭州)信息技术有限公司 | 一种数据存储、数据查询方法及装置 |
CN117056359A (zh) * | 2023-10-09 | 2023-11-14 | 宁波银行股份有限公司 | 一种表格重建方法、装置、电子设备及存储介质 |
CN117056359B (zh) * | 2023-10-09 | 2024-01-09 | 宁波银行股份有限公司 | 一种表格重建方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110149803B (zh) | 数据存储方法、系统及终端设备 | |
CN110764706B (zh) | 存储系统、数据管理方法及存储介质 | |
US20200150890A1 (en) | Data Deduplication Method and Apparatus | |
US9323685B2 (en) | Data storage space processing method and processing system, and data storage server | |
JP6501916B2 (ja) | ファイルストレージにおけるインデックス付け実施方法及びシステム | |
CN111309720B (zh) | 时序数据的存储、读取方法、装置、电子设备及存储介质 | |
CN114090577A (zh) | 时序数据的存储、读取方法及装置 | |
JP2019511054A (ja) | 分散クラスタ型訓練方法及び装置 | |
CN107122126B (zh) | 数据的迁移方法、装置和系统 | |
US10552460B2 (en) | Sensor data management apparatus, sensor data management method, and computer program product | |
US20190087437A1 (en) | Scheduling database compaction in ip drives | |
WO2018095299A1 (zh) | 一种时序数据管理方法、设备和装置 | |
CN106599292B (zh) | 针对实时视频数据和图像数据进行存储的方法及系统 | |
US20140025899A1 (en) | Efficiently Updating and Deleting Data in a Data Storage System | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN110858210B (zh) | 数据查询方法及装置 | |
CN107704507B (zh) | 数据库处理方法和设备 | |
CN111125171A (zh) | 一种监测数据存取方法、装置、设备及可读存储介质 | |
CN112148690A (zh) | 一种文件缓存方法、文件访问请求处理方法及装置 | |
CN111399765A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN112783711A (zh) | NodeJS上程序内存分析的方法、存储介质 | |
CN109213444A (zh) | 文件存储方法及装置、存储介质、终端 | |
CN110990394B (zh) | 分布式面向列数据库表的行数统计方法、装置和存储介质 | |
JP5461215B2 (ja) | データベースシステム | |
EP3712780A1 (en) | Storing objects in data structures |
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 |