CN117009439B - 数据处理方法、装置、电子设备及存储介质 - Google Patents
数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117009439B CN117009439B CN202311279539.0A CN202311279539A CN117009439B CN 117009439 B CN117009439 B CN 117009439B CN 202311279539 A CN202311279539 A CN 202311279539A CN 117009439 B CN117009439 B CN 117009439B
- Authority
- CN
- China
- Prior art keywords
- data
- disk file
- disk
- target
- data layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 68
- 238000003672 processing method Methods 0.000 title claims abstract description 31
- 238000000034 method Methods 0.000 claims abstract description 60
- 238000004064 recycling Methods 0.000 claims abstract description 7
- 238000012545 processing Methods 0.000 claims description 56
- 238000011084 recovery Methods 0.000 claims description 29
- 238000013507 mapping Methods 0.000 claims description 23
- 230000006870 function Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 2
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 18
- 238000013473 artificial intelligence Methods 0.000 abstract description 10
- 239000002699 waste material Substances 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 18
- 230000009471 action Effects 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 230000003321 amplification Effects 0.000 description 8
- 238000003199 nucleic acid amplification method Methods 0.000 description 8
- 230000001960 triggered effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000008602 contraction Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012546 transfer 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
-
- 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/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- 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/18—File system types
- G06F16/182—Distributed file systems
-
- 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/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据处理方法、装置、电子设备及存储介质,应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景,方法包括:获取针对日志结构合并树中的目标数据的写操作所产生的过期数据;基于目标关键字从每层数据层所包括的预设数量个磁盘文件中,查找过期数据所在的目标磁盘文件;将目标关键字写入目标磁盘文件所在的数据层所对应的缓存结构中;根据每层数据层所对应的缓存结构中的关键字的数量,对每层数据层所包括的磁盘文件中的过期数据进行回收处理。本申请能够对过期数据进行准确且高效的回收,从而提高分布式数据库的文件存储效率、***性能和查询效率,减少分布式数据库的空间和资源的浪费。
Description
技术领域
本申请属于计算机技术领域,具体涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
在基于日志结构合并树(Log-Structured Merge Tree,LSM树)的存储***中,一般需要通过Compaction消除过期数据。其中,Compaction指的是根据一定策略消除存储引擎中的过期数据,以释放磁盘空间。
相关技术通常在Compaction的过程中遇到了关键字(Key)相同并且版本更大的记录时,才能够将该记录认为是过期数据并被删除。然而两条相同记录能在Compaction过程中遇到的时机是不可控的,一条已经过期的记录可能被Compaction多次(写放大)而继续存在于***中,浪费了***的计算资源和磁盘的输入/输出(I/O)资源。其次,一个扫描查询也会将该过期的数据从磁盘上读到内存然后又丢掉,造成读的延迟偏高(读放大)。最后,过期数据长时间存在于数据库***中,导致磁盘空间不能够得到有效利用(空间放大)。
可见,相关技术中的过期数据回收方式是一种被动回收机制,在回收时间、空间放大、读写放大等方面都存在很多不可控的因素,使得***资源无法得到有效利用。
发明内容
为了解决上述技术问题,本申请提供一种数据处理方法、装置、电子设备及存储介质。
一方面,本申请提出了一种数据处理方法,所述方法包括:
获取针对日志结构合并树中的目标数据的写操作所产生的过期数据;所述日志结构合并树包括至少两层数据层,每层所述数据层包括预设数量个磁盘文件,且每层所述数据层对应有一个缓存结构,每层所述数据层对应的缓存结构用于存储每层所述数据层中的过期数据的元信息;
确定所述目标数据的关键字为所述过期数据的目标关键字,并基于所述目标关键字从每层所述数据层所包括的预设数量个磁盘文件中,查找所述过期数据所在的目标磁盘文件;
将所述目标关键字写入所述目标磁盘文件所在的数据层所对应的缓存结构中;所述目标关键字用于标识所述目标磁盘文件中的过期数据的元信息;
根据每层所述数据层所对应的缓存结构中的关键字的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理。
另一方面,本申请提出了一种数据处理装置,所述装置包括:
过期数据获取模块,用于获取针对日志结构合并树中的目标数据的写操作所产生的过期数据;所述日志结构合并树包括至少两层数据层,每层所述数据层包括预设数量个磁盘文件,且每层所述数据层对应有一个缓存结构,每层所述数据层对应的缓存结构用于存储每层所述数据层中的过期数据的元信息;
目标磁盘文件查找模块,用于确定所述目标数据的关键字为所述过期数据的目标关键字,并基于所述目标关键字从每层所述数据层所包括的预设数量个磁盘文件中,查找所述过期数据所在的目标磁盘文件;
关键字写入模块,用于将所述目标关键字写入所述目标磁盘文件所在的数据层所对应的缓存结构中;所述目标关键字用于标识所述目标磁盘文件中的过期数据的元信息;
回收模块,用于根据每层所述数据层所对应的缓存结构中的关键字的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理。
另一方面,本申请提出了一种数据处理的电子设备,所述电子设备包括处理器和存储器,存储器中存储有至少一条指令或至少一段程序,至少一条指令或至少一段程序由处理器加载并执行以实现如上述所述的数据处理方法。
另一方面,本申请提出了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述所述的数据处理方法。
另一方面,本申请提出了一种计算机程序产品,包括计算机程序,所述计算机程被处理器执行时实现如上述所述的数据处理方法。
本申请实施例提出的数据处理方法、装置、电子设备及存储介质,在每层数据层单独维护一个缓存结构,每层数据层对应的缓存结构用于存储每层数据层中的过期数据的元信息,在获取针对日志结构合并树中的目标数据的写操作所产生的过期数据时,可以根据过期数据的目标关键字从每层数据层所包括的预设数量个磁盘文件中,查找过期数据所在的目标磁盘文件,将目标关键字写入目标磁盘文件所在的数据层所对应的缓存结构中,并根据每层数据层所对应的缓存结构中的关键字的数量,对每层数据层所包括的磁盘文件中的过期数据进行回收处理,由此将对过期数据的被动识别转换为主动识别,能够快速定位到过期数据具体落在哪个磁盘文件中,且将对应的关键字写入对应的缓存结构中,能够通过缓存结构中存储的关键字的数量精确且高效地预估出每个磁盘文件中的过期数据的数量,进而根据每个磁盘文件中的过期数据的数量,对每个磁盘文件中的过期数据进行准确且高效的回收,从而提高分布式数据库的存储效率、***性能和查询效率,减少分布式数据库的空间和资源的浪费。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是根据一示例性实施例示出的一种数据处理方法的实施环境示意图。
图2是根据一示例性实施例示出的一种数据处理方法的流程示意图一。
图3是根据一示例性实施例示出的一种缓存结构的示意图。
图4是根据一示例性实施例示出的一种数据处理方法的流程示意图二。
图5是根据一示例性实施例示出的一种数据处理方法的流程示意图三。
图6是根据一示例性实施例示出的一种数据处理方法的流程示意图四。
图7是根据一示例性实施例示出的一种TDSQL分布式数据库***的整体框架图。
图8是根据一示例性实施例示出的一种单个存储节点的存储框架图。
图9是根据一示例性实施例示出的一种数据处理装置的框图。
图10是根据一示例性实施例提供的一种服务器的硬件结构框图。
具体实施方式
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。
为了更好地说明本申请,下面先对本申请实施例使用到的技术术语进行解释:
LSM树:一种数据结构,支持增、删、读、改、顺序扫描操作,而且通过批量存储技术规避了磁盘随机写入的问题。LSM树的核心特点是利用顺序写来提高写性能,但因为分层(此处分层是指的分为内存和文件两部分)的设计会稍微降低读性能,但是通过牺牲小部分读性能换来高性能写,使得LSM树成为非常流行的存储结构。基于LSM树实现的数据库可以包括但不限于:LevelDB、HBase等。其中,LevelDB是一个高效的kv数据库。HBase是一个分布式的、面向列的开源数据库。
以下,对LSM树的结构进行介绍:
LSM树包括以下三个重要组成部分:
MemTable:MemTable是在内存中的数据结构,用于保存最近更新的数据,会按照关键字Key有序地组织这些数据,LSM树对于具体如何组织有序地组织数据并没有明确的数据结构定义,例如Hbase使用跳跃表来保证内存中Key的有序。
因为数据暂时保存在内存中,内存并不是可靠存储,如果断电会丢失数据,因此通常会通过预写式日志(Write-ahead logging,WAL)的方式来保证数据的可靠性。
Immutable MemTable:当MemTable达到一定大小后,会转化成ImmutableMemTable。Immutable MemTable是将MemTable转变为SSTable的一种中间状态。写操作由新的MemTable处理,在转存过程中不阻塞数据更新操作。
SSTable(Sorted String Table):有序键值对集合,是LSM树组在磁盘中的数据结构。为了加快SSTable的读取,可以通过建立Key的索引以及布隆过滤器来加快Key的查找。
Compaction:基于LSM树实现的存储引擎中,存储引擎会周期性地执行合并数据的操作,该过程能够消除脏数据,可以将这个消除脏数据的动作称为Compaction动作。
LSM树会将所有的数据***、修改、删除等操作记录保存在内存之中,当此类操作达到一定的数据量后,再批量地顺序写入到磁盘当中。当MemTable达到一定大小flush到持久化存储变成SSTable后,在不同的SSTable中,可能存在相同Key的记录,最新的那条记录才是准确的。其中,Flush操作就是将缓存中的数据强制写入到主存或磁盘中,以保证数据的一致性和可靠性。
在部分数据索引结构中,通常采用分层机制存储元信息。其中,元信息为描述实际数据的数据,用于描述实际数据的属性(特征)信息,如元信息可以是实际数据的文件名、或者该实际数据的存储地址指针等。同时,元信息还可以具有对应的标识,用于对该元信息进行标识。元信息以及其对应的标识可以构成键值对,每组键值对可以包括关键字(Key)以及该Key所对应的值(Value),Value即为元信息本身,Key用于对元信息的Value进行标识。
LSM树可以划分成N+1层(N为正整数),分别为L0层、L1层、……、LN层。其中,L0层中的数据可以存储于存储设备的内存。由于内存空间通常较小,L0层的数据规模通常也较小。LSM树的L1层至LN层中的元信息可以存储于磁盘,并且,磁盘的存储空间通常较大,因此,L1层至LN层可以具有较大的数据规模。L0至LN层中的每一层,可以具有一个或者多个LSM树的子树。
在向LSM树中写入新数据时,可以将新的元信息以及其对应的关键字以键值对(Key-Value)的形式写入L0层的子树中。当L0层中的数据量超出一定阈值时,可以对L0层中的数据进行合并,并将合并后所得到的数据写入至L1层中的子树。这样,内存可以拥有更多空余的内存空间来存储其它新写入的数据。类似的,当L1层中的数据规模超出预设阈值,则可以对L1层中的数据进行合并,并将合并后所得到的数据写入至L2层中的子树,以此类推。在不断的合并以及写入过程中,下一层子树的数据规模通常越来越大。
每一层中的数据在进行合并的过程中,可以是将对应于相同Key的Value合并成新的Value,并基于新的Value与原有的Key构建成新的键值对,该新的键值对的Key不变,新的键值对的Value为经过合并后所得到的新的Value,以此可以淘汰LSM树中冗余的无效信息,以实现降低存储开销的目的。
读放大:读取数据时实际读取的数据量大于真正的数据量。例如在LSM树中需要先在MemTable查看当前Key是否存在,不存在继续从SSTable中寻找。
写放大:写入数据时实际写入的数据量大于真正的数据量。例如在LSM树中写入时可能触发Compact操作,导致实际写入的数据量远大于该Key的数据量。
空间放大:数据实际占用的磁盘空间比数据的真正大小更多。对于一个Key来说,只有最新的那条记录是有效的,而之前的记录都是可以被清理回收的。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请实施例的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
图1是根据一示例性实施例示出的一种数据处理方法的实施环境示意图。如图1所示,该实施环境至少可以包括终端01和服务器02,该终端01和服务器02之间可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例在此不做限制。
具体地,该服务器02可以用于快速定位识别过期数据,并对过期数据进行回收。可选地,该服务器02可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
具体地,该终端01可以用于采集写操作所产生的过期数据,将该过期数据发送至服务器02。该终端01可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能语音交互设备、智能家电、车载终端、飞行器等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
需要说明的是,图1仅仅是一种示例。在其他场景中,还可以包括其他实施环境。
图2是根据一示例性实施例示出的一种数据处理方法的流程示意图一。该方法可以用于图1中的实施环境中。本说明书提供了如实施例或流程图上述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的***或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,该方法可以包括:
S101.获取针对日志结构合并树中的目标数据的写操作所产生的过期数据;日志结构合并树包括至少两层数据层,每层数据层包括预设数量个磁盘文件,且每层数据层对应有一个缓存结构,每层数据层对应的缓存结构用于存储每层数据层中的过期数据的元信息。
可选地,该目标数据为已经存储在LSM树中的数据,LSM树包括至少两层数据层,每层数据层包括预设数量个磁盘文件,LSM树在磁盘中的数据结构为有序键值对集合,即磁盘文件中存储的是数据的元信息以及元信息对应的关键字,元信息以及其对应的关键字以键值对(Key-Value)的形式写入该LSM树。
可选地,该写操作为能够产生过期数据的写操作。由于能够产生过期数据的写操作落在数据层最终都会产生一份额外的过期数据,为了快速、准确定位到过期数据所在的磁盘文件,可以根据前端操作判断出哪些落在数据库***中的写入负载会产生过期数据。进一步地,在数据库***中,除了***(Insert)写操作不会产生过期数据之外,其他的写操作写入成功后,均会产生一条过期数据,因此该能够产生过期数据的写操作可以为除了Insert写操作之外的写操作,例如,应用负载的更新、删除等操作。
示例性地,该过期数据可以包括但不限于:无效数据、版本较低的数据、脏数据等。
需要说明的是,本申请实施例中的LSM树除了具备相关技术中的内存和磁盘文件两部分结构之外,还额外为每层数据层维护一个缓存结构(内存Buffer),每层数据层对应的缓存结构用于存储每层数据层中的过期数据的元信息,每一个内存Buffer内部通过一个简单的跳表来维护Key的有序性。
图3是根据一示例性实施例示出的一种缓存结构的示意图,如图3所示,假设LSM树包括6层数据层(L0、L1、L2、L3、L4、L5),则可以为L0维护一个内存Buffer0、为L1维护一个内存Buffer1、为L2护一个内存Buffer2、为L3维护一个内存Buffer3、为L4维护一个内存Buffer4、为L5维护一个内存Buffer5。每一层数据层中的数字指的是磁盘文件的文件标识(SSTable ID),例如,L3层中的“34”。文件标识下方的数字指的是该磁盘文件对应的最大Key和最小Key的范围,例如,L3层中的“34”下面的“151”指的是最小Key,“200”指的是“最大Key”。本申请实施例通过该缓存结构存储过期数据的元信息,该过期数据的元信息通过对应的Key进行标识。
该实施例中,由于写入LSM树中的数据以其元信息,以及元信息对应的Key构成的键值对的形式存在,终端对象对存储在LSM树中的目标数据的元信息进行写操作的时候会产生一个过期数据,终端可以将该过期数据发送给服务器,或者服务器直接从该终端中获取该过期数据。
需要说明的是,同一个终端对象在同一时间可以对LSM中的不同数据进行写操作,从而产生多个过期数据,不同的终端对象在同一时间也可以对LSM数中的不同数据、或相同数据进行写操作,从而产生多个过期数据,本申请对此不作具体限定。
S103.确定目标数据的关键字为过期数据的目标关键字,并基于目标关键字从每层数据层所包括的预设数量个磁盘文件中,查找过期数据所在的目标磁盘文件。
由于LSM树中本身存储有数据的元信息、元信息对应的Key构成的键值对,每组键值对可以包括关键字(Key)以及该Key所对应的值(Value),Value即为元信息本身,Key用于对元信息的Value进行标识。而在针对目标数据的写操作过程中,对应的Key并不会改变,因此服务器可以直接将LSM树中存储的该目标数据的关键字作为该过期数据的目标关键字。并通过该目标关键字主动、精准、快速地从每层数据层所包括的预设数量个磁盘文件中,查找过期数据所在的目标磁盘文件,即主动、精准、快速识别该过期数据位于LSM数中的哪个数据层的哪个目标磁盘文件中。
S105.将目标关键字写入目标磁盘文件所在的数据层所对应的缓存结构中;目标关键字用于标识目标磁盘文件中的过期数据的元信息。
该实施例中,在服务器定位到过期数据所在的目标磁盘文件之后,由于为每个磁盘文件维护有对应的缓存结构,服务器可以直接将过期数据的目标关键字写入目标磁盘文件所在的数据层所对应的缓存结构中,以通过该目标关键字标识目标磁盘文件中的过期数据的元信息。
S107.根据每层数据层所对应的缓存结构中的关键字的数量,对每层数据层所包括的磁盘文件中的过期数据进行回收处理。
该实施例中,在服务器通过为过期数据设计的缓存结构以及快速定位过期数据的算法定位到过期数据时,服务器可以主动识别每个磁盘文件中存在的过期数据的数量,根据这些信息,可以多样化地触发对过期数据的回收程序。
本申请实施例通过为过期数据设计的缓存结构以及快速定位过期数据的算法,能够实现将过期数据的被动识别转换为主动识别,从而快速定位到过期数据具体落在哪个磁盘文件中,而将对应的关键字写入对应的缓存结构中,能够通过缓存结构中存储的关键字的数量精确地预估出每个磁盘文件中的过期数据的数量,进而根据每个磁盘文件中的过期数据的数量,对每个磁盘文件中的过期数据进行准确且及时的回收,从而提高分布式数据库的存储效率、***性能和查询效率,减少空间和资源的浪费。具体的有益效果可以为:
及时释放存储空间:通过主动识别和回收过期数据,可以及时释放存储空间,避免数据占用过多的存储资源。有助于提高存储效率和减少空间浪费。
提高***性能:通过主动识别和回收过期数据,可以减少不必要的数据访问和处理操作,从而提高***的读写性能。减少过期数据的存在,从而可以减少数据访问的复杂性和冗余。
优化查询效率:主动识别过期数据可以减少查询操作中需要处理的数据量,从而提高查询效率。通过排除过期数据,可以更快地定位和检索需要的有效数据。
提升数据一致性和可靠性:主动识别过期数据可以减少过期数据对***的影响,提升数据的一致性和可靠性。及时清理过期数据可以避免过期数据对***功能和性能的负面影响。
需要说明的是,上述步骤S103中的基于目标关键字从每层数据层所包括的预设数量个磁盘文件中,查找过期数据所在的目标磁盘文件的过程,可以通过多种方式实现,对此不做具体限定。
在一种实施方式中,可以读取每层数据层所包括的预设数量个磁盘文件,从中找到过期数据所在的目标磁盘文件。在另一种实施方式中,可以通过二分查找和布隆过滤器结合的方式确定过期数据所在的目标磁盘文件。
需要说明的是,对于过二分查找和布隆过滤器结合的方式,也可以通过多种方式实现。在一种方式中,可以按照LSM树中的每层数据层的顺序,依次进行二分查找和布隆过滤器操作。在另一种方式中,还可以并行对LSM树中的每层数据层进行二分查找和布隆过滤器操作,或者按照随机顺序对LSM树中的每层数据层进行二分查找和布隆过滤器操作。
以下,以并行对LSM树中的每层数据层进行二分查找和布隆过滤器操作,或者按照随机顺序,对LSM树中的每层数据层进行二分查找和布隆过滤器操作为例,对上述步骤S103进行说明。图4是根据一示例性实施例示出的一种数据处理方法的流程示意图二,如图4所示,上述基于目标关键字从每层数据层所包括的预设数量个磁盘文件中,查找过期数据所在的目标磁盘文件,可以包括:
S1031.基于目标关键字和每层数据层所包括的预设数量个磁盘文件在每层数据层中的排序位置信息,确定过期数据对应的初始磁盘文件。
S1033.在基于初始磁盘文件的布隆过滤器信息确定过期数据存在于初始磁盘文件中的情况下,确定初始磁盘文件为目标磁盘文件。
该实施例中,可以基于目标关键字和每层数据层所包括的预设数量个磁盘文件在每层数据层中的排序位置信息,通过二分查找的方式确定过期数据对应的初始磁盘文件,即确定过期数据可能位于哪一个磁盘文件的范围内。并从内存中获取该初始磁盘文件的布隆过滤器信息,通过该布隆过滤器信息判断该过期数据是否存在于初始磁盘文件中,若是,则服务器判断该初始磁盘文件为目标磁盘文件,若否,则服务器认为该初始磁盘文件不是该目标磁盘文件。
需要说明的是,可以预先为LSM树中的每个磁盘文件生成对应的布隆过滤器信息。该布隆过滤器信息的生成过程可以包括:
布隆过滤器是一个长度为预设比特的位数组与预设数量个独立的哈希函数组成的数据结构,位数组初始化均为0,所有的哈希函数可以分别把输入数据尽量均匀地散列。当要向布隆过滤器***每个磁盘文件中的数据对应的Key时,该Key经过预设数量个哈希函数计算产生预设数量个哈希值,将该Key通过预设数量个哈希值映射到该位数组的位置上,位数组被映射到的位置的元素变为1,一个元素能被映射到预设数量个位置上。
由此,能够首先通过二分查找的方式确定过期数据可能位于哪个磁盘文件的范围内,由于二分查找的比较次数较少、查找速度快、平均性能较好,因此能够在消耗较少资源的情况下,快速精准地确定过期数据可能位于哪个磁盘文件的范围内,即快速精准地确定过期数据可能位于的初始磁盘文件。在此基础上,通过该初始磁盘文件的布隆过滤器信息确定该过期数据存是否真的位于该初始磁盘文件中,由于布隆过滤器信息通过位数组和若干个哈希函数来判断某个Key是否存在于某个磁盘文件中,空间利用率较高,且只需要对位数组查询,而不需要真正的查询数据,查询效率较高,从而能够提高目标磁盘文件的确定效率和确定精度,减少目标磁盘文件的确定过程对***资源的消耗。
在一个可选的实施例中,每层候选数据层中的预设数量个磁盘文件按序排列,则上述基于目标关键字和每层数据层所包括的预设数量个磁盘文件在每层数据层中的排序位置信息,确定过期数据对应的初始磁盘文件,可以包括:
比较目标关键字和每层候选数据层中处于中间位置的磁盘文件的第一候选关键字。
在目标关键字等于第一候选关键字的情况下,确定初始磁盘文件为每层候选数据层中处于中间位置的磁盘文件。
在目标关键字小于第一候选关键字的情况下,从位于处于中间位置的磁盘文件之前的磁盘文件中,查找关键字与目标关键字相同的磁盘文件,得到初始磁盘文件。
在目标关键字大于第一候选关键字的情况下,从位于处于中间位置的磁盘文件之后的磁盘文件中,查找关键字与目标关键字相同的磁盘文件,得到初始磁盘文件。
该实施例中,每层候选数据层中的预设数量个磁盘文件是按序排列,该候选数据层为至少两层数据层中除第一层数据层之外的数据层。对于二分查找,服务器可以比较目标关键字和每层候选数据层中处于中间位置的磁盘文件的第一候选关键字,判断目标关键字是否与第一候选关键字相等,若是,服务器确定始磁盘文件为每层候选数据层中处于中间位置的磁盘文件,若否,且目标关键字小于第一候选关键字的情况下,从位于处于中间位置的磁盘文件之前的磁盘文件中,查找关键字与目标关键字相同的磁盘文件,得到初始磁盘文件。若否,且目标关键字大于第一候选关键字的情况下,从位于处于中间位置的磁盘文件之后的磁盘文件中,查找关键字与目标关键字相同的磁盘文件,得到初始磁盘文件。
在其他实施方式中,如果按照上述方式未在候选数据层中的磁盘文件中找到过期数据可能落入的磁盘文件,则可以认为该过期数据落入第一层数据层中。
在其他实施方式中,“目标关键字与第一候选关键字相等”还可以替换为“目标关键字与第一候选关键字之间的差异小于预设差异阈值”。
由此,可以以每层数据层中处于中间位置的磁盘文件的第一候选关键字为二分查找的分界线,在比较次数较少和消耗资源较少的情况下,快速精准地确定过期数据可能位于哪个磁盘文件的范围内,即快速精准地确定过期数据可能位于的初始磁盘文件。
在一个可选的实施例中,在上述步骤S1033中,上述在基于初始磁盘文件的布隆过滤器信息确定过期数据存在于初始磁盘文件中的情况下,确定初始磁盘文件为目标磁盘文件,可以包括:
通过预设数量个哈希函数对目标关键字进行哈希处理,得到预设数量个哈希值。
将目标关键字通过预设数量个哈希值映射至位数组,得到预设数量个映射结果。
在预设数量个映射结果均为1的情况下,确定过期数据存在于初始磁盘文件中,并确定初始磁盘文件为目标磁盘文件。
该实施例中,由于预先为LSM树中的每个磁盘文件生成对应的布隆过滤器信息。该布隆过滤器信息是一个长度为预设比特的位数组与预设数量个独立的哈希函数组成的数据结构,位数组初始化均为0,位数组被映射到的位置的元素变为1。
基于此,服务器可以通过该预设数量个哈希函数对该目标关键字进行哈希处理,同样得到预设数量个哈希值,服务器将该预设数量个哈希值映射至位数组,得到预设数量个映射结果。如果该预设数量个映射结果中有一个为0,即有一个不为1,表明该目标关键字肯定不在该初始磁盘文件中,并确定该初始磁盘文件不是该目标磁盘文件。如果该预设数量个映射结果均为1,表明该目标关键字可能存在该初始磁盘文件中,并确定该初始磁盘文件为目标磁盘文件。
由于布隆过滤器信息通过位数组和若干个哈希函数来判断某个Key是否存在于某个磁盘文件中,如果预设数量个映射结果中有一个为0,那表明肯定不在该磁盘文件中,如果该预设数量个映射结果均为1,表明该目标关键字可能存在该初始磁盘文件中,就将该初始磁盘文件为目标磁盘文件,从而能够避免读取数据层中的磁盘文件以查看目标关键字所在的目标磁盘文件的资源消耗,进而提高目标磁盘文件的确定效率和确定精度,减少目标磁盘文件的确定过程对***资源的消耗。
以下,以按照LSM树中的每层数据层的顺序,依次进行二分查找和布隆过滤器操作为例,对上述步骤S103进行说明。图5是根据一示例性实施例示出的一种数据处理方法的流程示意图三,如图5所示,在上述步骤S103中,上述基于目标关键字从每层数据层所包括的预设数量个磁盘文件中,查找过期数据所在的目标磁盘文件,可以包括:
S1032.确定日志结构合并树的最后一层为当前数据层;当前数据层中的预设数量个磁盘文件按序排列。
S1034.基于目标关键字和当前数据层中的预设数量个磁盘文件在当前数据层的排序位置信息,确定过期数据在当前数据层中所对应的初始磁盘文件。
S1036.在基于对应的初始磁盘文件的布隆过滤器信息,确定过期数据不存在于对应的初始磁盘文件的情况下,重新确定当前数据层的上一层数据层为当前数据层。
S1038.重复基于目标关键字和当前数据层中的预设数量个磁盘文件在当前数据层的排序位置信息,至重新确定当前数据层的上一层数据层为当前数据层的操作,直至当前数据层为日志结构合并树的第一层数据层。
S10310.确定第一层数据层为目标磁盘文件。
相应地,上述方法还可以包括:
在基于对应的初始磁盘文件的布隆过滤器信息,确定过期数据存在于对应的初始磁盘文件的情况下,确定对应的初始磁盘文件为目标磁盘文件。
该实施例中,由于LSM树的L0层(第一层)中的文件是有交叉的,而L1到最后一层中的磁盘文件都是有序排序的,从最后一层数据层开始遍历的话,如果能够找到所在的目标磁盘文件,就无需对最后一层数据层之前的数据层进行遍历,可以减少遍历次数,减少目标磁盘文件的确定过程对***资源的消耗。因此,服务器可以先遍历最后一层数据层,将最后一层数据层作为当前数据层,并首先基于目标关键字和当前数据层中的预设数量个磁盘文件在当前数据层的排序位置信息,通过二分查找的方式,确定过期数据在当前数据层中所对应的初始磁盘文件,然后再基于初始磁盘文件的布隆过滤器信息,确定过期数据是否存在于当前数据层中所对应的初始磁盘文件,若是,则表明过期数据确实存在于该初始磁盘文件,确定当前数据层中所对应的初始磁盘文件为目标磁盘文件。
若否,则服务器重新遍历当前数据层的上一层数据层,并将当前数据层的上一层数据层重新作为当前数据层,重复基于目标关键字和当前数据层中的预设数量个磁盘文件在当前数据层的排序位置信息,通过二分查找的方式,确定过期数据在当前数据层中所对应的初始磁盘文件,然后再基于初始磁盘文件的布隆过滤器信息,确定过期数据是否存在于当前数据层中所对应的初始磁盘文件的操作,若是,则表明过期数据确实存在于该初始磁盘文件,确定当前数据层中所对应的初始磁盘文件为目标磁盘文件。
若否,继续重新遍历当前数据层的上一层数据层,并将当前数据层的上一层数据层作为当前数据层,并重复上述操作,直至遍历到第一层数据层,如果在遍历到第一层数据层的情况下(即当前数据层为第一层数据层的情况下),仍然没有找到过期数据所在的目标磁盘文件,则该过期数据大概率位于该第一层数据层,服务器可以直接将该第一层数据层中的磁盘文件确定为目标磁盘文件。
以下,举例对上述确定过期数据所在的目标磁盘文件的过程进行说明:
假设日志结构合并树包括5层数据层,分别为L0层数据层、L1层数据层、L2层数据层、L3层数据层、L4层数据层。服务器先将L4层数据层作为当前数据层,根据目标关键字和L4层数据层中的预设数量个磁盘文件在L4层数据层的排序位置信息,通过上述二分查找的方式确定过期数据在L4层数据层所对应的初始磁盘文件,即确定过期数据可能落入L4层数据层中的哪个磁盘文件的范围内。服务器根据该初始磁盘文件的布隆过滤器信息,确定该过期数据是否真的存在于该磁盘文件。若是,则将L4层数据层中的该磁盘文件作为该目标磁盘文件,以便后续将该过期数据的Key写入该L4层数据层对应的缓存结构中。若否,服务器重新将L3层数据层作为当前数据层。
服务器根据目标关键字和L3层数据层中的预设数量个磁盘文件在L3层数据层的排序位置信息,通过上述二分查找的方式确定过期数据在L3层数据层所对应的初始磁盘文件,即确定过期数据可能落入L3层数据层中的哪个磁盘文件的范围内。服务器根据该初始磁盘文件的布隆过滤器信息,确定该过期数据是否真的存在于该磁盘文件。若是,则将L3层数据层中的该磁盘文件作为该目标磁盘文件,以便后续将该过期文件写入该L3层数据层对应的缓存结构中。若否,服务器重新将L2层数据层作为当前数据层。
以此类推,如果在L1层数据层中没有找到该过期数据所在的目标磁盘文件,则服务器遍历L0层数据层,将L0层数据层中的磁盘文件作为目标磁盘文件,以便后续将过期数据的Key写入L0层数据层对应的缓存结构中。
本申请实施例中的按照LSM树中的每层数据层的顺序,依次进行二分查找和布隆过滤器操作的方式,并非是对每一层数据层进行遍历,而是在后一层数据层中未查找到该过期数据的Key所在的目标磁盘文件时,才会遍历上一次数据层,而在后一层数据层中查找到所在的目标磁盘文件时,无需对前面的数据层进行遍历,可以减少遍历次数,从而减少目标磁盘文件的确定过程对***资源的消耗。
在一个可选的实施例中,可以在每层数据层为每个磁盘文件设置对应的计数装置;则在将目标关键字写入目标磁盘文件所在的数据层所对应的缓存结构中之后,上述方法还可以包括:
将目标磁盘文件对应的计数装置的数量加1。
相应地,在上述步骤S107中,上述根据每层数据层所对应的缓存结构中的关键字的数量,对每层数据层所包括的磁盘文件中的过期数据进行回收处理,可以包括:
根据每层数据层所包括的磁盘文件所对应的计数装置的数量,对每层数据层所包括的磁盘文件中的过期数据进行回收处理。
该实施例中,还可以在LSM树的每一层数据层,为每一层数据层所包括的每个磁盘文件维护一个计数装置,例如,计数器。该计数装置中的数量表征对应的磁盘文件中存在的过期数据的数量。在将一个关键字存储到相应的缓存结构之后,可以使该关键字所在的磁盘文件所对应的计数装置的数量加1。在服务器将该目标关键字写入该目标磁盘文件所在的数据层所对应的缓存结构中之后,服务器可以将该目标磁盘文件所对应的计数装置的数量加1,该目标磁盘文件所对应的计数装置的数量用于表征该目标磁盘文件中所存在的过期数据的数量。
需要说明的是,在服务器将目标关键字写入该目标磁盘文件所在的数据层所对应的缓存结构,并将目标磁盘文件对应的计数装置的数量加1的时候,可能还存在将其他关键字写入其他磁盘文件所在的数据层所对应的缓存结构,并将其他磁盘文件对应的计数装置加1的操作,即每层数据层所包括的磁盘文件均会有一个对应的计数装置的数量,服务器可以根据每层数据层所包括的磁盘文件所对应的计数装置的数量,对每层数据层所包括的磁盘文件中的过期数据进行回收处理,由于维护的计数装置的数量能够准确表达每个磁盘文件中过期数据的信息,因此将所维护的计数装置中的数量作为触发数据回收的基础,能够及时且准确地对过期数据进行回收。
需要说明的是,上述根据每层数据层所包括的磁盘文件所对应的计数装置的数量,对每层数据层所包括的磁盘文件中的过期数据进行回收处理,可以通过多种方式实现,即可以多样化触发回收程序,对此不作具体限定。
在一种实施方式中,可以主动根据一个磁盘文件中过期数据是否满足预设条件来决定是否对该磁盘文件中的过期数据启动回收程序。在另一种实施方式中,还可以将回收程序依附在Compaction程序中,额外增加一种触发Compaction的机制以达到回收过期数据的目的。
以下,以“主动根据一个磁盘文件中过期数据是否满足预设条件来决定是否对该磁盘文件中的过期数据启动回收程序”为例,对磁盘文件中的过期数据进行回收处理的过程进行说明:
相应地,上述根据每层数据层所包括的磁盘文件所对应的计数装置的数量,对每层数据层所包括的磁盘文件中的过期数据进行回收处理,可以包括:
在预设磁盘文件所对应的计数装置的数量满足预设条件的情况下,删除预设磁盘文件中的过期数据,并将过期数据删除后的预设磁盘文件重新写入磁盘;或者,
在预设磁盘文件所对应的计数装置的数量以及相邻的磁盘文件所对应的计数装置中的数量均满足预设条件的情况下,删除预设磁盘文件中的过期数据和相邻的磁盘文件中的过期数据,将过期数据删除后的预设磁盘文件和过期数据删除后的相邻的磁盘文件重新写入磁盘。
可选地,该预设磁盘文件可以是每层数据层所包括的磁盘文件中的任意一个文件,该相邻的磁盘文件可以为与该预设磁盘文件位于同一数据层、且相邻的磁盘文件。
可选地,该“预设磁盘文件所对应的计数装置的数量满足预设条件”可以指的是:该预设磁盘文件所对应的计数装置的数量(即该预设磁盘文件中存在的过期数据的数量),与该预设磁盘文件中所包括的所有数据的总数量之间的比值大于预设比例阈值,该预设比例阈值可以根据实际业务需求进行设置,对此不作具体限定。或者,该“预设磁盘文件所对应的计数装置的数量满足预设条件”可以为:该预设磁盘文件所对应的计数装置的数量(即该预设磁盘文件中存在的过期数据的数量)大于某个预设数量阈值,该预设数量阈值可以根据实际业务需求进行设置,对此不作具体限定。
服务器可以实时遍历或定期遍历为每个磁盘文件所维护的计数装置,如果服务器发现某个预设磁盘文件所对应的计数装置的数量满足预设条件的情况下,则主动触发对该预设磁盘文件的回收程序。在一种方式中,可以将该预设磁盘文件单独重写一遍以删除该预设磁盘文件中的过期数据。例如,删除预设磁盘文件中的过期数据,并将过期数据删除后的预设磁盘文件重新写入磁盘。
在另一种方式中,还可以将相邻的几个磁盘文件联合重写,以提高过期数据回收的效率。示例性地,联合重写的过程可以如下:服务器可以实时遍历或定期遍历为每个磁盘文件所维护的计数装置,如果服务器发现某个预设磁盘文件所对应的计数装置的数量满足预设条件,且同时发现相邻的磁盘文件所对应的计数装置中的数量满足预设条件,则将该预设磁盘文件和相邻的磁盘文件联合重写。例如,同时删除预设磁盘文件中的过期数据和相邻的磁盘文件中的过期数据,并同时将过期数据删除后的预设磁盘文件和过期数据删除后的相邻的磁盘文件重新写入磁盘。
该实施例中,由于维护的计数装置的数量能够准确表达每个磁盘文件中过期数据的信息,因此以磁盘文件对应的计数装置中的数量是否满足预设条件作为触发数据回收的基础,能够不将过期数据的回收依附在Compaction程序中,而是主动对过期数据进行回收,使得过期数据的回收在一个可控的范围内,从而提高过期数据回收的效率和准确率,降低过期数据回收的成本。
以下,以“将回收程序依附在Compaction程序中,额外增加一种触发Compaction的机制以达到回收过期数据的目的”为例,对磁盘文件中的过期数据进行回收处理的过程进行说明:
相应地,上述根据每层数据层所包括的磁盘文件所对应的计数装置的数量,对每层数据层所包括的磁盘文件中的过期数据进行回收处理,可以包括:
响应于合并指令,根据每层数据层所包括的磁盘文件所对应的计数装置的数量,确定第一预设范围内的磁盘文件中的过期数据的数量是否大于第一预设数量阈值;第一预设范围为至少两层数据层中的任意一个数据层中的数据范围。
在确定第一预设范围内的磁盘文件中的过期数据的数量大于第一预设数量阈值,且第一预设范围内的磁盘文件中的数据总数量小于第二预设数量阈值的情况下,将第一预设范围内的数据与第二预设范围内的数据进行排序处理,以对第一预设范围内的磁盘文件中的过期数据进行回收处理。其中,第二预设范围所在的数据层为第一预设层所在的数据层的下一层数据层,且第一预设范围内的数据与二预设范围内的数据具有交集。
需要说明的是,该合并指令可以是终端对象触发的,也可以是服务器定期自动触发的。
当一个Compaction被触发时,服务器可以选择相邻层中的某个第一预设范围内的数据进行组织,该第一预设范围内的数据满足涉及的总体数据量不超过第二预设数量阈值,并且涉及的过期数据的比例大于第一预设数量阈值。可选地,该第一预设范围可以是任意一个数据层中的全部数据范围,也可以是任意一个数据层中的部分数据范围。该第一预设数量阈值和第二预设数量阈值可以根据实际业务需求进行设置,对此不作具体限定。例如,过期数据的比例大于第一预设数量阈值,可以指的是该第一预设范围内的过期数据的比例最高等。
服务器可以响应于该合并指令,获取每层数据层所包括的磁盘文件所对应的计数装置的数量,由于维护的计数装置的数量能够准确表达每个数据层中的每个磁盘文件中过期数据的信息,因此根据每层数据层所包括的磁盘文件所对应的计数装置的数量,能够确定任意一个数据层中的某个第一预设范围内的磁盘文件中的过期数据的数量是否大于第一预设数量阈值。
在服务器确定该第一预设范围内的磁盘文件中的过期数据的数量大于第一预设数量阈值的情况下,服务器可以进一步确定该第一预设范围内的磁盘文件中的数据总数量是否小于第二预设数量阈值,若是,则对相邻数据层中的某个范围内的数据进行组织。具体可以为:服务器对该第一预设范围内的数据与第二预设范围内的数据进行排序处理,以对第一预设范围内的磁盘文件中的过期数据进行回收处理。
需要说明的是,由于是对相邻数据层中的某个范围内的数据进行组织,该第二预设范围所在的数据层可以为第一预设层所在的数据层的下一层数据层,且第一预设范围内的数据与二预设范围内的数据具有交集。
由此,能够通过额外增加的触发Compaction的机制对相邻层中某个范围内的数据进行组织,由于第一预设范围内的磁盘文件中的过期数据的数量大于第一预设数量阈值,且第一预设范围内的磁盘文件中的数据总数量小于第二预设数量阈值,因此能够尽可能多地回收过期数据,从而提高过期数据回收的效率。
在其他实施方式中,还可以不为每个磁盘文件维护一个计数装置,直接从每层数据层对应的缓存结构中读取每个磁盘文件中存在的过期数据的数量,并根据读取到的每个磁盘文件中存在的过期数据的数量,对每个磁盘文件中的过期数据进行回收处理。在一种实施方式中,服务器可以直接从每层数据层对应的缓存结构中读取每个磁盘文件中存在的过期数据的数量,在确定某个磁盘文件中的过期数据,与该磁盘文件所包括的总数据量的比例达到一定比例时,对该磁盘文件单独重写处理,以删除过期数据;或者将相邻的几个磁盘文件重写以删除过期数据。在另一种实施方式中,也可以额外增加一个触发Compaction的机制,当Compaction被触发时,选择相邻层中的某个范围内的数据进行组织,以尽可能多地回收过期数据,提高过期数据的回收效率。
以下,对本发明实施例中的数据处理方法进行整体说明:
图6是根据一示例性实施例示出的一种数据处理方法的流程示意图四,如图6所示:
假设LSM树包括8层数据层,分别为L0、L1、L2、L3、L4、L5、L6、L7。
假设同一时对LSM数中储存的Key1对应的目标数据和Key2对应的目标数据进行了写操作,则过期数据为Key1对应的目标数据和Key2对应的目标数据,目标关键字为Key1和Key2。
服务器基于Key1和Key2,获取每层数据层所包括的预设数量个磁盘文件的文件标识信息(SST ID),服务器根据该SST ID获取磁盘文件对应的布隆过滤器信息,以便根据隆过滤器信息查找Key1对应的目标数据和Key2对应的目标数据位于哪一个数据层上的哪一个磁盘文件中。如图6所示,假设Key1对应的目标数据和Key2对应的目标数据位于L6层的磁盘文件1中
在过期数据回收过程中,可以额外增加一个触发Compaction的机制对相邻层中某个范围内的数据进行组织。具体可以为:假设L6层中的第一预设范围(磁盘文件1对应的范围)内的磁盘文件中的过期数据的数量大于第一预设数量阈值,且第一预设范围内的磁盘文件中的数据总数量小于第二预设数量阈值,且L6层中与第一预设范围内的数据与L7层中的第二预设范围内的数据具有交集,则在一个额外的Compaction机制被触发时,服务器可以将L6层中与第一预设范围内的数据,与L7层中的第二预设范围内的数据进行排序处理,以对L6层中位于该第一预设范围内的磁盘文件(即磁盘文件1)中的过期数据进行回收处理,得到目标磁盘文件。
本申请实施例可以应用于分布式数据库管理***中(例如,分布式数据库TDSQL***)。TDSQL分布式数据库***采用了存算分离的架构,且支持分布式事务和分布式存储,本申请实施例针对LSM树中过期数据的回收机制可以用做分布式存储中单个存储节点的过期数据的回收。因为该回收机制能够主动识别过期数据并且在清理过期数据方面更加方便,灵活,能够让TDSQL数据库***在磁盘空间放大以及读写放大方面都有较好的改善。
图7是根据一示例性实施例示出的一种TDSQL分布式数据库***的整体框架图,如图7所示,该TDSQL分布式数据库***可以包括:
计算模块(SQLEngine):采用多主模式,每个SQLEngine均可读写;无状态化设计,根据业务流量的需要,可以随时灵活添加或移除任意数量的计算节点。
存储模块(TDStore):根据业务数据存储量的需求,可以添加或移除分布式存储节点(TDStore节点),并通过数据自动迁移来实现容量的弹性伸缩,业务层无感知。
管控模块(TDMetaCluster):负责调度数据分区的***、合并、迁移和主节点切换;进行存储层的扩缩容调度;实现存储层的负载均衡调度;提供各维度的异常事件告警。
图8是根据一示例性实施例示出的一种单个存储节点的存储框架图。如图8所示,TDSQL作为一个分布式数据库管理***,每个存储节点存储了若干个数据分区的数据,不同数据分区的数据可以在各个存储节点中调度。而具体到单个存储节点,所有数据分区的数据都是存储在一个LSM树中。LSM树通过Compaction程序不断整理在不同层的数据,以达到对存储数据的读写性能均衡。
图9是根据一示例性实施例示出的一种数据处理装置的框图,如图9所示,该数据处理装置包括:
过期数据获取模块201,用于获取针对日志结构合并树中的目标数据的写操作所产生的过期数据;所述日志结构合并树包括至少两层数据层,每层所述数据层包括预设数量个磁盘文件,且每层所述数据层对应有一个缓存结构,每层所述数据层对应的缓存结构用于存储每层所述数据层中的过期数据的元信息。
目标磁盘文件查找模块203,用于确定所述目标数据的关键字为所述过期数据的目标关键字,并基于所述目标关键字从每层所述数据层所包括的预设数量个磁盘文件中,查找所述过期数据所在的目标磁盘文件。
关键字写入模块205,用于将所述目标关键字写入所述目标磁盘文件所在的数据层所对应的缓存结构中;所述目标关键字用于标识所述目标磁盘文件中的过期数据的元信息。
回收模块207,用于根据每层所述数据层所对应的缓存结构中的关键字的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理。
在一个可选的实施例中,上述目标磁盘文件查找模块,包括:
初始磁盘文件确定单元,用于基于所述目标关键字和每层所述数据层所包括的预设数量个磁盘文件在每层所述数据层中的排序位置信息,确定所述过期数据对应的初始磁盘文件。
目标磁盘文件确定单元,用于在基于所述初始磁盘文件的布隆过滤器信息确定所述过期数据存在于所述初始磁盘文件中的情况下,确定所述初始磁盘文件为所述目标磁盘文件。
在一个可选的实施例中,每层候选数据层中的预设数量个磁盘文件按序排列,所述候选数据层为所述至少两层数据层中除第一层数据层之外的数据层;所述初始磁盘文件确定单元,包括:
比较子单元,用于比较所述目标关键字和每层所述候选数据层中处于中间位置的磁盘文件的第一候选关键字。
中间磁盘文件确定子单元,用于在所述目标关键字等于所述第一候选关键字的情况下,确定所述初始磁盘文件为每层所述候选数据层中处于中间位置的磁盘文件。
第一查找子单元,用于在所述目标关键字小于所述第一候选关键字的情况下,从位于所述处于中间位置的磁盘文件之前的磁盘文件中,查找关键字与所述目标关键字相同的磁盘文件,得到所述初始磁盘文件。
第二查找子单元,用于在所述目标关键字大于所述第一候选关键字的情况下,从位于所述处于中间位置的磁盘文件之后的磁盘文件中,查找关键字与所述目标关键字相同的磁盘文件,得到所述初始磁盘文件。
在一个可选的实施例中,所述初始磁盘文件的布隆过滤器信息为长度为预设比特的位数组与预设数量个哈希函数组成的数据结构;所述目标磁盘文件确定单元,包括:
哈希处理子单元,用于通过所述预设数量个哈希函数对所述目标关键字进行哈希处理,得到预设数量个哈希值;
映射子单元,用于将所述目标关键字通过所述预设数量个哈希值映射至所述位数组,得到预设数量个映射结果;
目标磁盘文件生成子单元,用于在所述预设数量个映射结果均为1的情况下,确定所述过期数据存在于所述初始磁盘文件中,并确定所述初始磁盘文件为所述目标磁盘文件。
在一个可选的实施例中,所述装置还包括:
非目标磁盘文件确定模块,用于在所述预设数量个映射结果中的任意一个映射结果为0的情况下,确定所述过期数据不存在于所述初始磁盘文件中,并确定所述初始磁盘文件不为所述目标磁盘文件。
在一个可选的实施例中,所述目标磁盘文件查找模块,包括:
当前数据层确定单元,用于确定所述日志结构合并树的最后一层为当前数据层;所述当前数据层中的预设数量个磁盘文件按序排列;
当前初始磁盘文件确定单元,用于基于所述目标关键字和所述当前数据层中的预设数量个磁盘文件在所述当前数据层的排序位置信息,确定所述过期数据在所述当前数据层中所对应的初始磁盘文件;
重新确定单元,用于在基于所述初始磁盘文件的布隆过滤器信息,确定所述对应的初始磁盘文件的情况下,重新确定当前数据层的上一层数据层为所述当前数据层;
重复单元,用于重复所述基于所述目标关键字和所述当前数据层中的预设数量个磁盘文件在所述当前数据层的排序位置信息,至所述重新确定当前数据层的上一层数据层为所述当前数据层的操作,直至当前数据层为所述日志结构合并树的第一层数据层;
目标磁盘文件确定子单元,用于确定所述第一层数据层中的磁盘文件为所述目标磁盘文件。
在一个可选的实施例中,所述装置还包括:
文件存在确定模块,用于在基于所述初始磁盘文件的布隆过滤器信息,确定所述过期数据存在于所述对应的初始磁盘文件的情况下,确定所述对应的初始磁盘文件为所述目标磁盘文件。
在一个可选的实施例中,所述装置还包括:
计数调整模块,用于将所述目标磁盘文件对应的计数装置的数量加1。
所述回收模块,包括:
回收处理单元,用于根据每层所述数据层所包括的磁盘文件所对应的计数装置的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理。
在一个可选的实施例中,所述回收处理单元,包括:
第一删除子单元,用于在预设磁盘文件所对应的计数装置的数量满足预设条件的情况下,删除所述预设磁盘文件中的过期数据,并将过期数据删除后的预设磁盘文件重新写入磁盘;或者,
第二删除子单元在所述预设磁盘文件所对应的计数装置的数量以及相邻的磁盘文件所对应的计数装置中的数量均满足预设条件的情况下,删除所述预设磁盘文件中的过期数据和所述相邻的磁盘文件中的过期数据,将过期数据删除后的预设磁盘文件和过期数据删除后的相邻的磁盘文件重新写入磁盘;
其中,所述预设磁盘文件为每层所述数据层所包括的磁盘文件中的任意一个文件,所述相邻的磁盘文件为与所述预设磁盘文件相邻的磁盘文件。
在一个可选的实施例中,所述回收处理单元:
响应子单元,用于响应于合并指令,根据每层所述数据层所包括的磁盘文件所对应的计数装置的数量,确定第一预设范围内的磁盘文件中的过期数据的数量是否大于第一预设数量阈值;所述第一预设范围为所述至少两层数据层中的任意一个数据层中的数据范围;
排序处理子单元,用于在确定所述第一预设范围内的磁盘文件中的过期数据的数量大于所述第一预设数量阈值,且所述第一预设范围内的磁盘文件中的数据总数量小于第二预设数量阈值的情况下,将所述第一预设范围内的数据与第二预设范围内的数据进行排序处理,以对所述第一预设范围内的磁盘文件中的过期数据进行回收处理;
其中,所述第二预设范围所在的数据层为所述第一预设范围所在的数据层的下一层数据层,且所述第一预设范围内的数据与所述第二预设范围内的数据具有交集。
需要说明的是,本申请实施例提供的装置实施例与上述方法实施例基于相同的发明构思。
本申请实施例还提供了一种数据处理的电子设备,该电子设备包括处理器和存储器,存储器中存储有至少一条指令或至少一段程序,至少一条指令或至少一段程序由处理器加载并执行以实现如上述任一实施例提供的数据处理方法。
本申请的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,该至少一条指令或至少一段程序由处理器加载并执行以实现如上述方法实施例提供的数据处理方法。
可选地,在本说明书实施例中,存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书实施例存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用程序以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、功能所需的应用程序等;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方法实施例提供的数据处理方法。
本申请实施例所提供的数据处理方法的实施例可以在终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图10是根据一示例性实施例提供的一种服务器的硬件结构框图。如图10所示,该服务器300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以***处理器(Central Processing Units,CPU)310(中央处理器310可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器330,一个或一个以上存储应用程序323或数据322的存储介质320(例如一个或一个以上海量存储设备)。其中,存储器330和存储介质320可以是短暂存储或持久存储。存储在存储介质320的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器310可以设置为与存储介质320通信,在服务器300上执行存储介质320中的一系列指令操作。服务器300还可以包括一个或一个以上电源360,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口340,和/或,一个或一个以上操作***321,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口340可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器300的通信供应商提供的无线网络。在一个实例中,输入输出接口340包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口340可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器300还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (20)
1.一种数据处理方法,其特征在于,所述方法包括:
获取针对日志结构合并树中的目标数据的写操作所产生的过期数据;所述日志结构合并树包括至少两层数据层,每层所述数据层包括预设数量个磁盘文件,且每层所述数据层对应有一个缓存结构,每层所述数据层对应的缓存结构用于存储每层所述数据层中的过期数据的元信息;
确定所述目标数据的关键字为所述过期数据的目标关键字,并基于所述目标关键字从每层所述数据层所包括的预设数量个磁盘文件中,查找所述过期数据所在的目标磁盘文件;在按照所述日志结构合并树中的每层数据层的顺序,依次进行二分查找和布隆过滤器操作的情况下,所述基于所述目标关键字从每层所述数据层所包括的预设数量个磁盘文件中,查找所述过期数据所在的目标磁盘文件,包括:确定所述日志结构合并树的最后一层为当前数据层;所述当前数据层中的预设数量个磁盘文件按序排列;基于所述目标关键字和所述当前数据层中的预设数量个磁盘文件在所述当前数据层的排序位置信息,确定所述过期数据在所述当前数据层中所对应的初始磁盘文件;在基于所述对应的初始磁盘文件的布隆过滤器信息,确定所述过期数据不存在于所述对应的初始磁盘文件的情况下,重新确定当前数据层的上一层数据层为所述当前数据层;重复所述基于所述目标关键字和所述当前数据层中的预设数量个磁盘文件在所述当前数据层的排序位置信息,至所述重新确定当前数据层的上一层数据层为所述当前数据层的操作,直至当前数据层为所述日志结构合并树的第一层数据层;确定所述第一层数据层中的磁盘文件为所述目标磁盘文件;
将所述目标关键字写入所述目标磁盘文件所在的数据层所对应的缓存结构中;所述目标关键字用于标识所述目标磁盘文件中的过期数据的元信息;
根据每层所述数据层所对应的缓存结构中的关键字的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理。
2.根据权利要求1所述的数据处理方法,其特征在于,在并行对所述日志结构合并树中的每层数据层进行二分查找和布隆过滤器操作,或者按照随机顺序,对所述日志结构合并树中的每层数据层进行二分查找和布隆过滤器操作的情况下,所述基于所述目标关键字从每层所述数据层所包括的预设数量个磁盘文件中,查找所述过期数据所在的目标磁盘文件,包括:
基于所述目标关键字和每层所述数据层所包括的预设数量个磁盘文件在每层所述数据层中的排序位置信息,确定所述过期数据对应的初始磁盘文件;
在基于所述初始磁盘文件的布隆过滤器信息确定所述过期数据存在于所述初始磁盘文件中的情况下,确定所述初始磁盘文件为所述目标磁盘文件。
3.根据权利要求2所述的数据处理方法,其特征在于,每层候选数据层中的预设数量个磁盘文件按序排列,所述候选数据层为所述至少两层数据层中除第一层数据层之外的数据层;所述基于所述目标关键字和每层所述数据层所包括的预设数量个磁盘文件在每层所述数据层中的排序位置信息,确定所述过期数据对应的初始磁盘文件,包括:
比较所述目标关键字和每层所述候选数据层中处于中间位置的磁盘文件的第一候选关键字;
在所述目标关键字等于所述第一候选关键字的情况下,确定所述初始磁盘文件为每层所述候选数据层中处于中间位置的磁盘文件;
在所述目标关键字小于所述第一候选关键字的情况下,从位于所述处于中间位置的磁盘文件之前的磁盘文件中,查找关键字与所述目标关键字相同的磁盘文件,得到所述初始磁盘文件;
在所述目标关键字大于所述第一候选关键字的情况下,从位于所述处于中间位置的磁盘文件之后的磁盘文件中,查找关键字与所述目标关键字相同的磁盘文件,得到所述初始磁盘文件。
4.根据权利要求2所述的数据处理方法,其特征在于,所述初始磁盘文件的布隆过滤器信息为长度为预设比特的位数组与预设数量个哈希函数组成的数据结构;所述在基于所述初始磁盘文件的布隆过滤器信息确定所述过期数据存在于所述初始磁盘文件中的情况下,确定所述初始磁盘文件为所述目标磁盘文件,包括:
通过所述预设数量个哈希函数对所述目标关键字进行哈希处理,得到预设数量个哈希值;
将所述目标关键字通过所述预设数量个哈希值映射至所述位数组,得到预设数量个映射结果;
在所述预设数量个映射结果均为1的情况下,确定所述过期数据存在于所述初始磁盘文件中,并确定所述初始磁盘文件为所述目标磁盘文件。
5.根据权利要求4所述的数据处理方法,其特征在于,所述方法还包括:
在所述预设数量个映射结果中的任意一个映射结果为0的情况下,确定所述过期数据不存在于所述初始磁盘文件中,并确定所述初始磁盘文件不为所述目标磁盘文件。
6.根据权利要求1所述的数据处理方法,其特征在于,所述方法还包括:
在基于所述对应的初始磁盘文件的布隆过滤器信息,确定所述过期数据存在于所述对应的初始磁盘文件的情况下,确定所述对应的初始磁盘文件为所述目标磁盘文件。
7.根据权利要求1至5中任一项所述的数据处理方法,其特征在于,在每层所述数据层为每个所述磁盘文件设置对应的计数装置;在所述将所述目标关键字写入所述目标磁盘文件所在的数据层所对应的缓存结构中之后,所述方法还包括:
将所述目标磁盘文件对应的计数装置的数量加1;
所述根据每层所述数据层所对应的缓存结构中的关键字的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理,包括:
根据每层所述数据层所包括的磁盘文件所对应的计数装置的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理。
8.根据权利要求7所述的数据处理方法,其特征在于,所述根据每层所述数据层所包括的磁盘文件所对应的计数装置的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理,包括:
在预设磁盘文件所对应的计数装置的数量满足预设条件的情况下,删除所述预设磁盘文件中的过期数据,并将过期数据删除后的预设磁盘文件重新写入磁盘;或者,
在所述预设磁盘文件所对应的计数装置的数量以及相邻的磁盘文件所对应的计数装置中的数量均满足预设条件的情况下,删除所述预设磁盘文件中的过期数据和所述相邻的磁盘文件中的过期数据,将过期数据删除后的预设磁盘文件和过期数据删除后的相邻的磁盘文件重新写入磁盘;
其中,所述预设磁盘文件为每层所述数据层所包括的磁盘文件中的任意一个文件,所述相邻的磁盘文件为与所述预设磁盘文件相邻的磁盘文件。
9.根据权利要求7所述的数据处理方法,其特征在于,所述根据每层所述数据层所包括的磁盘文件所对应的计数装置的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理,包括:
响应于合并指令,根据每层所述数据层所包括的磁盘文件所对应的计数装置的数量,确定第一预设范围内的磁盘文件中的过期数据的数量是否大于第一预设数量阈值;所述第一预设范围为所述至少两层数据层中的任意一个数据层中的数据范围;
在确定所述第一预设范围内的磁盘文件中的过期数据的数量大于所述第一预设数量阈值,且所述第一预设范围内的磁盘文件中的数据总数量小于第二预设数量阈值的情况下,将所述第一预设范围内的数据与第二预设范围内的数据进行排序处理,以对所述第一预设范围内的磁盘文件中的过期数据进行回收处理;
其中,所述第二预设范围所在的数据层为所述第一预设范围所在的数据层的下一层数据层,且所述第一预设范围内的数据与所述第二预设范围内的数据具有交集。
10.一种数据处理装置,其特征在于,所述装置包括:
过期数据获取模块,用于获取针对日志结构合并树中的目标数据的写操作所产生的过期数据;所述日志结构合并树包括至少两层数据层,每层所述数据层包括预设数量个磁盘文件,且每层所述数据层对应有一个缓存结构,每层所述数据层对应的缓存结构用于存储每层所述数据层中的过期数据的元信息;
目标磁盘文件查找模块,用于确定所述目标数据的关键字为所述过期数据的目标关键字,并基于所述目标关键字从每层所述数据层所包括的预设数量个磁盘文件中,查找所述过期数据所在的目标磁盘文件;在按照所述日志结构合并树中的每层数据层的顺序,依次进行二分查找和布隆过滤器操作的情况下,所述目标磁盘文件查找模块,包括:当前数据层确定单元,用于确定所述日志结构合并树的最后一层为当前数据层;所述当前数据层中的预设数量个磁盘文件按序排列;当前初始磁盘文件确定单元,用于基于所述目标关键字和所述当前数据层中的预设数量个磁盘文件在所述当前数据层的排序位置信息,确定所述过期数据在所述当前数据层中所对应的初始磁盘文件;重新确定单元,用于在基于所述初始磁盘文件的布隆过滤器信息,确定所述过期数据不存在于所述对应的初始磁盘文件的情况下,重新确定当前数据层的上一层数据层为所述当前数据层;重复单元,用于重复所述基于所述目标关键字和所述当前数据层中的预设数量个磁盘文件在所述当前数据层的排序位置信息,至所述重新确定当前数据层的上一层数据层为所述当前数据层的操作,直至当前数据层为所述日志结构合并树的第一层数据层;目标磁盘文件确定子单元,用于确定所述第一层数据层中的磁盘文件为所述目标磁盘文件;
关键字写入模块,用于将所述目标关键字写入所述目标磁盘文件所在的数据层所对应的缓存结构中;所述目标关键字用于标识所述目标磁盘文件中的过期数据的元信息;
回收模块,用于根据每层所述数据层所对应的缓存结构中的关键字的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理。
11.根据权利要求10所述的数据处理装置,其特征在于,在并行对所述日志结构合并树中的每层数据层进行二分查找和布隆过滤器操作,或者按照随机顺序,对所述日志结构合并树中的每层数据层进行二分查找和布隆过滤器操作的情况下,所述目标磁盘文件查找模块,包括:
初始磁盘文件确定单元,用于基于所述目标关键字和每层所述数据层所包括的预设数量个磁盘文件在每层所述数据层中的排序位置信息,确定所述过期数据对应的初始磁盘文件;
目标磁盘文件确定单元,用于在基于所述初始磁盘文件的布隆过滤器信息确定所述过期数据存在于所述初始磁盘文件中的情况下,确定所述初始磁盘文件为所述目标磁盘文件。
12.根据权利要求11所述的数据处理装置,其特征在于,每层候选数据层中的预设数量个磁盘文件按序排列,所述候选数据层为所述至少两层数据层中除第一层数据层之外的数据层;所述初始磁盘文件确定单元,包括:
比较子单元,用于比较所述目标关键字和每层所述候选数据层中处于中间位置的磁盘文件的第一候选关键字;
中间磁盘文件确定子单元,用于在所述目标关键字等于所述第一候选关键字的情况下,确定所述初始磁盘文件为每层所述候选数据层中处于中间位置的磁盘文件;
第一查找子单元,用于在所述目标关键字小于所述第一候选关键字的情况下,从位于所述处于中间位置的磁盘文件之前的磁盘文件中,查找关键字与所述目标关键字相同的磁盘文件,得到所述初始磁盘文件;
第二查找子单元,用于在所述目标关键字大于所述第一候选关键字的情况下,从位于所述处于中间位置的磁盘文件之后的磁盘文件中,查找关键字与所述目标关键字相同的磁盘文件,得到所述初始磁盘文件。
13.根据权利要求10所述的数据处理装置,其特征在于,所述初始磁盘文件的布隆过滤器信息为长度为预设比特的位数组与预设数量个哈希函数组成的数据结构;所述目标磁盘文件确定单元,包括:
哈希处理子单元,用于通过所述预设数量个哈希函数对所述目标关键字进行哈希处理,得到预设数量个哈希值;
映射子单元,用于将所述目标关键字通过所述预设数量个哈希值映射至所述位数组,得到预设数量个映射结果;
目标磁盘文件生成子单元,用于在所述预设数量个映射结果均为1的情况下,确定所述过期数据存在于所述初始磁盘文件中,并确定所述初始磁盘文件为所述目标磁盘文件。
14.根据权利要求13所述的数据处理装置,其特征在于,所述装置还包括:
非目标磁盘文件确定模块,用于在所述预设数量个映射结果中的任意一个映射结果为0的情况下,确定所述过期数据不存在于所述初始磁盘文件中,并确定所述初始磁盘文件不为所述目标磁盘文件。
15.根据权利要求10所述的数据处理装置,其特征在于,所述装置还包括:
文件存在确定模块,用于在基于所述初始磁盘文件的布隆过滤器信息,确定所述过期数据存在于所述对应的初始磁盘文件的情况下,确定所述对应的初始磁盘文件为所述目标磁盘文件。
16.根据权利要求10至15中任一项所述的数据处理装置,其特征在于,所述装置还包括:
计数调整模块,用于将所述目标磁盘文件对应的计数装置的数量加1;
所述回收模块,包括:
回收处理单元,用于根据每层所述数据层所包括的磁盘文件所对应的计数装置的数量,对每层所述数据层所包括的磁盘文件中的过期数据进行回收处理。
17.根据权利要求16所述的数据处理装置,其特征在于,所述回收处理单元,包括:
第一删除子单元,用于在预设磁盘文件所对应的计数装置的数量满足预设条件的情况下,删除所述预设磁盘文件中的过期数据,并将过期数据删除后的预设磁盘文件重新写入磁盘;或者,
第二删除子单元,用于在所述预设磁盘文件所对应的计数装置的数量以及相邻的磁盘文件所对应的计数装置中的数量均满足预设条件的情况下,删除所述预设磁盘文件中的过期数据和所述相邻的磁盘文件中的过期数据,将过期数据删除后的预设磁盘文件和过期数据删除后的相邻的磁盘文件重新写入磁盘;
其中,所述预设磁盘文件为每层所述数据层所包括的磁盘文件中的任意一个文件,所述相邻的磁盘文件为与所述预设磁盘文件相邻的磁盘文件。
18.根据权利要求16所述的数据处理装置,其特征在于,所述回收处理单元,包括:
响应子单元,用于响应于合并指令,根据每层所述数据层所包括的磁盘文件所对应的计数装置的数量,确定第一预设范围内的磁盘文件中的过期数据的数量是否大于第一预设数量阈值;所述第一预设范围为所述至少两层数据层中的任意一个数据层中的数据范围;
排序处理子单元,用于在确定所述第一预设范围内的磁盘文件中的过期数据的数量大于所述第一预设数量阈值,且所述第一预设范围内的磁盘文件中的数据总数量小于第二预设数量阈值的情况下,将所述第一预设范围内的数据与第二预设范围内的数据进行排序处理,以对所述第一预设范围内的磁盘文件中的过期数据进行回收处理;
其中,所述第二预设范围所在的数据层为所述第一预设范围所在的数据层的下一层数据层,且所述第一预设范围内的数据与所述第二预设范围内的数据具有交集。
19.一种数据处理的电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行如权利要求1至9中任一项所述的数据处理方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或至少一段程序由处理器加载并执行以实现如权利要求1至9中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279539.0A CN117009439B (zh) | 2023-10-07 | 2023-10-07 | 数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311279539.0A CN117009439B (zh) | 2023-10-07 | 2023-10-07 | 数据处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117009439A CN117009439A (zh) | 2023-11-07 |
CN117009439B true CN117009439B (zh) | 2024-01-23 |
Family
ID=88567578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311279539.0A Active CN117009439B (zh) | 2023-10-07 | 2023-10-07 | 数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117009439B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306369A (zh) * | 2019-07-29 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
US11093453B1 (en) * | 2017-08-31 | 2021-08-17 | EMC IP Holding Company LLC | System and method for asynchronous cleaning of data objects on cloud partition in a file system with deduplication |
CN115237345A (zh) * | 2022-07-15 | 2022-10-25 | 阿里巴巴(中国)有限公司 | 一种垃圾数据回收方法、装置、电子设备及可读存储介质 |
CN115509446A (zh) * | 2022-09-16 | 2022-12-23 | 新华三技术有限公司 | 元数据垃圾识别方法、装置和设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230229651A1 (en) * | 2022-01-19 | 2023-07-20 | Pliops Ltd. | Updating a log structured merged tree |
-
2023
- 2023-10-07 CN CN202311279539.0A patent/CN117009439B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11093453B1 (en) * | 2017-08-31 | 2021-08-17 | EMC IP Holding Company LLC | System and method for asynchronous cleaning of data objects on cloud partition in a file system with deduplication |
CN112306369A (zh) * | 2019-07-29 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
CN115237345A (zh) * | 2022-07-15 | 2022-10-25 | 阿里巴巴(中国)有限公司 | 一种垃圾数据回收方法、装置、电子设备及可读存储介质 |
CN115509446A (zh) * | 2022-09-16 | 2022-12-23 | 新华三技术有限公司 | 元数据垃圾识别方法、装置和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117009439A (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11474972B2 (en) | Metadata query method and apparatus | |
US9575976B2 (en) | Methods and apparatuses to optimize updates in a file system based on birth time | |
US7856437B2 (en) | Storing nodes representing respective chunks of files in a data store | |
US7725437B2 (en) | Providing an index for a data store | |
US7117294B1 (en) | Method and system for archiving and compacting data in a data storage array | |
US8261020B2 (en) | Cache enumeration and indexing | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
CN113906406A (zh) | 数据库管理*** | |
CN114253908A (zh) | 键值存储***的数据管理方法及其装置 | |
CN111917834A (zh) | 一种数据同步方法、装置、存储介质及计算机设备 | |
CN110716924B (zh) | 删除过期数据的方法和装置 | |
CN114610708A (zh) | 一种向量数据处理方法及装置、电子设备及存储介质 | |
CN106649530B (zh) | 云详单查询管理***及方法 | |
US10558636B2 (en) | Index page with latch-free access | |
US6606631B1 (en) | IMS on-line reorganization utility | |
US10416901B1 (en) | Storage element cloning in presence of data storage pre-mapper with multiple simultaneous instances of volume address using virtual copies | |
CN107133334B (zh) | 基于高带宽存储***的数据同步方法 | |
CN114595286A (zh) | 一种数据同步方法、装置、电子设备及存储介质 | |
Kvet et al. | Relational pre-indexing layer supervised by the DB_index_consolidator Background Process | |
CN117009439B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
JP2001282599A (ja) | データ管理方法および装置並びにデータ管理プログラムを格納した記録媒体 | |
CN111694806A (zh) | 一种事务日志的缓存方法、装置、设备和存储介质 | |
US10209909B1 (en) | Storage element cloning in presence of data storage pre-mapper | |
CN115576947A (zh) | 一种数据管理方法、装置、组合库、电子设备及存储介质 | |
CN115469810A (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 |