CN116304390A - 时序数据处理方法、装置、存储介质及电子设备 - Google Patents
时序数据处理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN116304390A CN116304390A CN202310400134.1A CN202310400134A CN116304390A CN 116304390 A CN116304390 A CN 116304390A CN 202310400134 A CN202310400134 A CN 202310400134A CN 116304390 A CN116304390 A CN 116304390A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- time
- time sequence
- target
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims abstract description 610
- 238000003672 processing method Methods 0.000 title abstract description 18
- 238000005192 partition Methods 0.000 claims abstract description 321
- 238000000034 method Methods 0.000 claims abstract description 83
- 239000012634 fragment Substances 0.000 claims description 135
- 238000012545 processing Methods 0.000 claims description 92
- 230000002776 aggregation Effects 0.000 claims description 55
- 238000004220 aggregation Methods 0.000 claims description 55
- 238000013507 mapping Methods 0.000 claims description 49
- 238000004519 manufacturing process Methods 0.000 claims description 10
- 238000004140 cleaning Methods 0.000 claims description 6
- 235000019580 granularity Nutrition 0.000 description 54
- 238000010586 diagram Methods 0.000 description 20
- 238000012795 verification Methods 0.000 description 17
- 238000004590 computer program Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 13
- 238000002955 isolation Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 230000003993 interaction Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 238000009826 distribution Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000006798 recombination Effects 0.000 description 2
- 238000005215 recombination Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供时序数据处理方法、装置、存储介质及电子设备,其中,当该方法应用于指标时序存储设备时,该方法包括:接收客户端发送的M个写入时序指标数据;在至少一个分区包括的目标分区中,分别确定M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据;分别将各个写入时序指标数据存储至目标存储文件中,并确定各个写入时序指标数据在目标存储文件中的位置信息;将各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在目标存储文件中对任一写入时序指标数据进行查找。本发明实施例可提高获取目标指标在某段时间范围内的时序数据的精确性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种时序数据处理方法、装置、存储介质及电子设备。
背景技术
目前,针对时序数据(即时序指标数据)的读写操作已被广泛应用,所谓的时序数据是指时间序列数据,即是指同一指标按时间顺序记录的数据列;但现有技术通常将各个指标的时序数据乱序存储于某个存储文件中,并在读取某个指标在一定时间范围内的时序数据时,对各个指标的时序数据进行逐个搜索,导致查找效率较低,以至于不能精确地获取目标指标在某段时间范围内的时序数据;基于此,如何对各个指标的时序数据进行存储,以精确地获取目标指标在某段时间范围内的时序数据成为一个研究热点。
发明内容
有鉴于此,本发明实施例提供了一种时序数据处理方法、装置、存储介质及电子设备,以解决在目标存储文件中对时序数据的查找效率较低,以至于不能精确地获取目标指标在某段时间范围内的时序数据的问题,也就是说,本发明实施例可提高获取目标指标在某段时间范围内的时序数据的精确性,从而快速查找到所需的时序数据。
根据本发明的一方面,提供了一种时序数据处理方法,所述方法应用于指标时序存储设备,所述方法包括:
接收客户端发送的M个写入时序指标数据,所述M个写入时序指标数据包括N个指标的时序数据,M和N均为正整数,且N小于或等于M;
在所述至少一个分区包括的目标分区中,分别确定所述M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息;
分别将所述各个写入时序指标数据存储至所述目标存储文件中,并确定所述各个写入时序指标数据在所述目标存储文件中的位置信息;
将所述各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在所述目标存储文件中对所述任一写入时序指标数据进行查找。
根据本发明的另一方面,提供了另一种时序数据处理方法,所述方法应用于客户端,所述方法包括:
在接收到数据写入请求后,分别对各个聚合粒度下的P个写入时序指标数据进行分流处理,得到所述各个聚合粒度下的至少一个数据批,同一数据批中的写入时序指标数据所属分区相同,P为正整数;其中,所述数据写入请求携带有L个写入时序指标数据,L为正整数,且P小于或等于L;
从指标时序存储设备集中,分别确定与所述各个聚合粒度下的每个数据批所属的分区相匹配的指标时序存储设备;
分别将所述各个聚合粒度下的每个数据批,添加至与所属分区相匹配的指标时序存储设备对应的批数据队列中,并基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,以使相应指标时序存储设备将接收到的数据批存储在所属分区中。
根据本发明的另一方面,提供了一种时序数据处理装置,所述装置运行于指标时序存储设备上,所述指标时序存储设备包括至少一个分区,所述装置包括:
第一接收单元,用于接收客户端发送的M个写入时序指标数据,所述M个写入时序指标数据包括N个指标的时序数据,M和N均为正整数,且N小于或等于M;
第一处理单元,用于在所述至少一个分区包括的目标分区中,分别确定所述M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息;
所述第一处理单元,还用于分别将所述各个写入时序指标数据存储至所述目标存储文件中,并确定所述各个写入时序指标数据在所述目标存储文件中的位置信息;
所述第一处理单元,还用于将所述各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在所述目标存储文件中对所述任一写入时序指标数据进行查找。
根据本发明的另一方面,提供了另一种时序数据处理装置,所述装置运行于客户端上,所述装置包括:
第二处理单元,用于在接收到数据写入请求后,分别对各个聚合粒度下的P个写入时序指标数据进行分流处理,得到所述各个聚合粒度下的至少一个数据批,同一数据批中的写入时序指标数据所属分区相同,P为正整数;其中,所述数据写入请求携带有L个写入时序指标数据,L为正整数,且P小于或等于L;
所述第二处理单元,还用于从指标时序存储设备集中,分别确定与所述各个聚合粒度下的每个数据批所属的分区相匹配的指标时序存储设备;
所述第二处理单元,还用于分别将所述各个聚合粒度下的每个数据批,添加至与所属分区相匹配的指标时序存储设备对应的批数据队列中
第二发送单元,用于基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,以使相应指标时序存储设备将接收到的数据批存储在所属分区中。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括处理器、以及存储程序的存储器,其中,所述程序包括指令;
一种实施方式中,所述电子设备为指标时序存储设备,所述指标时序存储设备包括至少一个分区,所述指令在由所述处理器执行时使所述处理器执行如下步骤:
接收客户端发送的M个写入时序指标数据,所述M个写入时序指标数据包括N个指标的时序数据,M和N均为正整数,且N小于或等于M;
在所述至少一个分区包括的目标分区中,分别确定所述M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息;
分别将所述各个写入时序指标数据存储至所述目标存储文件中,并确定所述各个写入时序指标数据在所述目标存储文件中的位置信息;
将所述各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在所述目标存储文件中对所述任一写入时序指标数据进行查找。
另一种实施方式中,所述电子设备为客户端,所述指令在由所述处理器执行时使所述处理器执行如下步骤:
在接收到数据写入请求后,分别对各个聚合粒度下的P个写入时序指标数据进行分流处理,得到所述各个聚合粒度下的至少一个数据批,同一数据批中的写入时序指标数据所属分区相同,P为正整数;其中,所述数据写入请求携带有L个写入时序指标数据,L为正整数,且P小于或等于L;
从指标时序存储设备集中,分别确定与所述各个聚合粒度下的每个数据批所属的分区相匹配的指标时序存储设备;
分别将所述各个聚合粒度下的每个数据批,添加至与所属分区相匹配的指标时序存储设备对应的批数据队列中,并基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,以使相应指标时序存储设备将接收到的数据批存储在所属分区中。
根据本发明的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质;
一种实施方式中,所述存储介质应用于指标时序存储设备,所述指标时序存储设备包括至少一个分区,所述计算机指令用于使计算机执行如下步骤:
接收客户端发送的M个写入时序指标数据,所述M个写入时序指标数据包括N个指标的时序数据,M和N均为正整数,且N小于或等于M;
在所述至少一个分区包括的目标分区中,分别确定所述M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息;
分别将所述各个写入时序指标数据存储至所述目标存储文件中,并确定所述各个写入时序指标数据在所述目标存储文件中的位置信息;
将所述各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在所述目标存储文件中对所述任一写入时序指标数据进行查找。
另一种实施方式中,所述存储介质应用于客户端,所述计算机指令用于使计算机执行如下步骤:
在接收到数据写入请求后,分别对各个聚合粒度下的P个写入时序指标数据进行分流处理,得到所述各个聚合粒度下的至少一个数据批,同一数据批中的写入时序指标数据所属分区相同,P为正整数;其中,所述数据写入请求携带有L个写入时序指标数据,L为正整数,且P小于或等于L;
从指标时序存储设备集中,分别确定与所述各个聚合粒度下的每个数据批所属的分区相匹配的指标时序存储设备;
分别将所述各个聚合粒度下的每个数据批,添加至与所属分区相匹配的指标时序存储设备对应的批数据队列中,并基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,以使相应指标时序存储设备将接收到的数据批存储在所属分区中。
本发明实施例在客户端接收到数据写入请求后,客户端可分别对各个聚合粒度下的写入时序指标数据进行分流处理,得到各个聚合粒度下的至少一个数据批,以按照分区将同一聚合粒度下的写入时序指标数据聚合至一个数据批中,从而便于后续客户端以数据批为单位,并准确地将各个数据批发送至相应指标时序存储设备中;基于此,客户端可分别将各个数据批,添加至与所属分区匹配的指标时序存储设备对应的批数据队列中,并基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,从而使得业务方生产的时序数据需进入相应指标时序存储设备进行存储时,不需要等待其完全写入文件系统,进而可避免造成阻塞。那么相应的,相应指标时序存储设备在接收到客户端发送的至少一个写入时序指标数据(即一个数据批)后,指标时序存储设备可在目标分区中,分别确定接收到的各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息,以便于指标时序存储设备可基于位置索引数据中存储的位置信息,精确地定位某一指标在目标存储文件中存储的时序数据;进一步的,指标时序存储设备可分别将各个写入时序指标数据存储至目标存储文件中,并将各个写入时序指标数据在目标存储文件中的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在目标存储文件中对该任一写入时序指标数据进行查找。可见,本发明实施例在需读取目标指标在某段时间范围内的时序数据时,可通过目标指标的位置索引数据精确地确定相应时序数据的位置信息,从而精确地获取到目标指标在某段时间范围内的时序数据,可提升查找相应时序数据的速度。
附图说明
在下面结合附图对于示例性实施例的描述中,本发明的更多细节、特征和优点被公开,在附图中:
图1示出了根据本发明示例性实施例的一种指标时序存储系统的结构示意图;
图2示出了根据本发明示例性实施例的一种时序数据处理方法的流程示意图;
图3a示出了根据本发明示例性实施例的一种指标时序存储设备中分区的示意图;
图3b示出了根据本发明示例性实施例的一种指标时序存储设备中副本同步的示意图;
图4示出了根据本发明示例性实施例的另一种时序数据处理方法的流程示意图;
图5a示出了根据本发明示例性实施例的一种实时数据分片的示意图;
图5b示出了根据本发明示例性实施例的另一种实时数据分片的示意图;
图5c示出了根据本发明示例性实施例的又一种实时数据分片的示意图;
图6示出了根据本发明示例性实施例的一种历史数据分片的示意图;
图7示出了根据本发明示例性实施例的又一种时序数据处理方法的流程示意图;
图8示出了根据本发明示例性实施例的一种写操作的示意图;
图9示出了根据本发明示例性实施例的一种读操作的示意图;
图10a示出了根据本发明示例性实施例的再一种时序数据处理方法的流程示意图;
图10b示出了根据本发明示例性实施例的再一种时序数据处理方法的流程示意图;
图11a示出了根据本发明示例性实施例的一种时序数据处理装置的示意性框图;
图11b示出了根据本发明示例性实施例的另一种时序数据处理装置的示意性框图;
图12示出了能够用于实现本发明的实施例的示例性电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
在本发明实施例中,涉及一种指标时序存储系统;具体的,该指标时序存储系统包括至少一个客户端101和至少一个指标时序存储设备102,至少一个指标时序存储设备102可构成指标时序存储系统中的指标时序存储设备集,且指标时序存储设备102也可称为服务节点、应用程序服务器、服务器以及节点等。其中,一个指标时序存储设备102可包括至少一个分区(Partition);所谓的分区是指标时序存储设备集进行数据存储的最大逻辑单元(即最大数据存储逻辑单元),是为了对指标做空间上的隔离,因此所有分区会均匀的分布在不同的指标时序存储设备102上。进一步的,出于高可用考虑,每个分区还可有一个或者多个副本(即副分区),所有副本也都分布在不同指标时序存储设备上;其中,每个分区的主分区可读可写,而副本只可读;需要说明的是,副本与主分区可采取异步同步模式(即采用异步模式实现数据同步),也可采取同步模式实现数据同步,本发明对此不作限定。
例如,如图1所示,指标时序存储系统可包括1个客户端101和2个指标时序存储设备102,此处的2个指标时序存储设备102可分别称为应用服务器1(Application server 1,App server 1)和应用服务器2(Application server 2,App server 2);其中,指标时序存储系统中包括4个分区,每个分区涉及一个主分区和一个副分区,且主分区1(即分区1主盘(partition 1master))、副分区2(即分区2从盘(partition 2slave))、主分区3(即分区3主盘),以及副分区4(即分区4从盘)位于应用服务器1中,而副分区1(即分区1从盘)、主分区2(即分区2主盘)、副分区3(即分区3从盘),以及主分区4(即分区4主盘)位于应用服务器2中。需要说明的是,图1仅示例性的表示了本发明提出的指标时序存储系统的示意图,本发明对此不作限定;示例性的,指标时序存储系统可包括2个客户端101,也可包括3个指标时序存储设备102,还可以仅包括1个分区,等等。
可见,指标时序存储系统的架构整体可分为客户端(即至少一个客户端101)与服务端(即至少一个指标时序存储设备102)两大块,服务端支持分布式部署,兼顾负载均衡与高可用,无需人为干预,系统内部有自己的容错与平衡策略,可实现透明化自治理;相应的,任一客户端101无需服务化部署,开发完成后会打成配置包(如Jar包)发布到云服务平台,业务方(即是指应用指标时序存储系统的客户)应用只需将该配置包下载到本地,并通过项目管理工具(如Maven(麦文)或Gradle(一种项目自动化构建的开源工具)等)打包依赖即可;基于此,业务方使用时只需简单配置,即可将自己的设备作为指标时序存储系统中的客户端101,从而实现该设备与服务端的通信交互。除此之外,为了支持服务端灵活扩展,指标时序存储系统还引入了中间件103,如图1所示;该中间件103可实现服务端的透明化自治理,也就是说,通过该中间件103的容错和平衡策略可实现集群(即指标时序存储设备集)的管理功能,并可通过其监控机制和作业状态的掌控来实现透明化。
需要说明的是,上述提及的客户端101和指标时序存储设备102可以是终端设备,也可以是服务器,本发明对此不作限定。此处所提及的终端设备可包括但不限于:智能手机、平板电脑、笔记本电脑、台式计算机、智能手表、智能语音交互设备、智能家电、车载终端、飞行器等;终端设备内可运行各式各样的客户端(application,APP),如视频播放客户端、社交客户端、浏览器客户端、信息流客户端、教育客户端,等等;此处所提及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算(cloud computing)、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,等等。
基于上述描述,本发明实施例提出一种时序数据处理方法,该时序数据处理方法可以由上述所提及的电子设备(即指标时序存储设备系统中的任一指标时序存储设备,且指标时序存储设备包括至少一个分区)执行;请参见图2,该时序数据处理方法可包括以下步骤S201-S204:
S201,接收客户端发送的M个写入时序指标数据,M个写入时序指标数据包括N个指标的时序数据,M和N均为正整数,且N小于或等于M。
其中,M个写入时序指标数据中的各个写入时序指标数据对应的分区相同,即各个写入时序指标数据所属分区相同,也就是说,各个写入时序指标数据将被存储至同一分区的存储文件中。
需要说明的是,上述发送M个写入时序指标数据的客户端可以是指标时序存储系统包括的至少一个客户端中的任一客户端,也可以是至少一个客户端中的任意多个客户端,本发明对此不作限定。
S202,在至少一个分区包括的目标分区中,分别确定M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息。
其中,目标分区为至少一个分区中的任一分区,且M个写入时序指标数据对应的N个指标中的各个指标均与目标分区相对应,即该各个指标所属分区均为目标分区,也就是说,该N个指标中各个指标的时序数据均已存储或待存储至目标分区中,即已存储或待存储至目标分区所包括的存储文件中。
在一种实施方式中,各个写入时序指标数据还可携带有对应指标所属分区的分区标识,那么指标时序存储设备可根据各个写入时序指标数据的分区标识,从至少一个分区中确定出目标分区,该目标分区的分区标识与各个写入时序指标数据的分区标识相同;在另一种实施方式中,各个写入时序指标数据携带有对应指标的指标指示信息,指标时序存储设备可根据指标指示信息与总分区数哈希取模的方式,计算出至少一个分区中的目标分区;再一种实施方式中,指标时序存储设备在接收到M个写入时序指标数据的同时,还可接收到M个写入时序指标数据对应指标所属分区的一个分区标识,那么指标时序存储设备可根据接收到的分区标识从至少一个分区中确定出目标分区,等等;本发明对确定目标分区的具体过程不作限定。
相应的,一个指标的指标指示信息可以是指相应指标的指标度量代码(code),也可以是指相应指标的指标身份标识号(ID),等等,本发明对此不作限定;除此之外,分区标识可以指的是分区名称,也可以指的是分区编号,等等,本发明对此不作限定。
需要说明的是,位置信息可以指的是位置偏移量,也可以指的是所在存储单元的实际地址,等等,本发明对此不作限定;其中,偏移量是指:把存储单元的实际地址与其所在段的段地址之间的距离。
应当理解的是,指标时序存储设备在分别确定M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据时,可分别确定上述N个指标中各个指标的位置索引数据,从而确定各个写入时序指标数据对应指标的位置索引数据。示例性的,假设M的取值为3,N的取值为2,且M个写入时序指标数据包括写入时序指标数据1、写入时序指标数据2以及写入时序指标数据3,N个指标包括指标A和指标B,其中,写入时序指标数据1和写入时序指标数据2为指标A的时序数据,写入时序指标数据3为指标B的时序数据;在此种情况下,指标时序存储设备在确定各个写入时序指标数据对应指标的位置索引数据时,可确定指标A的位置索引数据以得到写入时序指标数据1和写入时序指标数据2对应指标的位置索引数据,并可确定指标B的位置索引数据以得到写入时序指标数据3对应指标的位置索引数据。
S203,分别将各个写入时序指标数据存储至目标存储文件中,并确定各个写入时序指标数据在目标存储文件中的位置信息。
在本发明实施例中,指标时序存储设备在存储各个写入时序指标数据时,可按照存储顺序进行写入(即支持顺序写);在此种情况下,由于接收到的M个写入时序指标数据乱序排列,那么将M个写入时序指标数据顺序存储至目标存储文件后,相同指标不同时间窗口的时序数据在目标存储文件中并不一定相邻,且相同时间窗口不同指标的时序数据可能乱序排列。
需要说明的是,M个写入时序指标数据进入目标分区到最终落盘(即存储至目标存储文件中),指标时序存储设备也采取了异步模式。并且,指标时序存储设备中的消费线程(consumer)可通过日志组件(walogger)先记录更新日志(主分区与副本之间的数据同步便是依据该日志,也可称为变更日志或修改日志),如图3a所示。应当理解的是,图3a仅示例性的对分区进行了表示,本发明对此不作限定;例如,可不按分钟计时日志,而按小时计时日志;又如,实时数据分片与历史数据分片可以不是一一对应的关系,也就是说,指标时序存储设备可基于多个实时数据分片来生成一个历史数据分片,等等。
相应的,指标时序存储设备中的日志组件可按照预设日志时长生成一个日志文件,该预设日志时长可以是1分钟,也可以是5分钟,本发明对此不作限定。进一步的,指标时序存储设备还可通过该日志组件设置日志保留周期,过期日志(即日志生成时长大于日志保留周期的日志)会被自动清理,也就是说,日志组件可对过期日志进行删除处理,且日志生成时长是指:日志的生成时间与当前系统时间之间的差值。
S204,将各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在目标存储文件中对任一写入时序指标数据进行查找。
示例性的,假设M的取值为3,N的取值为2,且M个写入时序指标数据包括写入时序指标数据1、写入时序指标数据2以及写入时序指标数据3,N个指标包括指标A和指标B,写入时序指标数据1和写入时序指标数据2为指标A的时序数据;在此种情况下,指标时序存储设备可将写入时序指标数据1的位置信息,以及写入时序指标数据2的位置信息添加至指标A的位置索引数据中,并将写入时序指标数据3的位置信息添加至指标B的位置索引数据中。
可选的,针对M个写入时序指标数据中对应指标为同一指标的E个写入时序指标数据,指标时序存储设备可按照写入时序指标数据被存储至目标存储文件中的先后顺序,将E个写入时序指标数据中每个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,E为正整数;其中,当E为大于1的整数时,在相应指标的位置索引数据中,E个写入时序指标数据中第一时序数据的位置信息,位于E个写入时序指标数据中第二时序数据的位置信息之前,且第一时序数据先于第二时序数据被存储至目标存储文件中。
举例来说,假设写入时序指标数据1和写入时序指标数据2对应指标均为指标A,那么当写入时序指标数据1先于写入时序指标数据2被存储至目标存储文件中时,指标时序存储设备可先将写入时序指标数据1的位置信息添加至指标A的位置索引数据中,再将写入时序指标数据2的位置信息添加至指标A的位置索引数据中,使得在指标A的位置索引数据中,写入时序指标数据1的位置信息在写入时序指标数据2的位置信息之前。
在本发明实施例中,指标时序存储设备可包括副本数据同步模块,也可称为副本任务管理器(Replica Task Manager),负责管理分区副本数据同步,在此种情况下,各个分区的副本任务可统一由副本数据同步模块负责定期执行以及状态维护;其中,指标时序存储设备中的每个分区可能会有多个子任务,每个子任务可对应一个子任务文件(subtaskfile),即元数据文件,一个子任务文件中记录了相应子任务的所属分区、主分区所在节点、任务起始窗口、结束窗口以及当前同步进行的窗口(即当前系统时间下执行同步的窗口)等。那么相应的,每个执行周期结束都会更新子任务文件,即可采用子任务的元数据缓存(metadata cache)来冲洗(flush)相应的子任务文件;例如,假设一个子任务文件中记录的当前同步进行的窗口为第5个窗口,那么在将第5个窗口的数据同步至相应副本后,相应子任务文件中的当前同步进行的窗口将被更新为第6个窗口。
相应的,指标时序存储设备还可包括分布式协调器(Coordinator),该分布式协调器可用于维护服务节点在线情况以及适时对分区进行再平衡(Rebalance)操作,也就是说,分布式协调器可负责指标时序存储设备集中分区的再平衡操作;基于此,当集群(即指标时序存储设备集)发生再平衡时,副本数据同步模块中的再平衡恢复器(rebalancerefresher)可接收到再平衡结果,那么再平衡恢复器可向副本数据同步模块中的副本管理器(replicas manager)发送子任务的创建(merge)、合并(create)以及停止(即删除,delete)等指令,以刷新相关分区子任务列表,然后副本管理器可将可执行的任务列表(Executable task list)发送至副本子任务执行调度程序(replica subtask executescheduler),以使副本子任务执行调度程序向副本管理器报告(report)各个子任务所属分区和分区所在的节点等;进一步的,各分区的副本管理器可基于总的副本管理器对相应子任务进行管理,且副本数据同步模块中的过期任务清理器(expire task cleaner)可对各个分区的副本管理器发送到期清理指令,以删除过期的子任务,如图3b所示。需要说明的是,图3b仅示例性地对副本数据同步过程进行了表示,本发明对此不作限定;例如,指标时序存储设备还可包括分区2的副本管理器(即分区2副本管理器);又如,分区1副本管理器还可同时管理6个子任务,等等。
需要说明的是,数据同步可基于分区记录变更日志来实现,由于日志按照预设日志时长生成一个日志文件(如预设日志时长为1分钟时,可每分钟写一个日志文件),那么同步周期(即执行周期)设定需小于或等于预设日志时长;基于此,出于容错的考虑,执行频率可设置为15秒或20秒等,每次执行都是在上次同步完成的窗口基础上继续顺延执行,执行失败不会更新子任务文件,可等待下一个执行周期重复操作,且每次操作可同步窗口需小于或等于当前窗口(即当前同步进行的窗口)。
本发明实施例可在接收到客户端发送的M个写入时序指标数据后,在目标分区中分别确定各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据在目标存储文件中的位置信息,以便于指标时序存储设备通过一个指标的位置索引数据中存储的位置信息,对相应指标的位置索引数据所指示的时序数据进行定位,从而快速获取相应指标的至少一个时序数据。然后,指标时序存储设备可分别将各个写入时序指标数据存储至目标存储文件中,并确定各个写入时序指标数据在目标存储文件中的位置信息,从而将各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在目标存储文件中对该任一写入时序指标数据进行查找。可见,本发明实施例可对目标分区中的各个指标分配一个位置索引数据,以使各个指标的位置索引数据存储相应时序数据在目标存储文件中的位置信息;在此种情况下,当目标指标在某段时间范围内的时序数据的位置信息,被存储至目标指标的位置索引数据中时,可通过目标指标的位置索引数据,精确地获取到目标指标在该段时间范围内的时序数据,可有效提高读取速度。
基于上述描述,本发明实施例还提出一种更为具体的时序数据处理方法,该时序数据处理方法可以由上述所提及的指标时序存储系统中的任一指标时序存储设备执行。为便于阐述,后续均以接收到M个写入时序指标数据的指标时序存储设备执行该时序数据处理方法为例进行说明;请参见图4,该时序数据处理方法可包括以下步骤S401-S407:
S401,接收客户端发送的M个写入时序指标数据,M个写入时序指标数据包括N个指标的时序数据,M和N均为正整数,且N小于或等于M。
S402,在至少一个分区包括的目标分区中,分别确定M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息。
在具体实现中,指标时序存储设备可获取在存储M个写入时序指标数据时所需查询的目录索引数据,目录索引数据包括:多个指标中各个指标的位置索引数据的索引存储信息,一个位置索引数据的索引存储信息用于指示:相应位置索引数据在位置索引文件中的位置信息;相应的,针对M个写入时序指标数据中的第m个写入时序指标数据,指标时序存储设备可基于目录索引数据,获取第m个写入时序指标数据对应指标的位置索引数据的索引存储信息,并采用获取到的索引存储信息,确定出第m个写入时序指标数据对应指标的位置索引数据,m∈[1,M]。其中,本发明实施例也可将目录索引数据称为一级索引,并可将位置索引数据称为二级索引或二级索引链等;可选的,上述位置索引文件可以是目标存储文件(即位置索引数据和相应时序数据可存储在同一存储文件中),上述位置索引文件也可以是位于目标存储文件之外的存储文件(即位置索引数据和相应时序数据可存储在不同存储文件中),本发明对此不作限定。
进一步的,目录索引数据还包括多个指标中各个指标的指标标识,且任一指标标识与任一指标标识所指示指标的位置索引数据的索引存储信息相匹配,也就是说,目录索引数据中的指标标识与索引存储信息一一对应,且任一指标标识对应的索引存储信息为:该任一指标标识所指示指标的位置索引数据的索引存储信息,如图5a所示。其中,一个指标的指标标识可以是相应指标的指标度量代码,也可以是相应指标的指标ID,本发明对此不作限定。
那么相应的,基于目录索引数据,获取第m个写入时序指标数据对应指标的位置索引数据的索引存储信息时,指标时序存储设备可在目录索引数据中查找第m个写入时序指标数据对应指标的目标指标标识;若查找到目标指标标识,则将与目标指标标识匹配的索引存储信息,作为第m个写入时序指标数据对应指标的位置索引数据的索引存储信息;若未查找到目标指标标识,则在位置索引文件中选取一个存储位置,并将选取出的存储位置的位置信息,作为第m个写入时序指标数据对应指标的位置索引数据的索引存储信息。
具体的,若未查找到目标指标标识,则目录索引数据中未存储有第m个写入时序指标数据对应指标的位置索引数据的索引存储信息,在此种情况下,指标时序存储设备未包括用于存储第m个写入时序指标数据的位置信息的位置索引数据,那么指标时序存储设备可将选取出的存储位置作为位置索引数据的起始存储位置,从而为第m个写入时序指标数据创建了一个位置索引数据。应当理解的是,在位置索引文件中选取一个存储位置时,指标时序存储设备可从位置索引文件中随机选取一个存储位置,也可以在位置索引文件对应的预设存储区域中选取一个存储位置,等等,本发明对此不作限定;其中,预设存储区域可以是指标时序存储设备随机分配的一段存储区域,也可以是位置索引文件对应的存储区域中的指定存储区域等,本发明对此不作限定。
S403,分别将各个写入时序指标数据存储至目标存储文件中,并确定各个写入时序指标数据在目标存储文件中的位置信息。
其中,对各个写入时序指标数据的存储操作即是指:对各个写入时序指标数据的写盘操作,纵观整个分布式集群(即指标时序存储系统中的指标时序存储设备集),分区的存在使数据已经均匀分散到各个物理服务节点(即实施了空间隔离),而在同一个分区的内部还可对时序数据进行时间上的隔离,从而得到各个时间范围对应的数据集,即数据分片(segment)。其中,数据分片是最小数据单元,且数据分片可用于负责数据的读写操作。需要说明的是,数据分片为本发明实施例的逻辑存储方式,即指标时序存储设备可按照数据分片对应的逻辑存储方式对各个写入时序指标数据进行存储,而各个写入时序指标数据实际存储在目标存储文件中。
在一种具体实现中,指标时序存储设备可按照预设隔离周期进行隔离,也就是说,指标时序存储设备可按照预设隔离周期进行时间划分,使得指标时间戳(即存储时间或产生时间)落在同一预设隔离周期内的时序数据聚集在一起,得到数据分片;在此种情况下,每个数据分片对应的时间范围所形成的时长均为预设隔离周期,那么相应的,指标时序存储设备可每隔预设隔离周期创建一个数据分片。其中,预设隔离周期可以是1小时,也可以是2小时,本发明对此不作限定;示例性的,可将预设隔离周期设置为1个自然小时,那么时间戳落在同一自然小时内的时序数据会聚集在一起。其中,一个时序数据的存储时间是指对相应时序数据进行存储处理的时间,而一个时序数据的产生时间是指产生相应时序数据的时间。
另一种具体实现中,指标时序存储设备可在每次创建数据分片时,可生成一个隔离时长,并基于创建时间和隔离时长确定创建的数据分片对应的时间范围,使得创建的数据分片对应时间范围所形成的时长为上述隔离时长,等等。示例性的,假设指标时序存储设备所生成的隔离时长为55分钟,且创建时间为9:00,那么此时创建的数据分片对应时间范围可为9:00至9:55。
应当理解的是,读写的场景差异较大,由于写数据是单点批量写,即每预设时间间隔(如每分钟或每两分钟等)写一批(即M个写入时序指标数据),M个写入时序指标数据包括了各种指标,而且它们的存储时间都是相同的,但是读数据则是针对单个指标读取一段连续时间窗口的数据集合,即时序数据集。因此,针对这两种差异较大的场景,指标时序存储设备可在同一分区内部使用两种不同的物理存储结构,即实时可变存储(real-timesegment)和历史不可变存储(historical segment),且实时可变存储也可称为实时数据分片,历史不可变存储也可称为历史数据分片;也就是说,同一分区可包括W个实时数据分片和V个历史数据分片,W为正整数且V为非负整数。其中,实时数据分片为:用于执行读写操作的数据分片,且实时数据分片是指:将存储时间落在同一时间范围内的时序数据聚集在一起的数据分片,而历史数据分片为:用于执行读操作的数据分片,且历史数据分片是指:将产生时间位于同一时间范围内的时序数据聚集在一起的数据分片。应当理解的是,一个历史数据分片是由相应实时数据分片转化而来的,那么相应的,一个历史数据分片可包括:产生时间位于相应实时数据分片所涉及时间范围的时序数据。
在本发明实施例中,在分别将各个写入时序指标数据存储至目标存储文件中时,指标时序存储设备可在内存空间中申请目标内存映射区域,一个内存映射区域对应一个存储文件,且目标内存映射区域对应的存储文件为目标存储文件;针对任一写入时序指标数据,可基于目标内存映射区域,对任一写入时序指标数据进行映射处理,以使任一写入时序指标数据被存储至目标存储文件中。在此种情况下,任一写入时序指标数据可不被写入内存缓冲区(即内存空间),而是直接以映射方式(如MMap(一种内存映射文件的方法)等)高效地顺序写入存储文件,可提高安全性。
可以理解的是,若内存空间中存在当前内存映射区域,该当前内存映射区域是指:在当前系统时间之前申请的内存映射区域,且当前内存映射区域未被写满,那么在内存空间中申请目标内存映射区域时,指标时序存储设备可将当前内存映射区域作为目标内存映射区域,以实现对目标内存映射区域的申请;若内存空间中未存在有当前内存映射区域,那么指标时序存储设备可从内存空间中选取一段存储区域,并将选取出的存储区域作为目标内存映射区域。
进一步的,为了降低资源占用,指标时序存储设备每次可申请很少的一块内存映射区域(申请的内存映射区域的大小可配置,本发明对此不作限定),并在写满后自动释放该段内存映射区域;基于此,在释放写满的内存映射区域后,指标时序存储设备可重新申请相应大小的内存映射区域,以周而复始的持续下去。相应的,每次映射可对应一个存储文件,即一个内存映射区域可对应一个存储文件,该存储文件也可称为块文件,每个块文件大小相同,且每个块文件可有自己的编号,各个块文件的编号是递增的,这也反映了存储文件的生成顺序。示例性的,当有随机读请求时,可通过读位置全局偏移量(即位置全局信息)就能很快定位所属块文件,也能很快定位在当前文件中的读起始位置偏移量,而且在数据写入时,前4个字节记录了数据字节大小,在此种情况下,确定了偏移量和数据长度,就可以很快的还原数据。
在本发明实施例中,指标时序存储设备还可包括一个映射组件,该映射组件在整个设备中是的核心存在,其使用面最广且使用率最高;具体的,时序数据、变更日志、ID映射表以及索引等都是依托于该映射组件实现持久化的,即依托于该映射组件存储至相应存储文件中的。其中,该映射组件支持顺序写、随机读,且可通过较小的内存映射区域来实现,从而达到少占资源的目的;并且,在存储时序数据时,可通过直接将时序数据存储至存储文件中的方式,提高安全性,以达到安全第一的目的,从而避免时序数据存储至内存缓冲区且还没被存储至存储文件时,因宕机等情况而造成数据丢失,等等。
S404,将各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在目标存储文件中对任一写入时序指标数据进行查找。
在一种实施方式中,任一位置索引数据的存储结构为链式存储结构,且任一位置索引数据的索引存储信息是指:任一位置索引数据中末端节点的位置信息;那么在将各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中时,针对M个写入时序指标数据中的第m个写入时序指标数据,指标时序存储设备可将第m个写入时序指标数据对应指标的位置索引数据的末端节点作为第一节点。若第一节点为空节点,指标时序存储设备则可将第m个写入时序指标数据在目标存储文件中的位置信息,添加至第一节点中。若第一节点不是空节点,指标时序存储设备则可按序在第m个写入时序指标数据对应指标的位置索引数据中添加第二节点(即新节点),以使第二节点作为第m个写入时序指标数据对应指标的位置索引数据的末端节点,且第二节点位于第一节点之后;然后,可将第m个写入时序指标数据在目标存储文件中的位置信息,以及第一节点的位置信息,添加至第二节点中。
需要说明的是,若在目录索引数据中未查找到目标指标标识,则第m个写入时序指标数据对应指标的位置索引数据为指标时序存储设备新创建的一个位置索引数据,此时上述选取出的存储位置即为第m个写入时序指标数据对应指标的位置索引数据的末端节点所在位置,也为第m个写入时序指标数据对应指标的位置索引数据的头节点(即首端节点)所在位置;那么在此种情况下,第m个写入时序指标数据对应指标的位置索引数据的末端节点(即第一节点)则为空节点。那么相应的,若在目录索引数据中查找到目标指标标识,则第m个写入时序指标数据对应指标的位置索引数据为指标时序存储设备中已存在的位置索引数据,在此种情况下,第一节点则不是空节点。
应当理解的是,若第一节点为空节点,即未在目录索引数据中查找到目标指标标识,此时的第一节点也可称为新节点,该新节点在第m个写入时序指标数据对应指标的位置索引数据中可成为头节点,由于头节点没有上一级节点,那么指标时序存储设备还可在第一节点中记录头节点信息来进行标识,该头节点信息可以是“-1”,也可以是“1”,等等,本发明对此不作限定。
进一步的,若目录索引数据未包括目标指标标识,指标时序存储设备则可将第m个写入时序指标数据对应指标的位置索引数据的末端节点的位置信息,以及目标指标标识添加至目录索引数据中;若目录索引数据包括目标指标标识,指标时序存储设备则可采用第二节点的位置信息,在目录索引数据中对目标指标标识所匹配的索引存储信息进行更新。
可见,在对M个写入时序指标数据进行写操作时,目录索引数据会首先被全量加载进内存,针对M个写入时序指标数据中的第m个写入时序指标数据,指标时序存储设备会先检查目录索引数据,如果第m个写入时序指标数据对应指标的指标标识(即目标指标标识)在目录索引数据中存在,则可快速找到其位置索引数据末端节点(即尾部节点)的位置信息,然后可在该位置索引数据中顺序写入第二节点,那么第二节点在记录下第m个写入时序指标数据在目标存储文件中的位置信息的同时,还会记录下之前尾部节点(即第一节点)的位置信息,且第二节点则成为新的尾部节点,从而继续形成串联。如果目标指标标识在目录索引数据中不存在,那么将第m个写入时序指标数据的位置信息写入相应位置索引数据的第一节点后,还要将第一节点的位置信息作为相应位置索引数据的索引存储信息,并将该索引存储信息和目标指标标识写入目录索引数据中。
例如,如图5b所示,假设目录索引数据包括:指标A的指标标识、指标B的指标标识以及指标C的指标标识,还包括:指标A的位置索引数据的索引存储信息、指标B的位置索引数据的索引存储信息,以及指标C的位置索引数据的索引存储信息;进一步的,假设第m个写入时序指标数据为指标B的时序数据(即指标字节),此时目标指标标识为指标B的指标标识,那么在存储第m个写入时序指标数据时,指标时序存储设备可从目录索引数据中确定出指标B的位置索引数据的索引存储信息,从而确定指标B的位置索引数据的末端节点为节点5011(即第一节点),那么指标时序存储设备可在位置索引数据中顺序写入节点5012(即第二节点),且节点5012位于节点5011之后。在此种情况下,指标时序存储设备可在目标存储文件中的存储位置5013处对第m个写入时序指标数据进行存储,并将存储位置5013的位置信息和节点5012的上一节点(即节点5011)的位置信息,添加至节点5012中;最后,指标时序存储设备可采用节点5012的位置信息,对目录索引数据中指标B的位置索引数据的索引存储信息进行更新。
又如,如图5c所示,假设目录索引数据包括:指标A的指标标识和指标B的指标标识,还包括:指标A的位置索引数据的索引存储信息和指标B的位置索引数据的索引存储信息;进一步的,假设第m个写入时序指标数据为指标C的时序数据,即目标指标标识为指标C的指标标识,那么在存储第m个写入时序指标数据时,指标时序存储设备可先在目录索引数据中查找目标指标标识。由于目录索引数据中未包括目标指标标识,那么指标时序存储设备则可创建一个位置索引数据作为指标C的位置索引数据;基于此,指标时序存储设备可在位置索引文件中选取一个存储位置,并将该存储位置作为节点5021(即第一节点)的存储位置,也就是说,指标时序存储设备可将节点5021作为指标C的位置索引数据中的头节点,且此时节点5021同时也为指标C的位置索引数据中的末端节点。进一步的,指标时序存储设备可在存储位置5022处存储第m个写入时序指标数据,并将存储位置5022的位置信息和头节点信息添加至节点5021中;然后,指标时序存储设备可将指标C的指标标识和指标C的位置索引数据的索引存储信息,添加至目录索引数据中。
需要说明的是,图5a、图5b以及图5c均示例性地对目录索引数据和相应位置索引数据进行了表示,本发明实施例对此不作限定。例如,目录索引数据还可以包括指标D的指标标识和指标D的位置索引数据的索引存储信息;又如,任一指标的指标标识也可占8个字节,等等。
另一种实施方式中,任一位置索引数据的存储结构为链式存储结构,且任一位置索引数据的索引存储信息是指:任一位置索引数据中头节点的位置信息;那么在将各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中时,针对M个写入时序指标数据中的第m个写入时序指标数据,指标时序存储设备可基于第m个写入时序指标数据对应指标的位置索引数据的头节点,查找到第m个写入时序指标数据对应指标的位置索引数据的末端节点,并将查找到的末端节点作为第一节点,从而根据第一节点的节点信息(包括但不限于:第一节点是否为空节点以及第一节点的位置信息,等等)来更新第m个写入时序指标数据对应指标的位置索引数据,以及目录索引数据,等等。其中,基于第一节点的节点信息来更新第m个写入时序指标数据对应指标的位置索引数据,以及目录索引数据的具体过程如上所述,本发明在此不再赘述。
S405,在检测到目标实时数据分片的创建时长大于预设时长时,获取包括目标实时数据分片的至少一个实时数据分片,M个写入时序指标数据为目标实时数据分片中的时序数据。
其中,目标实时数据分片可包括存储时间位于目标时间范围内的时序数据;并且,目标实时数据分片的创建时长大于至少一个实时数据分片中的其他实时数据分片的创建时长,且任一实时数据分片的创建时长是指:该任一实时数据分片的创建时间与当前系统时间之间的差值。需要说明的是,上述预设时长可以是3个小时,也可以是1天,还可以是上述预设隔离周期的整数倍,等等;本发明对此不作限定。
在本发明实施例中,针对指标时序存储设备中的实时数据分片,一个实时数据分片对应的数据存储结构支持顺序写,相同指标不同时间窗口并不一定相邻,相同时间窗口不同指标乱序排列。基于此,实时数据分片主要面向写操作,为了支持针对单个指标的时序读取操作(即读操作),本发明实施例使用了两层索引(即目录索引数据和位置索引数据),目录索引数据负责快速定位某个指标并关联相应的位置索引数据,位置索引数据则可对相同指标(相同名称,不同维度,不同时间窗口等)进行串联,也就是说,可对相同指标的时序数据在存储文件中的位置信息进行串联。其中,维度可以指的是描述指标的时序数据的角度,如在不同的城市分别对某个指标的时序数据进行检测,那么该指标的城市维度可为多个,等等。
需要说明的是,指标时序存储设备可包括W个实时数据分片,W为正整数;其中,W个实时数据分片中的每个实时数据分片用于存储:存储时间位于不同时间范围内的时序数据,也就是说,不同实时数据分片对应的时间范围不同。基于此,在获取包括目标实时数据分片的至少一个实时数据分片时,指标时序存储设备可在W个实时数据分片中选取出包括目标实时数据分片的至少一个实时数据分片;具体的,指标时序存储设备可将W个实时数据分片中,时间范围位于目标时间点之前的实时数据分片,作为选取出的至少一个实时数据分片;也可以将包括待转化时序数据的实时数据分片作为选取出的至少一个实时数据分片,待转化时序数据可以指的是产生时间位于目标时间范围内的时序数据,等等;本发明对获取至少一个实时数据分片的具体实施过程不作限定。其中,上述目标时间点可以是当前系统时间,也可以是在目标时间范围之后的时间段内随机生成的一个时间点,等等;本发明对此不作限定。
S406,生成目标实时数据分片对应的目标历史数据分片,目标历史数据分片用于存储产生时间位于目标时间范围内的时序数据。
其中,一个指标包括至少一个维度,目标历史数据分片中同一指标且同一维度下的时序数据的存储位置相邻。应当理解的是,实时数据分片对应的存储结构只是最大限度将相同指标数据进行串联(即通过位置索引数据将同一指标的时序数据的存储信息串联起来),但是却无法快速定位到具体某个时间窗口,因此对产生时间的过滤只能通过边迭代边效验来实现,也就是说,在通过实时数据分片进行读操作时,指标时序存储设备可基于相应的位置索引数据来依次读取一个指标的时序数据,并通过读取到的时序数据的产生时间,来确定读取到的时序数据是否为所需读取的时间范围内的时序数据。
在本发明实施例中,历史数据分片也可称为只读分片,是通过实时数据分片转化而来,该转化过程即是针对已经固化的数据集(即实时数据分片)进行的二次存储优化,优化的目的就是占用更小的资源进行更高效的读操作;相比于实时数据分片,历史数据分片只使用了一层索引(即历史索引数据),节省了存储空间。通过历史数据分片,指标时序存储设备中的存储层可将相同指标不同维度下的数据全部聚合在一起,相同维度下的不同时间窗口数据形成连续的时序数据区域,如图6所示。可见,这样的存储结构能快速定位某个时间段内窗口的起始位置与结束位置,从而提高了读取效率。
可选的,一个目标实时数据分片可对应一个目标历史数据分片,此时所生成的一个目标历史数据分片对应的时间范围为目标时间范围;另外,一个目标实时数据分片也可对应多个目标历史数据分片,在此种情况下,多个目标历史数据分片中各个历史数据分片对应的时间范围可构成上述目标时间范围,等等。
S407,将至少一个实时数据分片中产生时间位于目标时间范围的时序数据,添加至目标历史数据分片中,以使目标实时数据分片转化为目标历史数据分片。
其中,至少一个实时数据分片中产生时间位于目标时间范围的时序数据包括:Q个指标中各个指标对应的至少一个维度下的一个或多个时序数据,一个指标在一个维度下对应至少一个时间窗口,该至少一个时间窗口构成目标时间范围,Q为正整数。
在具体实现中,针对Q个指标中第q个指标在第i个维度下对应的第j个时间窗口,指标时序存储设备可从至少一个实时数据分片中,选取出第q个指标在第i个维度下的至少一个目标时序数据,任一目标时序数据的产生时间位于第j时间窗口内;其中,q∈[1,Q],i∈[1,I],j∈[1,J],且I为第q个指标对应维度的数量,J为第q个指标在第i个维度下的时间窗口的数量;进一步的,指标时序存储设备可将至少一个目标时序数据,存储至第j个时间窗口对应的存储区域,以使至少一个目标时序数据被添加至第j个时间窗口内。需要说明的是,为了便于查找,每个时间窗口所对应时长均相同,且一个时间窗口所对应时长可以是1分钟,也可以是2分钟,本发明对此不作限定。
进一步的,若目标实时数据分片中包括产生时间位于目标时间范围之前的至少一个历史时序数据,那么指标时序存储设备可按照产生时间所属时间范围对至少一个历史时序数据进行分组,得到至少一个历史时序数据组,同一历史时序数据组中的历史时序数据的产生时间落在同一历史数据分片对应时间范围内;那么相应的,指标时序存储设备可分别将至少一个历史时序数据组中的各个历史时序数据组,与相匹配的历史数据分片进行分片重组处理,得到各个历史时序数据组对应的更新后的历史数据分片,任一更新后的历史数据分片包括相应的历史时序数据组中的时序数据,以及该任一更新后的历史数据分片对应的更新前的时序数据。
示例性的,假设上述至少一个实时数据分片包括目标实时数据分片和候选实时数据分片,且目标实时数据分片对应的目标时间范围为8:00:00-9:00:00,目标实时数据分片包括:指标A在第1个维度下的时序数据1(产生时间为8:30:06)、指标A在第1个维度下的时序数据2(产生时间为8:30:08)、指标A在第2个维度下的时序数据3(产生时间为8:36:09),以及指标B在第1个维度下的时序数据4(产生时间为8:33:36);候选实时数据分片对应的时间范围为9:00:00-10:00:00,且候选实时数据分片包括:指标A在第2个维度下的时序数据5(产生时间为8:36:36)、指标A在第1个维度下的时序数据6(产生时间为9:40:21)以及指标A在第2个维度下的时序数据7(产生时间为9:50:46)。在此种情况下,当指标时序存储设备生成了一个目标历史数据分片时,该目标历史数据分片可用于存储产生时间位于目标时间范围内的时序数据;进一步的,假设每个时间窗口对应时长为1分钟,那么每个指标在一个维度下对应60个时间窗口,那么相应的,由于时序数据1和时序数据2的产生时间均位于指标A在第1个维度下的第31个时间窗口,时序数据3和时序数据5的产生时间均位于指标A在第2个维度下的第37个时间窗口,以及时序数据4的产生时间位于指标B在第1个维度下的第34个时间窗口;那么相应的,指标时序存储设备可将时序数据1和时序数据2存储至目标历史数据分片中指标A在第1个维度下的第31个时间窗口对应的存储区域中,将时序数据3和时序数据5存储至目标历史数据分片中指标A在第2个维度下的第37个时间窗口对应的存储区域中,并将时序数据4存储至目标历史数据分片中指标B在第1个维度下的第34个时间窗口对应的存储区域中。
进一步的,假设目标实时数据分片还包括指标A在第1个维度下的时序数据8(产生时间为7:40:21)、指标A在第1个维度下的时序数据9(产生时间为7:40:23)以及指标A在第1个维度下的时序数据10(产生时间为6:55:20),在此种情况下,指标时序存储设备可在目标实时数据分片中确定两个历史时序数据组,历史时序数据组1包括时序数据8和时序数据9,历史时序数据组2包括时序数据10,且可确定与历史时序数据组1匹配的历史数据分片为:对应时间范围为7:00:00-8:00:00的历史数据分片1,与历史时序数据组2匹配的历史数据分片为:对应时间范围为6:00:00-7:00:00的历史数据分片2。那么相应的,指标时序存储设备可对历史时序数据组1和历史数据分片1进行分片重组处理,以生成一个包括历史时序数据组1中的时序数据和历史数据分片1中的时序数据的更新后的历史数据分片,从而取代历史数据分片1;并可对历史时序数据组2和历史数据分片2进行分片重组处理,以生成一个包括历史时序数据组2中的时序数据和历史数据分片2中的时序数据的更新后的历史数据分片,从而取代历史数据分片2。
应当理解的是,在目标实时数据分片被转化为目标历史数据分片后,指标时序存储设备可删除目标实时数据分片。可选的,无论是实时数据分片还是历史数据分片,其一级索引(即实时数据分片中的目录索引数据和历史数据分片中的历史索引数据)均可存储指标ID作为指标标识,这样做的好处是既节省了索引的存储空间,同时还固化了每个索引节点所占字节大小,简化了读写逻辑;这是由于若指标标识为指标度量代码(如指标名称),每个指标度量代码所占字节大小可能不同,且可能占据较大的存储空间。其中,指标ID化可由单独的模块(ID Generator,身份标识号生成器)负责维护;需要说明的是,由于指标时序存储系统面向的是时序数据流,因此在较长一段时间内,指标的类别(即种类)变化不会很大,那么ID管理器与数据分片可不设计成一对一的关系,而是一个ID管理器负责维护了多个数据分片的ID映射表(如:分片固定周期(即数据分片对应时间范围所形成的时长)可为1小时,而ID管理器周期(即ID更新周期)可为1天或者是1周等)。
应当理解的是,指标时序存储设备中的任一分区包括F个历史数据分片,F为非负整数;一个历史数据分片包括一个历史索引数据,且一个历史索引数据包括:相应历史数据分片中存储的时序数据所对应指标的指标标识,以及与每个指标标识匹配的指标位置信息;其中,在当前系统时间之间存在实时数据分片转化为历史数据分片的情况下,F为正整数;在当前系统时间之前未存在实时数据分片转化为历史数据分片的情况下,F的取值为0。基于此,指标时序存储设备可接收客户端发送的读取请求信息,该读取请求信息包括待读取指标列表,以及待读取指标列表中各个待读取指标的读取时间,且各个待读取指标的时序数据位于指标时序存储设备中的读取分区中;在此种情况下,可在读取分区中,查找与读取时间匹配的匹配历史数据分片,该匹配历史数据分片对应的时间范围与读取时间之间存在重叠关系,也就是说,匹配历史数据分片对应时间范围包括读取时间中的至少一个时间点。其中,上述读取分区是指:待读取指标列表中的指标所属分区;可选的,读取请求信息可包括待读取指标列表中的指标所属分区的分区标识,那么指标时序存储设备可将接收到的分区标识所指示的分区作为读取分区;指标时序存储设备也可基于待读取指标列表中指标与分区的所属关系,确定读取分区,等等。
那么相应的,针对待读取指标列表中的任一待读取指标,若查找到匹配历史数据分片,且匹配历史数据分片中的历史索引数据包括任一待读取指标的指标标识,则基于与任一待读取指标的指标标识匹配的指标位置信息,从匹配历史数据分片中选取出任一待读取指标的至少一个时序数据;基于此,指标时序存储设备可将选取出的时序数据发送至客户端。其中,与一个指标标识匹配的指标位置信息可用于指示:相应指标标识所指示指标在匹配历史数据分片对应存储区域的起始存储位置,起始存储位置可以用于存储相应指标的维度组个数,也可以用于存储相应指标的指标标识,等等;本发明对此不作限定。需要说明的是,上述待读取指标列表可包括各个待读取指标的指标指示信息,指标指示信息与指标标识一一对应,也就是说,可基于一个指标指示信息生成相应的指标标识,且一个指标的指标指示信息可以与相应指标的指标标识相同,也可以与相应指标的指标标识不同,本发明对此不作限定。
进一步的,上述读取请求信息还可包括各个待读取指标的至少一个读取维度标识,针对上述任一待读取指标的任一读取维度标识,在基于与任一待读取指标的指标标识匹配的指标位置信息,从匹配历史数据分片中选取出任一待读取指标的至少一个时序数据时,指标时序存储设备可基于与任一待读取指标的指标标识匹配的指标位置信息,从匹配历史数据分片中选取出任一待读取指标,在上述任一读取维度标识所指示维度下的至少一个时序数据。
例如,假设上述任一待读取指标为指标B,读取时间为8:20:00至8:30:00,指标时序存储设备包括历史数据分片1(对应时间范围为8:00:00-9:00:00)和历史数据分片2(对应时间范围为9:00:00-10:00:00),那么指标时序存储设备可匹配历史数据分片为历史数据分片1。在此种情况下,若历史数据分片1的历史索引数据包括指标B的指标标识,那么指标时序存储设备可从历史数据分片中的历史索引数据中,确定出与指标B的指标标识匹配的指标位置信息,从而在历史数据分片1中选取出指标B的产生时间位于读取时间内的时序数据,即选取出指标B的时间窗口落在读取时间内的时序数据;又假设每个时间窗口对应时长为1分钟,那么此时一个指标在一个维度下的时间窗口为60个,基于此,指标时序存储设备可从历史数据分片1中选取出指标B在第21个时间窗口至第30个时间窗口内的时序数据。进一步的,假设读取请求信息还可包括指标B的读取维度标识B(即指标B的第2个维度的维度标识),那么指标时序存储设备可在历史数据分片1中选取出指标B在第2个维度下的第21个时间窗口至第30个时间窗口内的时序数据。
在本发明实施例中,指标时序存储设备中的任一分区还包括至少一个实时数据分片,一个实时数据分片包括一个目录索引数据和至少一个位置索引数据;在接收到客户端发送的读取请求信息后,指标时序存储设备还可在读取分区中,查找与任一待读取指标的指标标识相匹配的G个匹配实时数据分片,匹配实时数据分片是指:目录索引数据包括该任一待读取指标的指标标识的实时数据分片,G为非负整数。那么相应的,若G为正整数,针对G个匹配实时数据分片中的任一匹配实时数据分片,基于任一匹配实时数据分片中的目录索引数据,确定出任一待读取指标的位置索引数据;并采用任一待读取指标的位置索引数据,在任一匹配实时数据分片中,按序读取出任一待读取指标的至少一个时序数据,读取出的时序数据的产生时间位于读取时间内,从而可将读取出的时序数据发送至客户端。应当理解的是,当对实时数据分片进行读操作时,一个实时数据分片的目录索引数据会先被加载进内存,然后通过目录索引数据快速定位到所需访问的位置索引数据,最后直接操作位置索引文件(如使用RadomAccessFile(随机读写类))对位置索引数据进行快速迭代,以在相应存储文件的相应存储位置读取时序数据。
进一步的,若上述读取请求信息还可包括各个待读取指标的至少一个读取维度标识,针对上述任一待读取指标的任一读取维度标识,在采用任一待读取指标的位置索引数据,在任一匹配实时数据分片中,按序读取出任一待读取指标的至少一个时序数据时,指标时序存储设备可采用任一待读取指标的位置索引数据,在任一匹配实时数据分片中,按序读取出任一待读取指标在任一读取维度标识所指示维度下的至少一个时序数据。
举例来说,假设任一待读取指标为指标B,读取时间为8:20:00至8:30:00,且指标时序存储设备包括实时数据分片1和实时数据分片2,又假设实时数据分片1中的目录索引数据包括指标B的指标标识和指标C的指标标识,实时数据分片2中的目录索引数据包括指标A的指标标识;在此种情况下,指标时序存储设备可确定实时数据分片1为与指标B的指标标识相匹配的匹配实时数据分片,相应的,可采用指标B的位置索引数据,在实时数据分片1中,按序读取出指标B的至少一个时序数据,且读取出的时序数据的产生时间位于读取时间内。进一步的,假设读取请求信息还可包括指标B的读取维度标识B,那么指标时序存储设备可采用指标B的位置索引数据,在实时数据分片1中,按序读取出指标B在读取维度标识B所指示维度下的至少一个时序数据。
可选的,指标时序存储设备可包括资源管理模块(Resource Allocator),该资源管理模块也可称为资源管理程序或资源管理器,为数据存储模块(负责上述对写入时序指标数据的存储过程)的附属模块,可负责分区与数据分片的映射、数据分片共享以及读并发控制等。具体的,该资源管理模块可用于负责指标时序存储设备在执行写操作时,对实时数据分片的创建与加载;也可用于负责指标时序存储设备在执行读操作时,对数据分片进行选择性加载,如优先加载历史数据分片,如果加载失败或者不存历史数据分片等情况则可尝试加载实时数据分片,同时可在并发情况下,控制数据分片的加载数量,从而对已加载而不再使用的数据分片进行及时关闭,以防止内存泄漏,还可当有多个请求访问同一数据分片时,支持资源共享等;并且,资源管理模块还可定期检查实时数据分片,并将已经过期的实时数据分片转化为历史数据分片,等等。
本发明实施例可在接收到客户端发送的M个写入时序指标数据后,在目标分区中分别确定各个写入时序指标数据对应指标的位置索引数据,从而在将各个写入时序指标数据存储至目标存储文件后,可将各个写入时序指标数据的位置信息添加至相应的位置索引数据中,以便于基于位置索引数据精确地获取相应指标的时序数据。进一步的,M个写入时序指标数据为目标实时数据分片中的时序数据,在检测到目标实时数据分片的创建时长大于预设时长时,指标时序存储设备可生成目标实时数据分片对应的目标历史数据分片,该目标历史数据分片中同一指标且同一维度下的时序数据的存储位置相邻;那么相应的,指标时序存储设备可将至少一个实时数据分片中产生时间位于目标时间范围的时序数据,添加至目标历史数据分片中,以使目标实时数据分片转化为目标历史数据分片。可见,指标时序存储设备可通过历史数据分片,将相同指标且相同维度下的不同时间窗口数据形成连续的时序数据区域,可在执行读取操作时快速定位所需读取的某个时间段内时间窗口的起始位置和结束位置,从而提高读取效率;并且,历史数据分片只存储了一层索引,可有效节省存储空间。
基于上述描述,本发明实施例还提出另一种的时序数据处理方法,该时序数据处理方法可以由上述所提及的指标时序存储系统中的任一客户端执行。请参见图7,该时序数据处理方法可包括以下步骤S701-S703:
S701,在接收到数据写入请求后,分别对各个聚合粒度下的P个写入时序指标数据进行分流处理,得到各个聚合粒度下的至少一个数据批,同一数据批中的写入时序指标数据所属分区相同,P为正整数。
应当理解的是,同一数据批中的写入时序指标数据对应指标所属分区相同。其中,数据写入请求携带有L个写入时序指标数据,L为正整数,且P小于或等于L。
需要说明的是,上述聚合粒度可以是时间聚合粒度(如1分钟或两分钟等),也可以是数量聚合粒度(如待写入的1000个写入时序指标数据或10000个写入时序指标数据等),等等;本发明对此不作限定。例如,当聚合粒度为时间聚合粒度时,假设聚合粒度为1分钟,那么客户端可对1分钟内接收到的P个写入时序指标数据进行分流处理;又如,当聚合粒度为数量聚合粒度时,假设聚合粒度为1000,且客户端接收到2000个写入时序指标数据,那么此时客户端可分别对2个聚合粒度中各个聚合粒度下的1000个写入时序指标数据进行分流处理,此时P的取值可小于或等于聚合粒度,等等。
在具体实现中,针对各个聚合粒度中的任一聚合粒度,在对该任一聚合粒度下的P个写入时序指标数据进行分流处理,得到该任一聚合粒度下的至少一个数据批时,客户端可对该任一聚合粒度下的P个写入时序指标数据按所属分区进行分流处理,使得相同分区的写入时序指标数据可先被聚集成一个数据批(数据批为最小发送单元)。需要说明的是,每个数据批的数据条数与等待聚集的条件(即聚合粒度,如达到1分钟或1000个写入时序指标数据等)均是可以配置的,这样的设计既兼顾了时效,又提高了吞吐。
示例性的,假设上述任一聚合粒度下的P个写入时序指标数据包括:写入时序指标数据1(指标A的时序数据)、写入时序指标数据2(指标A的时序数据)、写入时序指标数据3(指标B的时序数据)、写入时序指标数据4(指标C的时序数据),又假设指标A所属分区为分区1,且指标B和指标C所属分区均为分区2,那么客户端进行分流处理时,可将写入时序指标数据1和写入时序指标数据2聚集为一个数据批,并将写入时序指标数据3和写入时序指标数据4聚集为一个数据批。
可选的,客户端可包括写入模块(Writer),该写入模块也可称为指标写入模块,且写入模块可在时序数据写入服务端之前,对时序数据进行预处理;具体的,写入模块可包括分组收集器(batch collector),那么客户端可通过分组收集器对各个聚合粒度下的P个写入时序指标数据,按其所属分区进行分流处理。
在本发明实施例中,分区是数据存储的最大逻辑单元,指标时序存储系统中的分区数量(即主分区数量或总分区数)为预设分区数量,该预设分区数量可以是4或5等,本发明对预设分区数量的具体取值不作限定;为了提高安全性等,每个分区可包括一个主分区和至少一个副本(即副分区)。在具体实现中,一个指标对应一个分区,也就是说,同一指标的时序数据所对应的分区相同,且一个分区可包括多个指标的时序数据;在此种情况下,可根据某一指标所属分区来确定该指标的时序数据的所属分区。
可选的,指标时序存储系统的分区数量可以是系统内部定制好的,暂时不支持更改,每个指标永远只会属于一个分区,且指标所属分区可以通过指标指示信息与总分区数哈希取模计算获得;在此种情况下,若一旦修改分区数量必会导致某些指标在修改前后映射到不同分区,但由于在真实生产环境中,很难精确的控制指标的时序数据进入指标时序存储系统的时间(例如:5:00产生的时序数据往往会在5:01甚至更晚才会上传),那么在读取的时候也就无法明确该时序数据当初写入了哪个分区;基于此,当分区数量固定,且通过哈希取模方式对指标与分区进行映射时,每个指标永远只会属于一个分区,从而避免一个指标对应多个分区而导致不能精确地读取所需的时序数据。
S702,从指标时序存储设备集中,分别确定与各个聚合粒度下的每个数据批所属的分区相匹配的指标时序存储设备。
其中,指标时序存储设备集包括指标时序存储系统中的各个指标时序存储设备,一个分区的主分区所在指标时序存储设备也可称为相应分区的主节点,且一个分区的副分区所在的指标时序存储设备可称为相应分区的副节点或从节点等。
在具体实现中,针对各个聚合粒度中的任一聚合粒度,客户端可确定与该任一聚合粒度下的每个数据批所属分区相匹配的指标时序存储设备,且与一个数据批所属分区相匹配的指标时序存储设备为:相应数据批所属分区所在的主节点,即是指:相应数据批所属分区的主分区所在的指标时序存储设备。
可选的,客户端中的写入模块还可包括分发器(dispatch)和服务器分区映射器(server partition mapper),该服务器分区映射器也可称为分区映射器(PartitionMapper),分区映射器可负责维护分区与服务节点的映射关系。在数据批聚集完成后,客户端可通过分组收集器将各个数据批传送给分发器,那么分发器可从分区映射器获取各个数据批所属分区所在的主节点(即应用程序服务器),如图8所示。其中,分区映射器可定期更新所有分区主副本在分布式服务节点中的分布详情,且分区映射器还可称为集群分布式协调模块,该集群分布式协调模块可基于zookeeper(一个分布式的,开放源码的分布式应用程序协调服务)进行开发,可在启动应用时负责节点服务接口注册,包括指标读写与副本同步等,还可负责集群(即指标时序存储设备集)内选主,成为Leader(领导者)的节点(即主节点)会定期检查集群内服务节点在线情况,如有节点离线或者上线,将会对分区进行再平衡,并将更新后的分区分布拓扑及时通知到集群内各个节点。
在本发明实施例中,指标时序存储系统还可包括服务治理组件,也可称为中间件,服务治理组件可以是基于zookeeper官方API(Application Program Interface,应用程序接口),以降低代码编写门槛而自封装的类库;纵观整个指标时序存储系统,zookeeper扮演了极为重要的角色,它的很多特性都得到了广泛的使用;示例性的,客户端与服务端交互依赖其服务注册与发现特性,服务端分布式协调依赖其强大的选主特性,服务端节点上线与下线感知依赖其缓存节点监听特性,也可以用于分布式全局数据的存储。
S703,分别将各个聚合粒度下的每个数据批,添加至与所属分区相匹配的指标时序存储设备对应的批数据队列中,并基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,以使相应指标时序存储设备将接收到的数据批存储在所属分区中。
需要说明的是,针对指标时序存储设备集中的目标指标时序存储设备(即目标节点),客户端可对目标节点绑定一个专属的批数据队列(file queue),同时可启动一个该批数据队列的专属消费线程(producer)负责将批数据队列中的数据批发送到远端服务节点(即相应指标时序存储设备)。进一步的,如果发送失败,消费线程则可将数据批返回给分发器,即执行失败时重试(retry on failure)操作,那么分发器可根据当前最新的分区分布详情(即当前系统时间下的分区分布详情,若之前发送的目标节点下线则会自动触发集群内分区再平衡)重新选择目标节点,并将发送失败的数据批发送到与新目标节点绑定的异步消费队列(即批数据队列)。
示例性的,假设客户端包括数据批1、数据批2以及数据批3,数据批1和数据批2所属分区均为分区1,数据批3所属分区为分区2,且分区1的主分区位于指标时序存储设备1中,分区2的主分区位于指标时序存储设备2中,客户端为指标时序存储设备1绑定了批数据队列1并为指标时序存储设备2绑定了批数据队列2;在此种情况下,客户端可将数据批1和数据批2添加至批数据队列1中,并可将数据批3添加至批数据队列2中,从而通过相应的消费线程将批数据队列1中的数据批1和数据批2发送至指标时序存储设备1中,并通过相应的消费线程将批数据队列2中的数据批3发送至指标时序存储设备2中。
应当理解的是,当时序数据进行指标时序存储系统后,并不需要等待其完全写入相应指标时序存储设备的存储文件中,这是因为中间的流程既繁琐又复杂,同时还渗透了严密的高可用策略,而这些对业务调用方都是透明的,而且他们也并不关心中间的处理环节,因此API调用逻辑只需保证数据正常写入批数据队列即可,接下来数据的安全性将由指标时序存储系统的健壮性来保障。那么相应的,指标时序存储系统的高可用第一层保障可通过异步消费队列来实现。
在本发明实施例中,客户端还可包括分布式数据交互模块,以将相应消费线程中的数据批发送至服务端;示例性的,该分布式数据交互模块可为rpc(remote procedurecall,远程过程调用)模块,负责分布式数据交互;如图8所示,消费线程可通过rpc client(远程过程调用客户端),将数据批发送至应用程序服务器,即指标时序存储设备,该远程过程调用客户端也可称为远程过程调用存储客户端(rpc store client)。应当理解的是,分布式环境下数据交互涉及网络传输,这里既可以选择HTTP协议(HyperText TransferProtocol,超文本传输协议),也可以选择更加底层的TCP协议(Transmission ControlProtocol,传输控制协议),还可以选择基于以上两种协议的开源通信组件(如Netty(一个异步事件驱动的网络应用程序框架)、Thrift(用于各个服务之间的RPC通信),以及基于Netty封装的Dubbo(一个分布式服务框架,致力于提供高性能和透明化的RPC方案)和Grpc(一个高性能、开源和通用的RPC框架)),本发明对此不作限定。可选的,出于高性能、简单易用,以及适于海量数据传输的考虑,可选择开源的Grpc,Grpc是基于HTTP2.0网络传输协议和ProtoBuf(Protocol Buffers,协议缓冲区)序列化协议开发的;该框架本身提供了丰富多样的调用方式,如:阻塞、Future(一种被广泛运用的并发设计模式)、回调以及流式等,也提供了多种安全认证方式,如:TLS(Transport Layer Security,安全传输层协议)、JWT(JSON Web Token,一种包含信息的令牌)、Auth(一种授权接口)等。
进一步的,客户端可包括至少一个指标时序存储设备中各个指标时序存储设备对应的批数据队列,该至少一个指标时序存储设备可包括:指标时序存储设备集中存在至少一个主分区的指标时序存储设备,也可包括指标时序存储设备集中的所有指标时序存储设备,本发明对此不作限定;针对至少一个指标时序存储设备中的任一指标时序存储设备,若任一指标时序存储设备对应的批数据队列的消费速度小于生产速度,客户端则可通过内存映射的方式,将任一指标时序存储设备对应批数据队列中的数据批,映射至客户端的存储文件中;其中,一个批数据队列的消费速度是指将数据批发送至相应指标时序存储设备的速度,且一个批数据队列的生产速度是指在批数据队列中添加数据批的速度。基于此,本发明实施例也可将批数据队列称为基于文件系统的数据队列;可见,在消费过程中(即在将数据批发送至相应指标时序存储设备的过程中),当消费速度低于生产速度时,未及时消费的时序数据不会积压在内存里,而是以MMap的方式快速落盘,且落盘的顺序与生产的顺序可保持强一致。其中,批数据队列是线程安全的,支持多线程并发场景。
进一步的,将未消费的数据批映射至存储文件,也随之会引入磁盘使用增长过快的问题;针对该问题,任一批数据队列还可提供自动清理机制,从而实现对达到过期时间的数据批的自动清理,以实现对存储空间的释放。在一种实施方式中,客户端可基于该任一批数据队列提供的自动清理机制,按照时间单元分目录的方式,对任一批数据队列中的数据批映射至上述存储文件中,并在存储文件中对至少一个数据批中各个数据批添加过期时间,从而在检测到达到过期时间的数据批时,对达到过期时间的数据批进行自动清理,以在存储文件中删除达到过期时间的数据批。另一种实施方式中,客户端可获取预设过期时长,并确定存储文件包括的至少一个数据批中各个数据批的存储时长,一个数据批在存储文件中的存储时长是指:相应数据批存储至存储文件中的存储时间,与当前系统时间之间的差值;基于此,在检测到存储时长大于预设过期时长的数据批时,对检测到的数据批进行自动清理,以在存储文件中删除检测到的数据批;其中预设过期时长可以是1个小时,也可以是2个小时等,本发明对此不作限定。
需要说明的是,针对目标批数据队列,若目标批数据队列所发送的数据批中存在消费失败的数据批(即未成功发送至相应指标时序存储设备的数据批),那么客户端可确定消费失败的数据批在当前系统时间下与所属分区匹配的指标时序存储设备,并将消费失败的数据批添加至确定的指标时序存储设备对应的批数据队列中,以等待对消费失败的数据批的下一次消费,直至消费失败的数据批被成功发送至所属分区所在的指标时序存储设备中。换句话说,客户端可在检测到消费失败的数据批时,将消费失败的数据批尝试重新进入相应的批数据队列中,并等待定时调度线程根据特定的重试策略进行重试消费,且重试策略可根据重试周期、重试频率以及重试次数等进行设置,本发明对重试策略的具体设置内容不作限定;示例性的,假设重试策略包括重试次数,且重试次数为3,那么在客户端对消费失败的数据批重试3次后仍未消费成功(即仍未成功发送至相应指标时序存储设备中),那么客户端可取消对消费失败的数据批的重试操作,并可进一步删除消费失败的数据批,等等。
在本发明实施例中,客户端在接收到数据读取请求(即读请求)时,可按照所需请求的分区对数据读取请求携带的请求数据进行整合分组(即请求解析),得到至少一个请求组,该请求数据包括:待读取指标列表和待读取指标列表中各个待读取指标的读取时间,一个请求组包括:目标分区的分区标识(如分区名称或分区编号等)、在目标分区中所需请求的指标列表和相应指标的读取时间,以及目标分区对应的设备列表,该设备列表包括一个或多个指标时序存储设备中每个指标时序存储设备的设备标识(如设备名称或设备编号等);基于此,客户端可分别基于至少一个请求组中的各个请求组,向指标时序存储设备集包括的相应分区中获取数据,以获取到各个请求组所需请求的时序数据。其中,划分好的请求组为最小请求单元;可选的,上述设备列表可仅包括主服务节点列表(目标分区的主分区所在服务节点为主节点),也可包括主从服务节点列表(副本所在服务节点为从节点),本发明对此不作限定。
需要说明的是,一次数据读取请求必须指定时间范围(即各个待读取指标的读取时间),一个读取时间可以是几小时,也可以是几天,本发明对此不作限定;在此种情况下,客户端即可在接收到数据读取请求后,确定在哪段时间读取哪些指标的时序数据。
应当理解的是,各个待读取指标(即要读取的指标)可能会分散在不同的分区,不同分区又可能分布在不同指标时序存储设备,且为了支持高可用,指标时序存储系统中每个分区又会有多个副本,而这些副本也都分布在不同指标时序存储设备,甚至一段时间范围内分布式集群可能出现了多次再平衡,这也很可能会导致同一分区(包括副本)在不同再平衡阶段分布在不同指标时序存储设备。
在此种情况下,客户端在按照所需请求的分区对数据读取请求携带的请求数据进行整合分组时,可首先按照分区进行第一层划分,得到至少一个分区组;若在相应读取时间内分区未经历再平衡,那么客户端可将至少一个分区组作为至少一个请求组;若在相应读取时间内分区经历了至少一次再平衡,那么客户端可基于各个再平衡时间点,对至少一个分区组中各个分区组进行第二层划分,从而得到至少一个请求组。可选的,第二层划分时可考虑数据写入延迟以及再平衡感知延迟等,即可基于各个再平衡时间点与至少一个延迟时长所形成的时间点,对各个分区组进行第二层划分。应当理解的是,在需进行第二层划分时,待读取指标列表中可存在Y个待读取指标需从多个指标时序存储设备中获取相应的时序数据,Y为非负整数。
举例来说,假设待读取指标列表包括指标A的指标指示信息、指标B的指标指示信息以及指标C的指标指示信息,指标A、指标B以及指标C的读取时间均为9:00:00-9:30:00,且在分区未经历再平衡之前,指标A和指标B所属分区为分区1,指标C所属分区为分区2,以及分区1位于指标时序存储设备1中,分区2位于指标时序存储设备2中;若在读取时间内分区未经历再平衡,那么客户端在对请求数据进行整合分组时,仅需按照分区进行第一层划分,从而得到请求组1(可包括指标A的指标指示信息和指标B的指标指示信息所形成的指标列表、分区1的分区标识以及指标时序存储设备1的设备标识等)和请求组2(可包括指标C的指标指示信息所形成的指标列表、分区2的分区标识以及指标时序存储设备2的设备标识等);若在9:25:00时发生了再平衡,且分区2所在的指标时序存储设备变更为指标时序存储设备1,由于再平衡时间点位于读取时间内(或者再平衡时间点与相应延长时间所形成的时间点位于读取时间内),那么客户端在进行第一层划分后,可得到分区组1(即上述请求组1)和分区2(即上述请求组2),相应的,可对分区2进行第二层划分,得到请求组3(指标C的指标指示信息所形成的指标列表、分区2的分区标识以及指标时序存储设备2的设备标识等)和请求组4(指标C的指标指示信息所形成的指标列表、分区2的分区标识以及指标时序存储设备1的设备标识等),在此种情况下,至少一个请求组可包括请求组1、请求组3以及请求组4。可见,在获取指标C在读取时间内的时序数据时,既要从指标时序存储设备1中进行读取,也要从指标时序存储设备2中进行读取,从而结合两个指标时序存储设备中获取到的指标C在读取时间内的时序数据,以得到最终的指标C在读取时间内的时序数据。
可选的,客户端可包括指标读取模块(Reader),该指标读取模块可在请求服务端数据之前,对请求数据进行预处理;具体的,指标读取模块(即读取模块)可包括请求解析器(request resolver),那么请求解析器可结合分区映射器(server partition mapper)对请求数据按照空间和时间进行整合分组;其中,分区映射器缓存了时序数据在可读周期(即时序数据的存储周期,如两周或三周等,超过存储周期的时序数据可被清理)之内的全部再平衡快照(即记录了再平衡前后的分区与指标时序存储设备之间的映射关系等),如图9所示。
需要说明的是,至少一个请求组即为至少一次请求,为了提高效率,客户端可采用多线程并发的方式向服务端进行请求,每个请求线程(即收件器,fetcher)负责与远程服务节点交互,即每个请求线程可通过远程过程调用客户端与远程服务节点交互;并且,最终结果将上报给收集器(result collector),且可由收集器负责去重排序,从而将访问结果整合成完成的时序数据集。
本发明实施例可在客户端接收到数据写入请求后,分别对各个聚合粒度下的P个写入时序指标数据进行分流处理,得到各个聚合粒度下的至少一个数据批,然后分别确定与每个数据批所属分区相匹配的指标时序存储设备,并将各个数据批添加至与所属分区相匹配的指标时序存储设备对应的批数据队列中,以便于客户端以数据批为单位将同一数据批中的时序数据发送至相应指标时序存储设备的同一分区中进行存储,从而提高写操作的效率;然后,可基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,从而不需要等待时序数据完全存储至相应指标时序存储设备的存储文件中,即可向业务调用方进行数据写入请求的完成响应,可提升用户体验。并且,当消费速度低于生产速度时,客户端可将未及时消费的时序数据映射至存储文件中,以实现高可用设计;基于此,即使服务器宕机,未及时消费的时序数据也不会丢失,从而保证了安全性;同时相对智能的失败重试机制也为时序数据最终一致性提供了保障,而且本发明的映射模式也有着不错的读写效率,从而可提高客户端的整体性能。
由上述描述可知,本发明实施例所提出的时序数据处理方法可运用在指标时序存储系统中,以通过指标时序存储系统中的客户端和服务端(包括指标时序存储设备集)实现写操作和读操作,结合图10a和图10b所示的流程图对上述所提及的时序数据处理方法的应用过程作进一步阐述。
一方面,如图10a所示,针对指标时序存储系统的写操作,客户端可接收数据写入请求(即写入请求,write request),并可对所需写入指示时序存储设备的时序数据累积到批量(accumulate metric to batch),从而得到至少一个数据批;针对任一数据批,客户端可为发送匹配服务节点(match server node for sending),即为发送匹配指标时序存储设备,以将任一数据批发送至所属分区所在的指标时序存储设备中;在此种情况下,客户端可与相应服务节点建立连接和发送(establish connection and sending);相应的,客户端可对发送结果(sending result)进行判断,若发送失败,则执行失败时重试(retry onfailure)操作,若发送成功(success),则指标时序存储设备可接收到上述任一数据批中的时序数据,此时该任一数据批中的时序数据即为指标时序存储设备接收到的写入时序指标数据。
基于此,指标时序存储设备可对任一数据批进行验证(verify),并对验证结果(verification result)进行判别,若验证成功,则可匹配分区(match partition),从而在匹配的分区中写入修改日志(write change log),并可在匹配的分区中申请实时数据分片(apply real-time segment);进一步的,若用于指示一个时序数据所对应指标的指标指示信息为指标度量代码,那么指标时序存储设备可为度量代码生成身份标识号,此时指标标识为相应的指标ID;然后,指标时序存储设备可基于任一数据批中各个时序数据对应指标的指标标识,将时序数据写入文件(write data for file),并可刷新数据索引(refreshdata index),也就是说,可对实时数据分片中的目录索引数据和位置索引数据进行刷新,从而完成(completed)对上述任一数据批中的时序数据的写操作。相应的,若验证失败(failure),则可直接完成写操作。其中,验证结果可以是产生时间验证结果,也可以是指标验证结果,本发明对此不作限定;例如,若验证结果为产生时间验证结果,那么当产生时间早于预设产生时间时,指标时序存储设备可通过验证结果判断验证失败(即未通过验证),当产生时间未早于预设产生时间时,指标时序存储设备可通过验证结果判断验证成功(即通过验证),此时指标时序存储设备可不存储产生时间早于预设产生时间的时序数据,而只存储产生时间未早于预设产生时间的时序数据,等等;可选的,预设产生时间可以根据经验设置的,也可以是按照实际需求设置的,本发明对此不作限定。
另一方面,如图10b所示,针对指标时序存储系统的读操作,客户端可接收数据读取请求,那么客户端可对请求数据进行解析请求(resolve request),即可按照分区进行整合分组,得到至少一个请求组;针对至少一个请求组中的任一请求组,客户端可为任一请求组的发送匹配服务节点(即指标时序存储设备),并与匹配的服务节点建立连接并发送上述任一请求组。
在此种情况下,相应指标时序存储设备可接收到上述任一请求组,并对其进行参数验证(verify parameters),得到验证结果;若验证成功,指标时序存储设备可为任一请求组匹配分区,并为任一请求组匹配数据分片,从而在匹配到的数据分片中迭代地读取任一请求组所需请求的时序数据,进而将读取到的时序数据返回至客户端,那么客户端可执行合并结果(results merge)操作,以完成读操作。
基于上述时序数据处理方法的相关实施例的描述,一方面,本申请实施例还提出了一种时序数据处理装置,该时序数据处理装置可以是运行于电子设备中的一个计算机程序(包括程序代码),且此处的电子设备是指:指标时序存储系统中的任一指标时序存储设备;如图11a所示,该时序数据处理装置可包括第一接收单元1101和第一处理单元1102。该时序数据处理装置可以执行图2或图4所示的时序数据处理方法,即该时序数据处理装置可以运行上述单元:
第一接收单元1101,用于接收客户端发送的M个写入时序指标数据,所述M个写入时序指标数据包括N个指标的时序数据,M和N均为正整数,且N小于或等于M;
第一处理单元1102,用于在所述至少一个分区包括的目标分区中,分别确定所述M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息;
所述第一处理单元1102,还用于分别将所述各个写入时序指标数据存储至所述目标存储文件中,并确定所述各个写入时序指标数据在所述目标存储文件中的位置信息;
所述第一处理单元1102,还用于将所述各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在所述目标存储文件中对所述任一写入时序指标数据进行查找。
在一种实施方式中,第一处理单元1102在分别确定所述M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据时,可具体用于:
获取在存储所述M个写入时序指标数据时所需查询的目录索引数据,所述目录索引数据包括:多个指标中各个指标的位置索引数据的索引存储信息,一个位置索引数据的索引存储信息用于指示:相应位置索引数据在位置索引文件中的位置信息;
针对所述M个写入时序指标数据中的第m个写入时序指标数据,基于所述目录索引数据,获取所述第m个写入时序指标数据对应指标的位置索引数据的索引存储信息,并采用获取到的索引存储信息,确定出所述第m个写入时序指标数据对应指标的位置索引数据,m∈[1,M]。
另一种实施方式中,目录索引数据还包括所述多个指标中各个指标的指标标识,且任一指标标识与所述任一指标标识所指示指标的位置索引数据的索引存储信息相匹配;第一处理单元1102在基于所述目录索引数据,获取所述第m个写入时序指标数据对应指标的位置索引数据的索引存储信息时,可具体用于:
在所述目录索引数据中查找所述第m个写入时序指标数据对应指标的目标指标标识;
若查找到所述目标指标标识,则将与所述目标指标标识匹配的索引存储信息,作为所述第m个写入时序指标数据对应指标的位置索引数据的索引存储信息;
若未查找到所述目标指标标识,则在所述位置索引文件中选取一个存储位置,并将选取出的存储位置的位置信息,作为所述第m个写入时序指标数据对应指标的位置索引数据的索引存储信息。
另一种实施方式中,任一位置索引数据的存储结构为链式存储结构,且所述任一位置索引数据的索引存储信息是指:所述任一位置索引数据中末端节点的位置信息;第一处理单元1102在将所述各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中时,可具体用于:
将所述第m个写入时序指标数据对应指标的位置索引数据的末端节点作为第一节点,若所述第一节点为空节点,则将所述第m个写入时序指标数据在所述目标存储文件中的位置信息,添加至所述第一节点中;
若所述第一节点不是空节点,则按序在所述第m个写入时序指标数据对应指标的位置索引数据中添加第二节点,以使所述第二节点作为所述第m个写入时序指标数据对应指标的位置索引数据的末端节点,且所述第二节点位于所述第一节点之后;将所述第m个写入时序指标数据在所述目标存储文件中的位置信息,以及所述第一节点的位置信息,添加至所述第二节点中;
第一处理单元1102,还可用于:
若所述目录索引数据未包括所述目标指标标识,则将所述第m个写入时序指标数据对应指标的位置索引数据的末端节点的位置信息,以及所述目标指标标识添加至所述目录索引数据中;
若所述目录索引数据包括所述目标指标标识,则采用所述第二节点的位置信息,对所述目标指标标识所匹配的索引存储信息进行更新。
另一种实施方式中,所述M个写入时序指标数据为目标实时数据分片中的时序数据,所述目标实时数据分片包括存储时间位于目标时间范围内的时序数据,第一处理单元1102,还可用于:
在检测到所述目标实时数据分片的创建时长大于预设时长时,获取包括所述目标实时数据分片的至少一个实时数据分片,所述目标实时数据分片的创建时长大于所述至少一个实时数据分片中的其他实时数据分片的创建时长,且任一实时数据分片的创建时长是指:所述任一实时数据分片的创建时间与当前系统时间之间的差值;
生成所述目标实时数据分片对应的目标历史数据分片,所述目标历史数据分片用于存储产生时间位于目标时间范围内的时序数据,一个指标包括至少一个维度,所述目标历史数据分片中同一指标且同一维度下的时序数据的存储位置相邻;
将所述至少一个实时数据分片中产生时间位于所述目标时间范围的时序数据,添加至所述目标历史数据分片中,以使所述目标实时数据分片转化为所述目标历史数据分片。
另一种实施方式中,所述至少一个实时数据分片中产生时间位于所述目标时间范围的时序数据包括:Q个指标中各个指标对应的至少一个维度下的一个或多个时序数据,一个指标在一个维度下对应至少一个时间窗口,所述至少一个时间窗口构成所述目标时间范围,Q为正整数;第一处理单元1102在将所述至少一个实时数据分片中产生时间位于所述目标时间范围的时序数据,添加至所述目标历史数据分片中时,可具体用于:
针对所述Q个指标中第q个指标在第i个维度下对应的第j个时间窗口,从所述至少一个实时数据分片中,选取出所述第q个指标在所述第i个维度下的至少一个目标时序数据,任一目标时序数据的产生时间位于所述第j时间窗口内;其中,q∈[1,Q],i∈[1,I],j∈[1,J],且I为所述第q个指标对应维度的数量,J为所述第q个指标在所述第i个维度下的时间窗口的数量;
将所述至少一个目标时序数据,存储至所述第j个时间窗口对应的存储区域,以使所述至少一个目标时序数据被添加至所述第j个时间窗口内。
另一种实施方式中,所述指标时序存储设备中的任一分区包括F个历史数据分片,F为非负整数;一个历史数据分片包括一个历史索引数据,且一个历史索引数据包括:相应历史数据分片中存储的时序数据所对应指标的指标标识,以及与每个指标标识匹配的指标位置信息;第一接收单元1101,还可用于:
接收所述客户端发送的读取请求信息,所述读取请求信息包括待读取指标列表,以及所述待读取指标列表中各个待读取指标的读取时间,所述各个待读取指标的时序数据位于所述指标时序存储设备中的读取分区中;
第一处理单元1102,还可用于:
在所述读取分区中,查找与所述读取时间匹配的匹配历史数据分片,所述匹配历史数据分片对应的时间范围与所述读取时间之间存在重叠关系;
针对所述待读取指标列表中的任一待读取指标,若查找到所述匹配历史数据分片,且所述匹配历史数据分片中的历史索引数据包括所述任一待读取指标的指标标识,则基于与所述任一待读取指标的指标标识匹配的指标位置信息,从所述匹配历史数据分片中选取出所述任一待读取指标的至少一个时序数据;
上述时序数据处理装置还可包括第一发送单元1103,第一发送单元1103可用于:
将选取出的时序数据发送至所述客户端。
另一种实施方式中,所述指标时序存储设备中的任一分区还包括至少一个实时数据分片,一个实时数据分片包括一个目录索引数据和至少一个位置索引数据;第一处理单元1102,还可用于:
在所述读取分区中,查找与所述任一待读取指标的指标标识相匹配的G个匹配实时数据分片,匹配实时数据分片是指:目录索引数据包括所述任一待读取指标的指标标识的实时数据分片,G为非负整数;
若G为正整数,针对所述G个匹配实时数据分片中的任一匹配实时数据分片,基于所述任一匹配实时数据分片中的目录索引数据,确定出所述任一待读取指标的位置索引数据;
采用所述任一待读取指标的位置索引数据,在所述任一匹配实时数据分片中,按序读取出所述任一待读取指标的至少一个时序数据,读取出的时序数据的产生时间位于所述读取时间内;
第一发送单元1103,还可用于:
将所述读取出的时序数据发送至所述客户端。
另一种实施方式中,第一处理单元1102在分别将所述各个写入时序指标数据存储至所述目标存储文件中时,可具体用于:
在内存空间中申请目标内存映射区域,一个内存映射区域对应一个存储文件,且所述目标内存映射区域对应的存储文件为所述目标存储文件;
针对所述任一写入时序指标数据,基于所述目标内存映射区域,对所述任一写入时序指标数据进行映射处理,以使所述任一写入时序指标数据被存储至所述目标存储文件中。
另一方面,本申请实施例还提出了另一种时序数据处理装置,该时序数据处理装置可以是运行于电子设备中的一个计算机程序(包括程序代码),且此处的电子设备是指:指标时序存储系统中的任一客户端;如图11b所示,该时序数据处理装置可包括第二处理单元1104和第二发送单元1105。该时序数据处理装置可以执行图7所示的时序数据处理方法,即该时序数据处理装置可以运行上述单元:
第二处理单元1104,用于在接收到数据写入请求后,分别对各个聚合粒度下的P个写入时序指标数据进行分流处理,得到所述各个聚合粒度下的至少一个数据批,同一数据批中的写入时序指标数据所属分区相同,P为正整数;其中,所述数据写入请求携带有L个写入时序指标数据,L为正整数,且P小于或等于L;
所述第二处理单元1104,还用于从指标时序存储设备集中,分别确定与所述各个聚合粒度下的每个数据批所属的分区相匹配的指标时序存储设备;
所述第二处理单元1104,还用于分别将所述各个聚合粒度下的每个数据批,添加至与所属分区相匹配的指标时序存储设备对应的批数据队列中;
第二发送单元1105,用于基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,以使相应指标时序存储设备将接收到的数据批存储在所属分区中。
在一种实施方式中,所述客户端包括至少一个指标时序存储设备中各个指标时序存储设备对应的批数据队列;第二处理单元1104,还可用于:
针对所述至少一个指标时序存储设备中的任一指标时序存储设备,若所述任一指标时序存储设备对应的批数据队列的消费速度小于生产速度,则通过内存映射的方式,将所述任一指标时序存储设备对应批数据队列中的数据批,映射至所述客户端的存储文件中;
其中,一个批数据队列的消费速度是指将数据批发送至相应指标时序存储设备的速度,且一个批数据队列的生产速度是指在批数据队列中添加数据批的速度。
另一种实施方式中,第二处理单元1104,还可用于:
获取预设过期时长,并确定所述存储文件包括的至少一个数据批中各个数据批的存储时长,一个数据批在所述存储文件中的存储时长是指:相应数据批存储至所述存储文件中的存储时间,与当前系统时间之间的差值;
在检测到存储时长大于所述预设过期时长的数据批时,对检测到的数据批进行自动清理,以在所述存储文件中删除所述检测到的数据批。
另一种实施方式中,第二处理单元1104,还可用于:
在接收到数据读取请求时,按照所需请求的分区对所述数据读取请求携带的请求数据进行整合分组,得到至少一个请求组,所述请求数据包括:待读取指标列表和所述待读取指标列表中各个待读取指标的读取时间,一个请求组包括:目标分区的分区标识、在所述目标分区中所需请求的指标列表和相应指标的读取时间,以及所述目标分区对应的设备列表,所述设备列表包括一个或多个指标时序存储设备中每个指标时序存储设备的设备标识;
分别基于所述至少一个请求组中的各个请求组,向所述指标时序存储设备集包括的相应分区中获取数据,以获取到所述各个请求组所需请求的时序数据。
根据本发明的一个实施例,图2或图4所示的方法所涉及的各个步骤均可由图11a所示的时序数据处理装置中的各个单元来执行的。例如,图2中所示的步骤S201可由图11a中所示的第一接收单元1101执行,步骤S202-S204均可由图11a中所示的第一处理单元1102执行。又如,图4中所示的步骤S401可由图11a中所示的第一接收单元1101执行,步骤S402-S407均可由图11a中所示的第一处理单元1102执行,等等。
根据本发明的另一个实施例,图7所示的方法所涉及的各个步骤均可由图11b所示的时序数据处理装置中的各个单元来执行的。例如图7中所示的步骤S701和S702均可由图11b中所示的第二处理单元1104执行,步骤S703可由图11b中所示的第二处理单元1104和第二发送单元1105共同执行,等等。
根据本发明的另一个实施例,图11a和图11b所示的时序数据处理装置中的各个单元均可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,任一时序数据处理装置也可以包括其他单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本发明的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用电子设备上运行能够执行如图2或图4中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图11a中所示的时序数据处理装置,以及来实现本发明实施例的时序数据处理方法;并可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用电子设备上运行能够执行如图7中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图11b中所示的时序数据处理装置,以及来实现本申请实施例的时序数据处理方法。所述计算机程序可以记载于例如计算机存储介质上,并通过计算机存储介质装载于上述电子设备中,并在其中运行。
本发明实施例在客户端接收到数据写入请求后,客户端可分别对各个聚合粒度下的写入时序指标数据进行分流处理,得到各个聚合粒度下的至少一个数据批,以按照分区将同一聚合粒度下的写入时序指标数据聚合至一个数据批中,从而便于后续客户端以数据批为单位,并准确地将各个数据批发送至相应指标时序存储设备中;基于此,客户端可分别将各个数据批,添加至与所属分区匹配的指标时序存储设备对应的批数据队列中,并基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,从而使得业务方生产的时序数据需进入相应指标时序存储设备进行存储时,不需要等待其完全写入文件系统,进而可避免造成阻塞。那么相应的,相应指标时序存储设备在接收到客户端发送的至少一个写入时序指标数据(即一个数据批)后,指标时序存储设备可在目标分区中,分别确定接收到的各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息,以便于指标时序存储设备可基于位置索引数据中存储的位置信息,精确地定位某一指标在目标存储文件中存储的时序数据;进一步的,指标时序存储设备可分别将各个写入时序指标数据存储至目标存储文件中,并将各个写入时序指标数据在目标存储文件中的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在目标存储文件中对该任一写入时序指标数据进行查找。可见,本发明实施例在需读取目标指标在某段时间范围内的时序数据时,可通过目标指标的位置索引数据精确地确定相应时序数据的位置信息,从而精确地获取到目标指标在某段时间范围内的时序数据,可提升查找相应时序数据的速度。
基于上述方法实施例以及装置实施例的描述,本发明示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本发明实施例的方法。
本发明示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
本发明示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本发明实施例的方法。
参考图12,现将描述可以作为本发明的服务器或客户端的电子设备1200的结构框图,其是可以应用于本发明的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图12所示,电子设备1200包括计算单元1201,其可以根据存储在只读存储器(ROM)1202中的计算机程序或者从存储单元1208加载到随机访问存储器(RAM)1203中的计算机程序,来执行各种适当的动作和处理。在RAM 1203中,还可存储设备1200操作所需的各种程序和数据。计算单元1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
电子设备1200中的多个部件连接至I/O接口1205,包括:输入单元1206、输出单元1207、存储单元1208以及通信单元1209。输入单元1206可以是能向电子设备1200输入信息的任何类型的设备,输入单元1206可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元1207可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1208可以包括但不限于磁盘、光盘。通信单元1209允许电子设备1200通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元1201可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1201的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1201执行上文所描述的各个方法和处理。例如,在一些实施例中,时序数据处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1208。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1202和/或通信单元1209而被载入和/或安装到电子设备1200上。在一些实施例中,计算单元1201可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行时序数据处理方法。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本发明使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
并且,应理解的是,以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (17)
1.一种时序数据处理方法,其特征在于,所述方法应用于指标时序存储设备,所述指标时序存储设备包括至少一个分区,所述方法包括:
接收客户端发送的M个写入时序指标数据,所述M个写入时序指标数据包括N个指标的时序数据,M和N均为正整数,且N小于或等于M;
在所述至少一个分区包括的目标分区中,分别确定所述M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息;
分别将所述各个写入时序指标数据存储至所述目标存储文件中,并确定所述各个写入时序指标数据在所述目标存储文件中的位置信息;
将所述各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在所述目标存储文件中对所述任一写入时序指标数据进行查找。
2.根据权利要求1所述的方法,其特征在于,所述分别确定所述M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,包括:
获取在存储所述M个写入时序指标数据时所需查询的目录索引数据,所述目录索引数据包括:多个指标中各个指标的位置索引数据的索引存储信息,一个位置索引数据的索引存储信息用于指示:相应位置索引数据在位置索引文件中的位置信息;
针对所述M个写入时序指标数据中的第m个写入时序指标数据,基于所述目录索引数据,获取所述第m个写入时序指标数据对应指标的位置索引数据的索引存储信息,并采用获取到的索引存储信息,确定出所述第m个写入时序指标数据对应指标的位置索引数据,m∈[1,M]。
3.根据权利要求2所述的方法,其特征在于,所述目录索引数据还包括所述多个指标中各个指标的指标标识,且任一指标标识与所述任一指标标识所指示指标的位置索引数据的索引存储信息相匹配;所述基于所述目录索引数据,获取所述第m个写入时序指标数据对应指标的位置索引数据的索引存储信息,包括:
在所述目录索引数据中查找所述第m个写入时序指标数据对应指标的目标指标标识;
若查找到所述目标指标标识,则将与所述目标指标标识匹配的索引存储信息,作为所述第m个写入时序指标数据对应指标的位置索引数据的索引存储信息;
若未查找到所述目标指标标识,则在所述位置索引文件中选取一个存储位置,并将选取出的存储位置的位置信息,作为所述第m个写入时序指标数据对应指标的位置索引数据的索引存储信息。
4.根据权利要求2所述的方法,其特征在于,任一位置索引数据的存储结构为链式存储结构,且所述任一位置索引数据的索引存储信息是指:所述任一位置索引数据中末端节点的位置信息;所述将所述各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,包括:
将所述第m个写入时序指标数据对应指标的位置索引数据的末端节点作为第一节点,若所述第一节点为空节点,则将所述第m个写入时序指标数据在所述目标存储文件中的位置信息,添加至所述第一节点中;
若所述第一节点不是空节点,则按序在所述第m个写入时序指标数据对应指标的位置索引数据中添加第二节点,以使所述第二节点作为所述第m个写入时序指标数据对应指标的位置索引数据的末端节点,且所述第二节点位于所述第一节点之后;将所述第m个写入时序指标数据在所述目标存储文件中的位置信息,以及所述第一节点的位置信息,添加至所述第二节点中;
所述方法还包括:
若所述目录索引数据未包括所述目标指标标识,则将所述第m个写入时序指标数据对应指标的位置索引数据的末端节点的位置信息,以及所述目标指标标识添加至所述目录索引数据中;
若所述目录索引数据包括所述目标指标标识,则采用所述第二节点的位置信息,对所述目标指标标识所匹配的索引存储信息进行更新。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述M个写入时序指标数据为目标实时数据分片中的时序数据,所述目标实时数据分片包括存储时间位于目标时间范围内的时序数据,所述方法还包括:
在检测到所述目标实时数据分片的创建时长大于预设时长时,获取包括所述目标实时数据分片的至少一个实时数据分片,所述目标实时数据分片的创建时长大于所述至少一个实时数据分片中的其他实时数据分片的创建时长,且任一实时数据分片的创建时长是指:所述任一实时数据分片的创建时间与当前系统时间之间的差值;
生成所述目标实时数据分片对应的目标历史数据分片,所述目标历史数据分片用于存储产生时间位于目标时间范围内的时序数据,一个指标包括至少一个维度,所述目标历史数据分片中同一指标且同一维度下的时序数据的存储位置相邻;
将所述至少一个实时数据分片中产生时间位于所述目标时间范围的时序数据,添加至所述目标历史数据分片中,以使所述目标实时数据分片转化为所述目标历史数据分片。
6.根据权利要求5所述的方法,其特征在于,所述至少一个实时数据分片中产生时间位于所述目标时间范围的时序数据包括:Q个指标中各个指标对应的至少一个维度下的一个或多个时序数据,一个指标在一个维度下对应至少一个时间窗口,所述至少一个时间窗口构成所述目标时间范围,Q为正整数;所述将所述至少一个实时数据分片中产生时间位于所述目标时间范围的时序数据,添加至所述目标历史数据分片中,包括:
针对所述Q个指标中第q个指标在第i个维度下对应的第j个时间窗口,从所述至少一个实时数据分片中,选取出所述第q个指标在所述第i个维度下的至少一个目标时序数据,任一目标时序数据的产生时间位于所述第j时间窗口内;其中,q∈[1,Q],i∈[1,I],j∈[1,J],且I为所述第q个指标对应维度的数量,J为所述第q个指标在所述第i个维度下的时间窗口的数量;
将所述至少一个目标时序数据,存储至所述第j个时间窗口对应的存储区域,以使所述至少一个目标时序数据被添加至所述第j个时间窗口内。
7.根据权利要求1-4任一项所述的方法,其特征在于,所述指标时序存储设备中的任一分区包括F个历史数据分片,F为非负整数;一个历史数据分片包括一个历史索引数据,且一个历史索引数据包括:相应历史数据分片中存储的时序数据所对应指标的指标标识,以及与每个指标标识匹配的指标位置信息;所述方法还包括:
接收所述客户端发送的读取请求信息,所述读取请求信息包括待读取指标列表,以及所述待读取指标列表中各个待读取指标的读取时间,所述各个待读取指标的时序数据位于所述指标时序存储设备中的读取分区中;
在所述读取分区中,查找与所述读取时间匹配的匹配历史数据分片,所述匹配历史数据分片对应的时间范围与所述读取时间之间存在重叠关系;
针对所述待读取指标列表中的任一待读取指标,若查找到所述匹配历史数据分片,且所述匹配历史数据分片中的历史索引数据包括所述任一待读取指标的指标标识,则基于与所述任一待读取指标的指标标识匹配的指标位置信息,从所述匹配历史数据分片中选取出所述任一待读取指标的至少一个时序数据;
将选取出的时序数据发送至所述客户端。
8.根据权利要求7所述的方法,其特征在于,所述指标时序存储设备中的任一分区还包括至少一个实时数据分片,一个实时数据分片包括一个目录索引数据和至少一个位置索引数据;所述方法还包括:
在所述读取分区中,查找与所述任一待读取指标的指标标识相匹配的G个匹配实时数据分片,匹配实时数据分片是指:目录索引数据包括所述任一待读取指标的指标标识的实时数据分片,G为非负整数;
若G为正整数,针对所述G个匹配实时数据分片中的任一匹配实时数据分片,基于所述任一匹配实时数据分片中的目录索引数据,确定出所述任一待读取指标的位置索引数据;
采用所述任一待读取指标的位置索引数据,在所述任一匹配实时数据分片中,按序读取出所述任一待读取指标的至少一个时序数据,读取出的时序数据的产生时间位于所述读取时间内;
将所述读取出的时序数据发送至所述客户端。
9.根据权利要求1-4任一项所述的方法,其特征在于,所述分别将所述各个写入时序指标数据存储至所述目标存储文件中,包括:
在内存空间中申请目标内存映射区域,一个内存映射区域对应一个存储文件,且所述目标内存映射区域对应的存储文件为所述目标存储文件;
针对所述任一写入时序指标数据,基于所述目标内存映射区域,对所述任一写入时序指标数据进行映射处理,以使所述任一写入时序指标数据被存储至所述目标存储文件中。
10.一种时序数据处理方法,其特征在于,所述方法应用于客户端,所述方法包括:
在接收到数据写入请求后,分别对各个聚合粒度下的P个写入时序指标数据进行分流处理,得到所述各个聚合粒度下的至少一个数据批,同一数据批中的写入时序指标数据所属分区相同,P为正整数;其中,所述数据写入请求携带有L个写入时序指标数据,L为正整数,且P小于或等于L;
从指标时序存储设备集中,分别确定与所述各个聚合粒度下的每个数据批所属的分区相匹配的指标时序存储设备;
分别将所述各个聚合粒度下的每个数据批,添加至与所属分区相匹配的指标时序存储设备对应的批数据队列中,并基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,以使相应指标时序存储设备将接收到的数据批存储在所属分区中。
11.根据权利要求10所述的方法,其特征在于,所述客户端包括至少一个指标时序存储设备中各个指标时序存储设备对应的批数据队列;所述方法还包括:
针对所述至少一个指标时序存储设备中的任一指标时序存储设备,若所述任一指标时序存储设备对应的批数据队列的消费速度小于生产速度,则通过内存映射的方式,将所述任一指标时序存储设备对应批数据队列中的数据批,映射至所述客户端的存储文件中;
其中,一个批数据队列的消费速度是指将数据批发送至相应指标时序存储设备的速度,且一个批数据队列的生产速度是指在批数据队列中添加数据批的速度。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
获取预设过期时长,并确定所述存储文件包括的至少一个数据批中各个数据批的存储时长,一个数据批在所述存储文件中的存储时长是指:相应数据批存储至所述存储文件中的存储时间,与当前系统时间之间的差值;
在检测到存储时长大于所述预设过期时长的数据批时,对检测到的数据批进行自动清理,以在所述存储文件中删除所述检测到的数据批。
13.根据权利要求10-12任一项所述的方法,其特征在于,所述方法还包括:
在接收到数据读取请求时,按照所需请求的分区对所述数据读取请求携带的请求数据进行整合分组,得到至少一个请求组,所述请求数据包括:待读取指标列表和所述待读取指标列表中各个待读取指标的读取时间,一个请求组包括:目标分区的分区标识、在所述目标分区中所需请求的指标列表和相应指标的读取时间,以及所述目标分区对应的设备列表,所述设备列表包括一个或多个指标时序存储设备中每个指标时序存储设备的设备标识;
分别基于所述至少一个请求组中的各个请求组,向所述指标时序存储设备集包括的相应分区中获取数据,以获取到所述各个请求组所需请求的时序数据。
14.一种时序数据处理装置,其特征在于,所述装置运行于指标时序存储设备上,所述指标时序存储设备包括至少一个分区,所述装置包括:
第一接收单元,用于接收客户端发送的M个写入时序指标数据,所述M个写入时序指标数据包括N个指标的时序数据,M和N均为正整数,且N小于或等于M;
第一处理单元,用于在所述至少一个分区包括的目标分区中,分别确定所述M个写入时序指标数据中各个写入时序指标数据对应指标的位置索引数据,一个位置索引数据用于:存储相应指标的至少一个时序数据中各个时序数据,在目标存储文件中的位置信息;
所述第一处理单元,还用于分别将所述各个写入时序指标数据存储至所述目标存储文件中,并确定所述各个写入时序指标数据在所述目标存储文件中的位置信息;
所述第一处理单元,还用于将所述各个写入时序指标数据的位置信息添加至相应指标的位置索引数据中,以基于任一写入时序指标数据在相应指标的位置索引数据中存储的位置信息,在所述目标存储文件中对所述任一写入时序指标数据进行查找。
15.一种时序数据处理装置,其特征在于,所述装置运行于客户端上,所述装置包括:
第二处理单元,用于在接收到数据写入请求后,分别对各个聚合粒度下的P个写入时序指标数据进行分流处理,得到所述各个聚合粒度下的至少一个数据批,同一数据批中的写入时序指标数据所属分区相同,P为正整数;其中,所述数据写入请求携带有L个写入时序指标数据,L为正整数,且P小于或等于L;
所述第二处理单元,还用于从指标时序存储设备集中,分别确定与所述各个聚合粒度下的每个数据批所属的分区相匹配的指标时序存储设备;
所述第二处理单元,还用于分别将所述各个聚合粒度下的每个数据批,添加至与所属分区相匹配的指标时序存储设备对应的批数据队列中
第二发送单元,用于基于各个批数据队列将数据批异步发送至相应的指标时序存储设备中,以使相应指标时序存储设备将接收到的数据批存储在所属分区中。
16.一种电子设备,其特征在于,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-9中任一项所述的方法;或者,所述指令在由所述处理器执行时使所述处理器执行权利要求10-13中任一项所述的方法。
17.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-9中任一项所述的方法;或者,所述计算机指令用于使计算机执行根据权利要求10-13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310400134.1A CN116304390B (zh) | 2023-04-13 | 2023-04-13 | 时序数据处理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310400134.1A CN116304390B (zh) | 2023-04-13 | 2023-04-13 | 时序数据处理方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116304390A true CN116304390A (zh) | 2023-06-23 |
CN116304390B CN116304390B (zh) | 2024-02-13 |
Family
ID=86830722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310400134.1A Active CN116304390B (zh) | 2023-04-13 | 2023-04-13 | 时序数据处理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116304390B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932470A (zh) * | 2023-09-18 | 2023-10-24 | 江苏正泰泰杰赛智能科技有限公司 | 一种可计算存储物联网时序数据的方法、系统及存储介质 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701467A (en) * | 1993-07-07 | 1997-12-23 | European Computer-Industry Research Centre Gmbh | Computer data storage management system and methods of indexing a dataspace and searching a computer memory |
US20090144279A1 (en) * | 2007-12-03 | 2009-06-04 | Fast Search & Transfer Asa | Method for improving search efficiency in enterprise search system |
CN102779180A (zh) * | 2012-06-29 | 2012-11-14 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
US9223843B1 (en) * | 2013-12-02 | 2015-12-29 | Amazon Technologies, Inc. | Optimized log storage for asynchronous log updates |
CN106557272A (zh) * | 2015-09-30 | 2017-04-05 | 中国科学院软件研究所 | 一种高效的传感器历史数据归档方法 |
CN107766445A (zh) * | 2017-09-23 | 2018-03-06 | 湖南胜云光电科技有限公司 | 一种支持多维度检索的高效快速数据检索方法 |
CN108256088A (zh) * | 2018-01-23 | 2018-07-06 | 清华大学 | 一种基于键值数据库的时序数据的存储方法及系统 |
CN110837502A (zh) * | 2019-10-18 | 2020-02-25 | 支付宝(杭州)信息技术有限公司 | 一种块链式账本中的数据存储方法、装置及设备 |
CN111886591A (zh) * | 2019-09-12 | 2020-11-03 | 创新先进技术有限公司 | 日志结构存储系统 |
CN112269789A (zh) * | 2020-11-16 | 2021-01-26 | 北京百度网讯科技有限公司 | 存储数据的方法和装置、以及读取数据的方法和装置 |
CN112286867A (zh) * | 2020-10-27 | 2021-01-29 | 山东鼎滏软件科技有限公司 | 油气田时序数据存储方法、查询方法及其装置、存储介质 |
CN112463803A (zh) * | 2021-02-01 | 2021-03-09 | 山东柏源技术有限公司 | 用于石油生产的时序数据存储方法、装置及设备 |
CN113297135A (zh) * | 2021-02-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法以及装置 |
CN113297269A (zh) * | 2021-02-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN113505012A (zh) * | 2021-09-13 | 2021-10-15 | 北京宇信科技集团股份有限公司 | 一种消息队列的处理方法、介质、设备和系统 |
CN113535720A (zh) * | 2019-07-29 | 2021-10-22 | 创新先进技术有限公司 | 一种块链式账本中的索引创建方法、装置及设备 |
CN113760847A (zh) * | 2021-01-28 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 日志数据处理方法、装置、设备及存储介质 |
CN113868267A (zh) * | 2020-06-30 | 2021-12-31 | 华为技术有限公司 | 注入时序数据的方法、查询时序数据的方法及数据库系统 |
CN114519055A (zh) * | 2022-01-28 | 2022-05-20 | 阿里云计算有限公司 | 数据存储方法及设备 |
CN115658680A (zh) * | 2022-09-14 | 2023-01-31 | 网易(杭州)网络有限公司 | 数据存储方法、数据查询方法和相关装置 |
-
2023
- 2023-04-13 CN CN202310400134.1A patent/CN116304390B/zh active Active
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5701467A (en) * | 1993-07-07 | 1997-12-23 | European Computer-Industry Research Centre Gmbh | Computer data storage management system and methods of indexing a dataspace and searching a computer memory |
US20090144279A1 (en) * | 2007-12-03 | 2009-06-04 | Fast Search & Transfer Asa | Method for improving search efficiency in enterprise search system |
CN102779180A (zh) * | 2012-06-29 | 2012-11-14 | 华为技术有限公司 | 数据存储系统的操作处理方法,数据存储系统 |
US9223843B1 (en) * | 2013-12-02 | 2015-12-29 | Amazon Technologies, Inc. | Optimized log storage for asynchronous log updates |
CN106557272A (zh) * | 2015-09-30 | 2017-04-05 | 中国科学院软件研究所 | 一种高效的传感器历史数据归档方法 |
CN107766445A (zh) * | 2017-09-23 | 2018-03-06 | 湖南胜云光电科技有限公司 | 一种支持多维度检索的高效快速数据检索方法 |
CN108256088A (zh) * | 2018-01-23 | 2018-07-06 | 清华大学 | 一种基于键值数据库的时序数据的存储方法及系统 |
CN113535720A (zh) * | 2019-07-29 | 2021-10-22 | 创新先进技术有限公司 | 一种块链式账本中的索引创建方法、装置及设备 |
CN111886591A (zh) * | 2019-09-12 | 2020-11-03 | 创新先进技术有限公司 | 日志结构存储系统 |
CN110837502A (zh) * | 2019-10-18 | 2020-02-25 | 支付宝(杭州)信息技术有限公司 | 一种块链式账本中的数据存储方法、装置及设备 |
CN113868267A (zh) * | 2020-06-30 | 2021-12-31 | 华为技术有限公司 | 注入时序数据的方法、查询时序数据的方法及数据库系统 |
CN112286867A (zh) * | 2020-10-27 | 2021-01-29 | 山东鼎滏软件科技有限公司 | 油气田时序数据存储方法、查询方法及其装置、存储介质 |
CN112269789A (zh) * | 2020-11-16 | 2021-01-26 | 北京百度网讯科技有限公司 | 存储数据的方法和装置、以及读取数据的方法和装置 |
CN113760847A (zh) * | 2021-01-28 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 日志数据处理方法、装置、设备及存储介质 |
CN112463803A (zh) * | 2021-02-01 | 2021-03-09 | 山东柏源技术有限公司 | 用于石油生产的时序数据存储方法、装置及设备 |
CN113297135A (zh) * | 2021-02-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法以及装置 |
CN113297269A (zh) * | 2021-02-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN113505012A (zh) * | 2021-09-13 | 2021-10-15 | 北京宇信科技集团股份有限公司 | 一种消息队列的处理方法、介质、设备和系统 |
CN114519055A (zh) * | 2022-01-28 | 2022-05-20 | 阿里云计算有限公司 | 数据存储方法及设备 |
CN115658680A (zh) * | 2022-09-14 | 2023-01-31 | 网易(杭州)网络有限公司 | 数据存储方法、数据查询方法和相关装置 |
Non-Patent Citations (3)
Title |
---|
THIAGO LUÍS LOPES SIQUEIRA 等: "The SB-index and the HSB-index: efficient indices for spatial data warehouses", 《GEOIFORMATICA》, vol. 16, no. 1, pages 165 - 205, XP035001351, DOI: 10.1007/s10707-011-0128-5 * |
余灵光: "面向数据流的通用实时监控平台的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 02, pages 138 - 411 * |
周勇: "基于并行计算的数据流处理方法研究", 《中国博士学位论文全文数据库 信息科技辑》, no. 05, pages 138 - 29 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932470A (zh) * | 2023-09-18 | 2023-10-24 | 江苏正泰泰杰赛智能科技有限公司 | 一种可计算存储物联网时序数据的方法、系统及存储介质 |
CN116932470B (zh) * | 2023-09-18 | 2024-01-05 | 江苏正泰泰杰赛智能科技有限公司 | 一种可计算存储物联网时序数据的方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116304390B (zh) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11281644B2 (en) | Blockchain logging of data from multiple systems | |
US10338958B1 (en) | Stream adapter for batch-oriented processing frameworks | |
CN108664496B (zh) | 数据迁移方法及装置 | |
US10715460B2 (en) | Opportunistic resource migration to optimize resource placement | |
US9639589B1 (en) | Chained replication techniques for large-scale data streams | |
US9471585B1 (en) | Decentralized de-duplication techniques for largescale data streams | |
US9917884B2 (en) | File transmission method, apparatus, and distributed cluster file system | |
CN111782134B (zh) | 数据处理方法、装置、系统和计算机可读存储介质 | |
CN104166589A (zh) | 一种心跳包的处理方法和装置 | |
CN106130960B (zh) | 盗号行为的判断系统、负载调度方法和装置 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN110309108A (zh) | 数据采集及储存方法、装置、电子设备、存储介质 | |
CN113760513B (zh) | 一种分布式任务调度方法、装置、设备和介质 | |
CN116304390B (zh) | 时序数据处理方法、装置、存储介质及电子设备 | |
WO2024051454A1 (zh) | 处理事务日志的方法及装置 | |
US20240129251A1 (en) | Data processing method and apparatus, computer device, and readable storage medium | |
CN112685499A (zh) | 一种工作业务流的流程数据同步方法、装置及设备 | |
EP3349416B1 (en) | Relationship chain processing method and system, and storage medium | |
CN115221116A (zh) | 一种数据写入方法、装置、设备及可读存储介质 | |
CN113986505A (zh) | 一种任务调度方法、系统及存储介质和终端设备 | |
CN114553959A (zh) | 基于态势感知的云原生服务网格配置按需下发方法及应用 | |
CN114070889A (zh) | 配置方法、流量转发方法、设备、存储介质及程序产品 | |
CN110677497A (zh) | 一种网络介质分发方法及装置 | |
Shen | Distributed storage system model design in internet of things based on hash distribution | |
CN116301663B (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 |