CN116561120A - 一种用于时序数据库的数据文件快速合并方法及系统 - Google Patents
一种用于时序数据库的数据文件快速合并方法及系统 Download PDFInfo
- Publication number
- CN116561120A CN116561120A CN202310443507.3A CN202310443507A CN116561120A CN 116561120 A CN116561120 A CN 116561120A CN 202310443507 A CN202310443507 A CN 202310443507A CN 116561120 A CN116561120 A CN 116561120A
- Authority
- CN
- China
- Prior art keywords
- data
- merging
- points
- files
- data points
- 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
- 238000000034 method Methods 0.000 title claims abstract description 73
- 238000013500 data storage Methods 0.000 claims abstract description 42
- 230000008569 process Effects 0.000 claims abstract description 20
- 230000006837 decompression Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 10
- 230000006835 compression Effects 0.000 description 10
- 238000007906 compression Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001680 brushing effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- 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/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- 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
Abstract
本发明提供一种用于时序数据库的数据文件快速合并方法及系统,包括:从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,解决现有时序数据库文件合并速率低、资源占用多的问题。
Description
技术领域
本发明涉及计算机数据管理技术领域,尤其涉及一种用于时序数据库的数据文件快速合并方法及系统。
背景技术
在典型的工业物联网场景中,数据具有设备多、产生频率高和数据量庞大等特点,要求时序数据库可以支持高吞吐写入。为了实现这一点,多数的时序数据库采用了LSM架构,基于磁盘的顺序写性能元高于随机写,将数据写入到内存中,待满足一定条件后就触发刷盘机制,将数据追加写到磁盘文件上。尽管LSM架构大大提高了写入性能,但是其设计是基于大部分的时序数据都是按照时间戳有序到达,少部分数据是乱序到达。所谓的乱序数据,即时间戳小于等于最大落盘时间戳的数据。乱序数据的产生会对系统带来一些负面影响,如导致用户的查询响应速度降低,因为需要更多的磁盘读操作和内存中的数据去重等整理工作。为了防止乱序数据过多造成系统查询性能的下降,LSM核心是通过多次合并,将乱序数据合到顺序文件以及将多个小文件合成大文件,以此来减少磁盘对文件的读次数,进而提高查询性能。尽管合并可以减少乱序数据和小文件的数量,但若资源分配或者执行策略的管理不当,合并线程会占用系统内存、IO等资源,造成用户写入性能降低,其开销以及对系统带来的负面影响将是巨大的。
现有大部分的时序数据文件里都是由一个或多个数据块(Block)组成,而每个数据块里又包含一个或多个数据页(Page),还会存放索引(Index)用于索引到具体某条时间序列的数据块。Prometheus、InfluxDB等较为成熟的时序数据库中在对文件进行合并的过程中,都是一次将大量的数据块读进内存并进行简单地去重和重写,对于实际上没有重叠的数据点进行解压、解码、编码和压缩,会造成系统内存占用高、CPU负载高和合并速率慢等问题,造成用户写入和查询性能低,且在海量设备、传感器下会造成系统OOM(Out OfMemory)的问题。因此,寻找一种用于时序数据库的数据文件快速合并方法,以实现在快速合并数据的同时,尽可能地减少对系统资源(CPU、内存和IO)的占用尤为关键。
发明内容
本发明提供一种用于时序数据库的数据文件快速合并方法及系统,用以解决现有时序数据库文件合并速率低、资源占用多的问题。
本发明提供一种用于时序数据库的数据文件快速合并方法,包括:
从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;
基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;
所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并。
根据本发明提供的一种用于时序数据库的数据文件快速合并方法,所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,包括:
进行合并文件,在初始文件列表不为空的情况下,取出第一个文件,并查找与其有重叠的其它文件,记为重叠文件列表;
依次读取所述重叠文件列表中文件的数据快索引,在数据库被删除的情况下,则进行丢弃操作,否则放入数据块索引的优先级队列。
根据本发明提供的一种用于时序数据库的数据文件快速合并方法,所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,还包括:
进行合并数据块,在所述数据块索引的优先级队列不为空的情况下,取出第一个数据块索引,并判断是否有其它数据块重叠已经是否存在数据被修改;
在没有数据块重叠且不存在数据被修改的情况下,根据数据块索引从初始文件中读取数据块,直接写至输出的目标文件中;
在存在数据块重叠且存在数据被修改的情况下,根据数据块索引从初始文件中读取数据块,并拆分为数据页,若数据页被删除则丢弃,否则,将所述数据页存放至数据页的优先级队列。
根据本发明提供的一种用于时序数据库的数据文件快速合并方法,所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,还包括:
进行合并数据页,在数据页的优先级队列不为空的情况下,取出第一个数据页,并判断是否有其它数据页重叠且是否存在数据被修改;
在没有重叠且不存在数据被修改的情况下,将数据页直接写至输出的目标文件中;
在存在重叠且存在数据被修改的情况下,则将数据页进行点优先级读取,进行解压解码操作。
根据本发明提供的一种用于时序数据库的数据文件快速合并方法,所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,还包括:
进行合并重叠的数据页,在点优先级读取中还有数据点的情况下,获取一个数据点,记为当前数据点;
判断下一个数据块与当前数据块之间数据点的数量差,生成第一判断结果,判断下一数据页与当前数据页之间数据点的数量差,生成第二判断结果;
根据所述第一判断结果和所述第二判断结果,更新数据点或者将数据点直接写入输出的目标文件中。
根据本发明提供的一种用于时序数据库的数据文件快速合并方法,所述根据所述第一判断结果和所述第二判断结果,更新数据点或者将数据点直接写入输出的目标文件中,具体包括:
判断在下一个数据块与当前数据块有相同时间戳的数据点数量差值大于等于设定值,生成第一判断结果;
所述第一判断结果为是或者下一个数据块存在数据被修改,则根据数据块索引从初始文件中读取数据块,并拆分为数据页,将未删除的部分放入数据页的优先级队列;
所述第一判断结果为否且不存在数据被修改,则直接将数据点写入输出的目标文件中。
根据本发明提供的一种用于时序数据库的数据文件快速合并方法,所述根据所述第一判断结果和所述第二判断结果,更新数据点或者将数据点直接写入输出的目标文件中,具体包括:
判断在下一个数据页与当前数据页有相同时间戳的数据点数量差值大于等于设定值,生成第二判断结果;
所述第二判断结果为是或者下一个数据块存在数据被修改,则将数据页进行点优先级读取,更新当前数据点;
所述第二判断结果为否且不存在数据被修改,则直接将数据点写入输出的目标文件中。
本发明还提供一种时序数据库的数据文件快速合并系统,包括:
数据读取模块,用于从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;
数据分配模块,用于基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;
数据合并模块,用于所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述用于时序数据库的数据文件快速合并方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述用于时序数据库的数据文件快速合并方法。
本发明提供的一种用于时序数据库的数据文件快速合并方法及系统,通过对于没有重叠且不存在待修改数据的数据块或者数据页,直接将其移动至输出目标文件,避免解压、解码、编码和压缩带来的CPU代价,以及未重叠的数据块、数据页可以直接写到输出目标文件,避免解压、解码、编码和压缩带来的CPU代价提高了合并速率。对于两个有重叠的数据页,识别真正有重叠的数据点,对于没有重叠的数据点无需重排序,极大加速了合并性能。分批获取初始文件上的设备和时间序列,占用内存少,只把与当前时间戳有重叠的数据块读进内存,避免了一次将多个数据块都读进内存,极大地节省了内存资源的占用。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种用于时序数据库的数据文件快速合并方法的流程示意图之一;
图2是本发明提供的一种用于时序数据库的数据文件快速合并方法的流程示意图之二;
图3是本发明提供的一种用于时序数据库的数据文件快速合并方法的流程示意图之三;
图4是本发明提供的一种用于时序数据库的数据文件快速合并方法的流程示意图之四;
图5是本发明提供的一种时序数据库的数据文件快速合并系统的模块连接示意图;
图6是本发明提供的一种时序数据库的数据文件快速合并系统架构图;
图7是本发明提供的电子设备的结构示意图。
附图标记:
110:数据读取模块;120:数据分配模块;130:数据合并模块;
710:处理器;720:通信接口;730:存储器;740:通信总线。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图4描述本发明的一种用于时序数据库的数据文件快速合并方法,包括:
S100、从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;
S200、基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;
S300、所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并。
本发明针对现有的内存、CPU、IO资源占用高和合并速率慢的问题,使用新的合并方式,可以在海量设备和各种工业物联网场景下进行时序数据的快速合并的同时,减少对系统资源的占用。
在本发明中,输入为一批文件,设定为初始文件Source File,输出为一个或多个文件,设定为目标文件Target File。其中初始文件为乱序或有序的且可能存在被修改数据的源文件,而目标文件是有序的且不存在被修改数据的目标文件。主要数据结构包括:
SourceFileList,初始文件列表,存放合并的源文件Source File,根据时间序列的起始时间和版本号进行从小到大排序;
BlockMetadataQueue,数据块索引的优先级队列,存放数据块的索引,根据数据块的起始时间和版本号进行排序,起始时间越小、版本号越新,优先级越高;
PageQueue,数据页的优先级队列,存放数据页,根据数据页的起始时间和版本号进行排序,起始时间越小、版本号越新,优先级越高;
PointPriorityReader,点优先级读取,用于将有重叠的数据页解开,并执行去重和整理的工作,最终根据时间戳从小到大有序地返回数据点。
从Source File列表按字典序分批读取数据储存设备,依次遍历每个数据储存设备D[1],D[2],…,D[n];
从Source File列表按字典序分批读取设备D[i]下的序列S[1],S[2],…,S[n],并均分给多个子线程去执行合并。
子线程执行合并任务过程中识别真正具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,完成数据文件的快速合并,包括:
S101、进行合并文件,在初始文件列表不为空的情况下,取出第一个文件,并查找与其有重叠的其它文件,记为重叠文件列表;
S102、依次读取所述重叠文件列表中文件的数据快索引,在数据库被删除的情况下,则进行丢弃操作,否则放入数据块索引的优先级队列。
子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,还包括:
S201、进行合并数据块,在所述数据块索引的优先级队列不为空的情况下,取出第一个数据块索引,并判断是否有其它数据块重叠已经是否存在数据被修改;
S202、在没有数据块重叠且不存在数据被修改的情况下,根据数据块索引从初始文件中读取数据块,直接写至输出的目标文件中,无需解压、解码、编码和压缩操作;
S203、在存在数据块重叠且存在数据被修改的情况下,根据数据块索引从初始文件中读取数据块,并拆分为数据页,无需解压和解码操作,若数据页被删除则丢弃,否则,将所述数据页存放至数据页的优先级队列。
子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,还包括:
S301、进行合并数据页,在数据页的优先级队列不为空的情况下,取出第一个数据页,并判断是否有其它数据页重叠且是否存在数据被修改;
S302、在没有重叠且不存在数据被修改的情况下,将数据页直接写至输出的目标文件中,无需解压、解码、编码和压缩操作;
S303、在存在重叠且存在数据被修改的情况下,则将数据页进行点优先级读取,进行解压解码操作。
进行合并重叠的数据页,在点优先级读取中还有数据点的情况下,获取一个数据点,记为当前数据点;
判断下一个数据块与当前数据块之间数据点的数量差,生成第一判断结果,判断下一数据页与当前数据页之间数据点的数量差,生成第二判断结果;
根据所述第一判断结果和所述第二判断结果,更新数据点或者将数据点直接写入输出的目标文件中。
判断在下一个数据块与当前数据块有相同时间戳的数据点数量差值大于等于设定值,生成第一判断结果;
所述第一判断结果为是或者下一个数据块存在数据被修改,则根据数据块索引从初始文件中读取数据块,并拆分为数据页,将未删除的部分放入数据页的优先级队列;
所述第一判断结果为否且不存在数据被修改,则直接将数据点写入输出的目标文件中。
判断在下一个数据页与当前数据页有相同时间戳的数据点数量差值大于等于设定值,生成第二判断结果;
所述第二判断结果为是或者下一个数据块存在数据被修改,则将数据页进行点优先级读取,更新当前数据点;
所述第二判断结果为否且不存在数据被修改,则直接将数据点写入输出的目标文件中。
在本发明中,合并可能重叠的数据页,当PointPriorityReader还有数据点,获取一个数据点,记为CurrentPoint。
记下一个数据块为NextBlock,当前的数据块为CurrentBlock,若CurrentPoint的时间戳大于NextBlock的起始时间,则判断NextBlock是否位于CurrentBlock的“缝隙”,即与CurrentBlock有相同时间戳的数据点数量差值是否大于等于1。若是或者NextBlock存在数据被修改,则根据数据块索引从Source File读取数据块,并解开拆分成数据页,无需解压和解码操作,将没被删除的放到PageQueue里;若否且NextBlock不存在数据被修改,则直接写到Target File上,无需解压、解码、编码和压缩操作。
记下一个数据页为NextPage,当前的数据页为CurrentPage。若CurrentPoint的时间戳大于NextPage的起始时间,则判断NextPage是否位于CurrentPage的“缝隙”,即与CurrentPage有相同时间戳的数据点数量差值是否大于等于1。若是或者NextPage存在数据被修改,则将数据页放入PointPriorityReader里,解压解码,更新当前的数据点;若否且NextPage不存在数据被修改,则直接写到Target File上,无需解压、解码、编码和压缩操作。
将CurrentPoint写到缓冲区,到达阈值则编码压缩,并写到Target File。
时间序列的数据在文件的分布和场景,令数据块为Block,数据页为Page,子线程合并的具体步骤为:
合并文件:获取File1与其有重叠的File2,读取Block 1、2、3的索引到BlockMetadataQueue里;
Block 1没有重叠,则读取Block 1到内存,并直接写到Target File;
Block 2有重叠,则读取Block 2到内存,将Page 2和Page 5放进PageQueue;
Page 2没有重叠,直接写到Target File;
Block 3位于Block 2的“缝隙”中且不存在被修改的数据,则直接将Block 3写到Target File;
File 1合并完成,将与File 2有重叠的File 3、4的Block 4、5的索引到BlockMetadataQueue内;
Block 4有重叠,读取Block 4到内存,将Page 4和Page 7放进PageQueue;
Page 4没有重叠,直接写到Target File;
Page 5有重叠,放到PointPriorityReader解压解码;
Block 5有重叠,读取Block 5到内存,将Page 6和Page 8放进PageQueue;
Page 6有重叠,放到PointPriorityReader解压解码;
Page 7有重叠,放到PointPriorityReader解压解码;
Page 8位于Page 5的“缝隙”中且不存在被修改的数据,则直接写到Target File。
通过本发明公开的一种用于时序数据库的数据文件快速合并方法,对于没有重叠且不存在待修改数据的数据块或者数据页,直接将其移动至Target File,避免解压、解码、编码和压缩带来的CPU代价,提高了合并速率;位于“缝隙”里的数据块、数据页可以直接写到目标文件,避免解压、解码、编码和压缩带来的CPU代价,提高了合并速率;对于两个有重叠的数据页,识别真正有重叠的数据点,对于没有重叠的数据点无需重排序,极大加速了合并性能。例如,两个重叠的数据页被放入PointPriorityReader,时间范围分别是1~500和400~900,而实际有重叠的范围是400~500,因此,1~399和501~900的数据点无需做重排序、去重的工作,可以直接批量写入缓冲区。同时在内存使用上具有优势,分批获取SourceFile上的设备和时间序列,占用内存少,适用于海量设备和海量序列场景,只把与当下时间戳有重叠的数据块读进内存,避免了一次将多个数据块都读进内存,极大地节省了内存资源的占用。
本发明还公开了一种时序数据库的数据文件快速合并系统,所述系统包括:
数据读取模块110,用于从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;
数据分配模块120,用于基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;
数据合并模块130,用于所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并。
其中,数据合并模块,进行合并文件,在初始文件列表不为空的情况下,取出第一个文件,并查找与其有重叠的其它文件,记为重叠文件列表;
依次读取所述重叠文件列表中文件的数据快索引,在数据库被删除的情况下,则进行丢弃操作,否则放入数据块索引的优先级队列。
进行合并数据块,在所述数据块索引的优先级队列不为空的情况下,取出第一个数据块索引,并判断是否有其它数据块重叠已经是否存在数据被修改;
在没有数据块重叠且不存在数据被修改的情况下,根据数据块索引从初始文件中读取数据块,直接写至输出的目标文件中;
在存在数据块重叠且存在数据被修改的情况下,根据数据块索引从初始文件中读取数据块,并拆分为数据页,若数据页被删除则丢弃,否则,将所述数据页存放至数据页的优先级队列。
进行合并数据页,在数据页的优先级队列不为空的情况下,取出第一个数据页,并判断是否有其它数据页重叠且是否存在数据被修改;
在没有重叠且不存在数据被修改的情况下,将数据页直接写至输出的目标文件中;
在存在重叠且存在数据被修改的情况下,则将数据页进行点优先级读取,进行解压解码操作。
进行合并重叠的数据页,在点优先级读取中还有数据点的情况下,获取一个数据点,记为当前数据点;
判断下一个数据块与当前数据块之间数据点的数量差,生成第一判断结果,判断下一数据页与当前数据页之间数据点的数量差,生成第二判断结果;
根据所述第一判断结果和所述第二判断结果,更新数据点或者将数据点直接写入输出的目标文件中。
通过本发明提供的一种时序数据库的数据文件快速合并系统,对于没有重叠且不存在待修改数据的数据块或者数据页,直接将其移动至输出目标文件,避免解压、解码、编码和压缩带来的CPU代价,以及未重叠的数据块、数据页可以直接写到输出目标文件,避免解压、解码、编码和压缩带来的CPU代价提高了合并速率。对于两个有重叠的数据页,识别真正有重叠的数据点,对于没有重叠的数据点无需重排序,极大加速了合并性能。分批获取初始文件上的设备和时间序列,占用内存少,只把与当前时间戳有重叠的数据块读进内存,避免了一次将多个数据块都读进内存,极大地节省了内存资源的占用。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行一种用于时序数据库的数据文件快速合并方法,该方法包括:从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;
基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;
所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的一种用于时序数据库的数据文件快速合并方法,该方法包括:从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;
基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;
所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的一种用于时序数据库的数据文件快速合并方法,该方法包括:从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;
基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;
所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种用于时序数据库的数据文件快速合并方法,其特征在于,包括:
从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;
基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;
所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并。
2.根据权利要求1所述的用于时序数据库的数据文件快速合并方法,其特征在于,所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,包括:
进行合并文件,在初始文件列表不为空的情况下,取出第一个文件,并查找与其有重叠的其它文件,记为重叠文件列表;
依次读取所述重叠文件列表中文件的数据快索引,在数据库被删除的情况下,则进行丢弃操作,否则放入数据块索引的优先级队列。
3.根据权利要求2所述的用于时序数据库的数据文件快速合并方法,其特征在于,所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,还包括:
进行合并数据块,在所述数据块索引的优先级队列不为空的情况下,取出第一个数据块索引,并判断是否有其它数据块重叠已经是否存在数据被修改;
在没有数据块重叠且不存在数据被修改的情况下,根据数据块索引从初始文件中读取数据块,直接写至输出的目标文件中;
在存在数据块重叠且存在数据被修改的情况下,根据数据块索引从初始文件中读取数据块,并拆分为数据页,若数据页被删除则丢弃,否则,将所述数据页存放至数据页的优先级队列。
4.根据权利要求3所述的用于时序数据库的数据文件快速合并方法,其特征在于,所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,还包括:
进行合并数据页,在数据页的优先级队列不为空的情况下,取出第一个数据页,并判断是否有其它数据页重叠且是否存在数据被修改;
在没有重叠且不存在数据被修改的情况下,将数据页直接写至输出的目标文件中;
在存在重叠且存在数据被修改的情况下,则将数据页进行点优先级读取,进行解压解码操作。
5.根据权利要求4所述的用于时序数据库的数据文件快速合并方法,其特征在于,所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并,还包括:
进行合并重叠的数据页,在点优先级读取中还有数据点的情况下,获取一个数据点,记为当前数据点;
判断下一个数据块与当前数据块之间数据点的数量差,生成第一判断结果,判断下一数据页与当前数据页之间数据点的数量差,生成第二判断结果;
根据所述第一判断结果和所述第二判断结果,更新数据点或者将数据点直接写入输出的目标文件中。
6.根据权利要求5所述的用于时序数据库的数据文件快速合并方法,其特征在于,所述根据所述第一判断结果和所述第二判断结果,更新数据点或者将数据点直接写入输出的目标文件中,具体包括:
判断在下一个数据块与当前数据块有相同时间戳的数据点数量差值大于等于设定值,生成第一判断结果;
所述第一判断结果为是或者下一个数据块存在数据被修改,则根据数据块索引从初始文件中读取数据块,并拆分为数据页,将未删除的部分放入数据页的优先级队列;
所述第一判断结果为否且不存在数据被修改,则直接将数据点写入输出的目标文件中。
7.根据权利要求5所述的用于时序数据库的数据文件快速合并方法,其特征在于,所述根据所述第一判断结果和所述第二判断结果,更新数据点或者将数据点直接写入输出的目标文件中,具体包括:
判断在下一个数据页与当前数据页有相同时间戳的数据点数量差值大于等于设定值,生成第二判断结果;
所述第二判断结果为是或者下一个数据块存在数据被修改,则将数据页进行点优先级读取,更新当前数据点;
所述第二判断结果为否且不存在数据被修改,则直接将数据点写入输出的目标文件中。
8.一种用于时序数据库的数据文件快速合并系统,其特征在于,包括:
数据读取模块,用于从预设的初始文件列表中按字典序分批读取数据储存设备,依次遍历每个数据储存设备;
数据分配模块,用于基于每个数据储存设备读取所述数据储存设备下的序列,并将所述序列均分至多个子线程执行合并任务;
数据合并模块,用于所述子线程执行合并任务过程中识别具有重叠的数据点进行点优先级读取,重新排序,未重叠的数据点则无需重新排序,生成排序结果,根据所述排序结果将数据点写入目标文件,进行合并操作,完成数据文件的快速合并。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述用于时序数据库的数据文件快速合并方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述用于时序数据库的数据文件快速合并方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310443507.3A CN116561120B (zh) | 2023-04-21 | 2023-04-21 | 一种用于时序数据库的数据文件快速合并方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310443507.3A CN116561120B (zh) | 2023-04-21 | 2023-04-21 | 一种用于时序数据库的数据文件快速合并方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116561120A true CN116561120A (zh) | 2023-08-08 |
CN116561120B CN116561120B (zh) | 2023-12-26 |
Family
ID=87493867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310443507.3A Active CN116561120B (zh) | 2023-04-21 | 2023-04-21 | 一种用于时序数据库的数据文件快速合并方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116561120B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7370068B1 (en) * | 2002-09-04 | 2008-05-06 | Teradata Us, Inc. | Sorting of records with duplicate removal in a database system |
CN105933294A (zh) * | 2016-04-12 | 2016-09-07 | 晶赞广告(上海)有限公司 | 网络用户定位方法、装置及终端 |
CN108536753A (zh) * | 2018-03-13 | 2018-09-14 | 腾讯科技(深圳)有限公司 | 重复信息的确定方法及相关装置 |
CN110019153A (zh) * | 2017-09-13 | 2019-07-16 | 北京宸信征信有限公司 | 一种多类型批量数据处理系统及其处理方法 |
CN110580506A (zh) * | 2019-08-30 | 2019-12-17 | 深圳市瑞立视多媒体科技有限公司 | 基于密度的聚类计算方法、装置、设备和存储介质 |
CN114175007A (zh) * | 2019-08-05 | 2022-03-11 | 国际商业机器公司 | 用于数据匹配的主动学习 |
US11422977B1 (en) * | 2021-10-15 | 2022-08-23 | Morgan Stanley Services Group Inc. | High-compression, high-volume deduplication cache |
-
2023
- 2023-04-21 CN CN202310443507.3A patent/CN116561120B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7370068B1 (en) * | 2002-09-04 | 2008-05-06 | Teradata Us, Inc. | Sorting of records with duplicate removal in a database system |
CN105933294A (zh) * | 2016-04-12 | 2016-09-07 | 晶赞广告(上海)有限公司 | 网络用户定位方法、装置及终端 |
CN110019153A (zh) * | 2017-09-13 | 2019-07-16 | 北京宸信征信有限公司 | 一种多类型批量数据处理系统及其处理方法 |
CN108536753A (zh) * | 2018-03-13 | 2018-09-14 | 腾讯科技(深圳)有限公司 | 重复信息的确定方法及相关装置 |
CN114175007A (zh) * | 2019-08-05 | 2022-03-11 | 国际商业机器公司 | 用于数据匹配的主动学习 |
CN110580506A (zh) * | 2019-08-30 | 2019-12-17 | 深圳市瑞立视多媒体科技有限公司 | 基于密度的聚类计算方法、装置、设备和存储介质 |
US11422977B1 (en) * | 2021-10-15 | 2022-08-23 | Morgan Stanley Services Group Inc. | High-compression, high-volume deduplication cache |
Non-Patent Citations (6)
Title |
---|
CHRISTOPHER FROST 等: "Generalized file system dependencies", 《ACM SIGOPS OPERATING SYSTEMS REVIEW》, pages 307 * |
TIANLIN LI 等: "A SORT-BASED INTEREST MATCHING ALGORITHM WITH TWO EXCLUSIVE JUDGING CONDITIONS FOR REGION OVERLAP", 《WINTER SIMULATION CONFERENCE》, pages 2167 - 2178 * |
赵东明 等: "面向聚合查询的Apache IoTDB物理元数据管理", 《软件学报》, pages 1027 - 1048 * |
陆铭琛 等: "基于水车模型的时序大数据快速存储", 《计算机科学》, pages 25 - 33 * |
陈思佳 等: "基于重复数据删除技术的雾存储数据去冗余方案", 《计算机应用与软件 》, pages 18 - 24 * |
黄向东 等: "支持时序数据聚合函数的索引", 《清华大学学报(自然科学版)》, pages 229 - 236 * |
Also Published As
Publication number | Publication date |
---|---|
CN116561120B (zh) | 2023-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102007070B1 (ko) | 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법 | |
US9377959B2 (en) | Data storage method and apparatus | |
CN108319654B (zh) | 计算系统、冷热数据分离方法及装置、计算机可读存储介质 | |
KR101505263B1 (ko) | 데이터 중복 제거 방법 및 장치 | |
CN107038206B (zh) | Lsm树的建立方法、lsm树的数据读取方法和服务器 | |
CN103020255B (zh) | 分级存储方法和装置 | |
CN107480150B (zh) | 一种文件加载方法和装置 | |
JP2012150792A (ja) | 重複排除記憶システムのスケーラビリティを向上させるシステムおよび方法 | |
CN102479245B (zh) | 数据区块的切分方法 | |
US20160147778A1 (en) | Applying a database transaction log record directly to a database table container | |
CN111868705B (zh) | 记录装置、读取装置、记录方法、读取方法及磁带 | |
CN111125033B (zh) | 一种基于全闪存阵列的空间回收方法及系统 | |
WO2022007937A1 (zh) | 处理Bitmap数据的方法以及装置 | |
CN112104725A (zh) | 容器镜像去重方法、系统、计算机设备及存储介质 | |
CN110750211B (zh) | 一种存储空间的管理方法及装置 | |
WO2021012162A1 (zh) | 存储系统数据压缩的方法、装置、设备及可读存储介质 | |
EP3267329A1 (en) | Data processing method having structure of cache index specified to transaction in mobile environment dbms | |
KR20150035876A (ko) | 데이터 중복 제거 방법 및 장치 | |
CN116561120B (zh) | 一种用于时序数据库的数据文件快速合并方法及系统 | |
CN111061428B (zh) | 一种数据压缩的方法及装置 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
US11226739B2 (en) | Method, device and computer program product for storage management | |
CN107844405B (zh) | 日志处理方法及装置、服务器 | |
JP2010191903A (ja) | 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム |
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 |