CN116595015A - 数据处理方法、装置、设备及存储介质 - Google Patents
数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116595015A CN116595015A CN202310880889.6A CN202310880889A CN116595015A CN 116595015 A CN116595015 A CN 116595015A CN 202310880889 A CN202310880889 A CN 202310880889A CN 116595015 A CN116595015 A CN 116595015A
- Authority
- CN
- China
- Prior art keywords
- storage
- key value
- range
- level sub
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003860 storage Methods 0.000 title claims abstract description 603
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 112
- 238000000034 method Methods 0.000 claims abstract description 56
- 238000007906 compression Methods 0.000 claims description 39
- 230000006835 compression Effects 0.000 claims description 39
- 238000005192 partition Methods 0.000 claims description 36
- 239000012634 fragment Substances 0.000 claims description 31
- 238000009826 distribution Methods 0.000 claims description 18
- 238000000638 solvent extraction Methods 0.000 claims description 7
- 238000012790 confirmation Methods 0.000 claims description 3
- 238000012216 screening Methods 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 12
- 238000013500 data storage Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 8
- 230000008521 reorganization Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- 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
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种数据处理方法、装置、设备及存储介质。
背景技术
键值(key value)存储是一种非关系型数据库模型,它使用简单的键值对来组织、索引和存储数据。它具有高性能、灵活性和可扩展性的特点。
相关技术中,在通过树组件处理键值对存储请求的过程中,仅以树组件中的各个多层存储树对键值处理范围进行划分,得到各个多层存储树对应的第一存储范围,从而根据键值,将数据存入对应的第一存储范围内的内存表中,并且只有在第一存储范围内的所有内存表均无剩余存储空间的情况下,才会对整个第一存储范围内的全部内存表中的键值数据进行压缩处理,导致出现键值数据写入停顿的问题,并且存储范围划分尺度较粗,不利于对键值数据进行管理。
发明内容
本申请实施例提供了一种数据处理方法、装置、设备及存储介质,能够提高键值对的存储效率。所述技术方案如下。
一方面,本申请实施例提供了一种数据处理方法,所述方法包括:
在接收到键值对存储请求的情况下,从所述键值对存储请求中获取待存储键值对的第一键值;
基于所述第一键值以及组件配置信息,确定用于处理所述键值对存储请求的第一树组件,所述组件配置信息表征各个树组件与各个键值处理范围之间的分配关系,不同树组件负责处理不同键值范围对应的键值对存储请求;
基于所述第一键值,确定所述第一树组件中用于存储所述待存储键值对的第一存储范围,所述第一树组件维护多个多层存储树,所述多层存储树与所述第一存储范围一一对应,所述第一存储范围中还包括多个第一级子存储范围,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围基于各个第一级子存储范围的写入负载动态变化;
基于所述第一键值,确定所述待存储键值对对应的第一级子存储范围,并将所述待存储键值对存储至所述第一级子存储范围内的内存表中。
另一方面,本申请实施例提供了一种数据处理装置,所述装置包括:
第一获取模块,用于在接收到键值对存储请求的情况下,从所述键值对存储请求中获取待存储键值对的第一键值;
第一确定模块,用于基于所述第一键值以及组件配置信息,确定用于处理所述键值对存储请求的第一树组件,所述组件配置信息表征各个树组件与各个键值处理范围之间的分配关系,不同树组件负责处理不同键值范围对应的键值对存储请求;
第二确定模块,用于基于所述第一键值,确定所述第一树组件中用于存储所述待存储键值对的第一存储范围,所述第一树组件维护多个多层存储树,所述多层存储树与所述第一存储范围一一对应,所述第一存储范围中还包括多个第一级子存储范围,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围基于各个第一级子存储范围的写入负载动态变化;
第一存储模块,用于基于所述第一键值,确定所述待存储键值对对应的第一级子存储范围,并将所述待存储键值对存储至所述第一级子存储范围内的内存表中。
另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上述方面所述的数据处理方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上述方面所述的数据处理方法。
另一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面提供的数据处理方法。
本申请实施例中,设置有多个树组件用于处理键值对存储请求,且各个树组件中维护有多个多层存储树,每个多层存储树与第一存储范围一一对应,并且为了便于对键值对数据进行压缩存储和管理,在第一存储范围中又细分了多个第一级子存储范围,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围基于各个第一级子存储范围的写入负载动态变化,从而在接收到键值对存储请求的情况下,可以根据键值对存储请求中待存储键值对的第一键值,确定处理该键值对存储请求的第一树组件,并根据第一键值,确定第一存储范围以及第一级子存储范围,进而将待存储键值对存储至第一级子存储范围内的内存表中,提高了对键值对的存储效率,优化了数据处理和管理的过程。
附图说明
图1示出了本申请一个示例性实施例提供的实施环境的示意图;
图2示出了本申请一个示例性实施例提供的数据处理方法的流程图;
图3示出了本申请另一个示例性实施例提供的数据处理方法的流程图;
图4示出了本申请一个示例性实施例提供的对字符串表内的数据进行压缩处理的示意图;
图5示出了本申请一个示例性实施例提供的划分数据片段以及存储组件的示意图;
图6示出了本申请一个示例性实施例提供的将数据片段存储至存储组件的流程图;
图7示出了本申请一个示例性实施例提供的组件结构图;
图8示出了本申请一个示例性实施例提供的树组件的存储范围划分示意图;
图9示出了本申请一个示例性实施例提供的查找索引以及范围索引的示意图;
图10示出了本申请一个示例性实施例提供的数据处理装置的结构框图;
图11示出了本申请一个示例性实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,对本申请实施例中涉及的名词进行介绍。
树(Tree)组件:用于处理应用程序的请求并管理数据的存储,系统将数据范围划分到树组件中。物理上树组件以不同的方式组织范围的内存表和排序字符串表,比如,将范围及其排序字符串表分配给一个存储组件;将范围的排序字符串表分配给不同的存储组件,其中一个排序字符串表分配给一个存储组件;或将范围的排序字符串表分配给不同的存储组件,并将每个排序字符串表的块分散在多个存储组件之间。树组件可以使用复制、基于奇偶性的技术或两者的混合来增强在存储组件故障存在的情况下数据的可用性。
多层存储树:是一种层级化的日志存储结构,用于实现持久化的多节点键值存储。多层存储树不直接原地更新磁盘中的日志,而是先使用内存中的记忆表暂存写入数据,然后使用顺序磁盘I/O将其刷新到排序字符串表中。
日志(Log)组件:用于生成日志记录并将其写入存储组件中进行持久化。也可以配置为支持高可用,通过将日志记录复制到内存中实现最快的服务时间。当 CPU 资源被充分利用时,日志记录可能会对吞吐量产生影响。
存储(Storage)组件:用于存储、检索和管理可变大小的块。速度取决于存储设备的选择以及它们是否组织成一个层次结构。存储组件文件采用追加方式进行写入,提供变量大小的块接口,并且文件由全局唯一的文件ID标识。客户端在打开文件时,存储组件在其内存中分配一个缓冲区,并将文件句柄返回给客户端,文件句柄包含文件ID、内存缓冲区的偏移量和其大小。客户端直接写入数据块到存储组件的内存缓冲区中,当客户端读取数据块时,首先在其本地内存中分配一个缓冲区,接下来存储组件将块写入其缓冲区。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
请参考图1,其示出了本申请一个示例性实施例提供的实施环境的示意图。该实施环境可以包括:终端110和服务器120。
终端110是具有数据写入和存储功能的电子设备,其中,该数据写入和存储功能可以为终端中原生应用的功能,或者,第三方应用的功能;该电子设备可以是智能手机、平板电脑、个人计算机、可穿戴式设备或车载终端等等。
图1中,以终端110为智能手机,且安装有支持数据写入和存储功能的应用程序为例进行说明,但并不对此构成限定。
图1中仅示出了一个终端,但在不同实施例中存在多个其它终端可以接入服务器120。终端110以及其它终端通过无线网络或有线网络与服务器120相连。
服务器120包括一台服务器、多台服务器组成的服务器集群、云计算平台和虚拟化中心中的至少一种。服务器120用于为支持数据写入和存储功能的应用程序提供后台服务。可选地,服务器120承担主要计算工作,终端承担次要计算工作;或者,服务器120承担次要计算工作,终端承担主要计算工作;或者,服务器120和终端之间采用分布式计算架构进行协同计算。
服务器120可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一种可能的实施方式中,以本申请实施例提供的数据处理方法应用于游戏应用程序中为例对相应的实施环境进行说明。服务器120包括存储器121、处理器122、用户账号数据库123、虚拟对象数据库124、面向用户的输入/输出接口(Input/Output Interface,I/O接口)125。其中,存储器121为内存存储器,处理器122用于加载服务器120中存储的指令、处理用户账号数据库123和虚拟对象数据库124;用户账号数据库123用于存储终端110以及其它终端所使用的用户账号的数据,比如用户账号的头像、用户账号的昵称等;虚拟对象数据库124用于存储各个用户账号所创建的虚拟对象的对象数据;面向用户的I/O接口125用于通过无线网络或有线网络和终端110建立通信交换数据,从而实现账号之间消息的收发。
可选的,服务器120中的用户账号数据库123以及虚拟对象数据库124均为键值数据库,即用户账号数据库123以及虚拟对象数据库124中的数据均以键值对的形式存储。
在一种可能的实施方式中,在终端110接收到用户的账号创建操作的情况下,终端110即根据账号创建操作生成对应的键值数据,并向服务器120发送键值对存储请求,进而服务器120在接收到键值对存储请求的情况下,即从该键值对存储请求中获取待存储键值对的第一键值,从而根据第一键值以及组件配置信息,确定用于处理该键值对存储请求的第一树组件,并确定第一树组件中用于存储待存储键值对的第一存储范围,进而基于第一键值,确定待存储键值对对应的第一级子存储范围,并将待存储键值对存储至第一级子存储范围内的内存表中。
请参考图2,其示出了本申请一个示例性实施例提供的数据处理方法的流程图,本实施例以该方法用于计算机设备为例进行说明,该方法包括如下步骤。
步骤201,在接收到键值对存储请求的情况下,从键值对存储请求中获取待存储键值对的第一键值。
在一种可能的实施方式中,可以通过向计算机设备发送键值对存储请求,由计算机设备进行键值对数据存储。在接收到键值对存储请求的情况下,计算机设备则可以从键值对存储请求中获取待存储键值对的第一键值。
可选的,键值对存储请求中包括待存储键值对的第一键值和第一数据值,该第一键值可以是计算机设备中已存储的键值,也可以是未存储的键值。
步骤202,基于第一键值以及组件配置信息,确定用于处理键值对存储请求的第一树组件,组件配置信息表征各个树组件与各个键值处理范围之间的分配关系,不同树组件负责处理不同键值范围对应的键值对存储请求。
可选的,计算机设备管理多个树组件,不同树组件负责处理不同键值范围对应的键值对存储请求。在一种可能的实施方式中,为了及时对键值对存储请求进行处理,计算机设备可以预先对各个树组件负责处理的键值范围进行划分,生成组件配置信息,该组件配置信息表征各个树组件与各个键值处理范围之间的分配关系。
可选的,计算机设备中设置有协调器,用于为各个树组件分配键值处理范围。在一种可能的实施方式中,协调器和各个树组件之间定期交换心跳信息,树组件可以通过无限期地向协调器发送租约请求来获取对应的键值处理范围,从而协调器根据接收到的租约请求,向各个树组件分配对应的键值处理范围的租约。此外,在树组件对应的键值处理范围的旧租约到期,且未继续向协调器发送新的租约请求的情况下,协调器可以重新将该键值处理范围分配给其他进行租约请求的树组件。
在一种可能的实施方式中,在获取键值对存储请求中待存储键值对的第一键值之后,计算机设备则可以根据该第一键值,确定用于处理该键值对存储请求的第一树组件。
步骤203,基于第一键值,确定第一树组件中用于存储待存储键值对的第一存储范围,第一树组件维护多个多层存储树,多层存储树与第一存储范围一一对应,第一存储范围中还包括多个第一级子存储范围,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围基于各个第一级子存储范围的写入负载动态变化。
可选的,各个树组件中维护有多个多层存储树,且每个多层存储树与第一存储范围一一对应。不同于相关技术中,计算机设备根据键值将键值对直接存储在第一存储范围对应的内存表中,且只有第一存储范围内的所有内存表的存储空间都已满的情况下,计算机设备才会对数据进行压缩处理并存入磁盘,导致数据存入内存表的过程中存在写入停顿的问题,本申请实施例中,在第一存储范围内又划分了多个第一级子存储范围,其中,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围都是基于各个第一级子存储范围的写入负载动态变化的,从而在其中一个第一级子存储范围内的内存表的存储空间已满的情况下,计算机设备可以仅对该第一级子存储范围内的内存表数据进行压缩处理,而不影响将其他键值数据存储至其他第一级子存储范围内的内存表中。
在一种可能的实施方式中,在确定用于处理键值对存储请求的第一树组件之后,计算机设备则进一步根据第一键值,确定第一树组件中用于存储待存储键值对的第一存储范围。
步骤204,基于第一键值,确定待存储键值对对应的第一级子存储范围,并将待存储键值对存储至第一级子存储范围内的内存表中。
在一种可能的实施方式中,在确定第一树组件中用于存储待存储键值对的第一存储范围之后,计算机设备则进一步根据第一键值,确定待存储键值对对应的第一级子存储范围,从而将待存储键值对存储至第一级子存储范围内的内存表中。
可选的,第一级子存储范围内的内存表数量可以相同,也可以不同,本申请实施例对此不作限定。
综上所述,本申请实施例中,设置有多个树组件用于处理键值对存储请求,且各个树组件中维护有多个多层存储树,每个多层存储树与第一存储范围一一对应,并且为了便于对键值对数据进行压缩存储和管理,在第一存储范围中又细分了多个第一级子存储范围,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围基于各个第一级子存储范围的写入负载动态变化,从而在接收到键值对存储请求的情况下,可以根据键值对存储请求中待存储键值对的第一键值,确定处理该键值对存储请求的第一树组件,并根据第一键值,确定第一存储范围以及第一级子存储范围,进而将待存储键值对存储至第一级子存储范围内的内存表中,提高了对键值对的存储效率,优化了数据处理和管理的过程。
在一种可能的实施方式中,考虑到第一级子存储范围内通常设置有多个内存表,且各个第一级子存储范围对应的键值范围都是基于各个第一级子存储范围的写入负载动态变化的,因此为了便于管理存储至内存表中的键值数据,计算机设备还可以将第一级子存储范围内的内存表划分为可用内存表和不可内存表,以实现对键值数据的有序存储。
请参考图3,其示出了本申请一个示例性实施例提供的数据处理方法的流程图,本实施例以该方法用于计算机设备为例进行说明,该方法包括如下步骤。
步骤301,在接收到键值对存储请求的情况下,从键值对存储请求中获取待存储键值对的第一键值。
步骤302,基于第一键值以及组件配置信息,确定用于处理键值对存储请求的第一树组件。
步骤303,基于第一键值,确定第一树组件中用于存储待存储键值对的第一存储范围。
步骤301~303的具体实施方式可以参考步骤201~203,本实施例在此不作赘述。
步骤304,基于第一键值,确定第一存储范围中用于存储待存储键值对的第一级子存储范围。
在一种可能的实施方式中,考虑到不同的第一级子存储范围负责存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围都是基于各个第一级子存储范围的写入负载动态变化的,计算机设备可以先在第一存储范围中确定用于存储待存储键值对的第一级子存储范围。
可选的,第一级子存储范围内包括多个内存表,且各个内存表对应的存储空间是相同的。在内存表内存在剩余存储空间的情况下,该内存表即为可用内存表;在内存表内不存在剩余存储空间的情况下,该内存表即为不可用内存表,并且可用内存表和不可用内存表之间可以根据数据压缩转换情况进行切换。
步骤305,在第一级子存储范围中存在第一可用内存表,且第一可用内存表的剩余存储空间不小于待存储键值对所需存储空间的情况下,将待存储键值对存储至第一可用内存表内。
在一种可能的实施方式中,在第一级子存储范围中存在第一可用内存表,且第一可用内存表的剩余存储空间不小于待存储键值对所需存储空间的情况下,计算机设备则可以直接将待存储键值对存储至第一可用内存表中。
步骤306,在第一级子存储范围中不存在第一可用内存表,或第一可用内存表的剩余存储空间小于待存储键值对所需存储空间的情况下,刷新第一级子存储范围中的多个不可用内存表,以删除不可用内存表中存储的各个键值对应的重复数据值并保留最新数据值,不可用内存表为存储空间已满的内存表。
在一种可能的实施方式中,在进行键值数据存储的过程中,考虑到是根据键值对的键值以及接收到键值对存储请求的时间,对键值对进行存储,即第一级子存储范围内可能存在同一键值对应多个新旧不一的数据值,因此为了提高对键值数据的存储效率,减少存储空间的浪费,计算机设备可以在第一子存储范围中不存在第一可用内存表,或第一可用内存表的剩余存储空间小于待存储键值对所需存储空间的情况下,对第一级子存储范围中的多个不可用内存表进行刷新,以删除不可用内存表中存储的各个键值对应的重复数据值,并保留最新数据值。
可选的,计算机设备也可以在未接收到键值对存储请求的情况下,定期对第一级子存储范围内的不可用内存表进行刷新处理。在一种可能的实施方式中,在不可用内存表中存在的重复键值数大于阈值的情况下,计算机设备即可以启动压缩线程,对不可用内存表进行刷新,仅保留内存表中各个键值对应的最新数据值,并丢弃旧的数据值。
步骤307,利用刷新后的多个不可用内存表中的空余存储空间构建第二可用内存表。
在一种可能的实施方式中,在对多个不可用内存表进行刷新处理,并丢弃各个键值对应的旧数据值之后,计算机设备即可以利用刷新后的多个不可用内存表中的空余存储空间构建第二可用内存表,可选的,构建的第二可用内存表与第一可用内存表具有相同的数据存储功能。
步骤308,将待存储键值对存储至第二可用内存表内。
进一步的,在得到构建的第二可用内存表之后,计算机设备将待存储键值对存储至第二可用内存表中。
步骤309,在第一级子存储范围中不存在第一可用内存表,或第一可用内存表的剩余存储空间小于待存储键值对所需存储空间的情况下,对第一级子存储范围中的多个不可用内存表进行压缩处理,得到第一压缩处理结果,不可用内存表为存储空间已满的内存表。
在一种可能的实施方式中,考虑到第一级子存储范围内的键值对是基于处理各个键值对存储请求的时间进行依次存储的,即内存表内存储的键值对是以存储时间顺序排列,而不是键值顺序排列,因此为了提高对键值对的数据管理效率,计算机设备还为各个第一级子存储范围设置有对应的排序字符串表,用于存储排序后的键值对数据。
可选的,排序字符串表中包括多级字符串表,比如第0级字符串表、第1级字符串表……可选的,第0级字符串表可以是半排序的可修改的,第1级字符串表以及更高层级的字符串表是已经排序的,每个字符串表文件中均包含多个键值对,字符串表的层级越高,字符串表文件越大,存储的键值对也越旧。当字符串表文件达到一定大小,即触发数据压缩,计算机设备即可以将多个小的字符串表文件合并成一个大的字符串表文件,以减少存储空间的占用。
在一种可能的实施方式中,在第一级子存储范围中不存在第一可用内存表,或第一可用内存表的剩余存储空间小于待存储键值对所需存储空间的情况下,计算机设备可以对第一级子存储范围中的多个不可用内存表进行压缩处理,得到第一压缩处理结果。
在一种可能的实施方式中,在对多个不可用内存表进行压缩处理的过程中,计算机设备即可以将多个不可用内存表内的键值对按键值顺序进行排列,得到第一压缩处理结果。
步骤310,将第一压缩处理结果存储至第一级子存储范围对应的排序字符串表中,并将不可用内存表转换为第一可用内存表。
进一步的,计算机设备将第一压缩处理结果存储至第一级子存储范围对应的排序字符串表中,从而清空不可用内存表内原键值对占用的存储空间,并将不可用内存表转换为第一可用内存表。
在一种可能的实施方式中,计算机设备按照排序字符串表中各个字符串表的层级顺序,对数据进行存储。在得到第一压缩处理结果之后,在排序字符串表的第0级字符串表内存在剩余存储空间的情况下,计算机设备将第一压缩处理结果存储至第0级字符串表中。
在一种可能的实施方式中,在排序字符串表的第0级字符串表不存在剩余存储空间的情况下,计算机设备需要先对第0级字符串表进行压缩处理,得到第二压缩处理结果,并将第二压缩处理结果存储至第1级字符串表中,使得第0级字符串表存在空余存储空间,进而计算机设备将第一压缩处理结果存储至第0级字符串表中。
在一种可能的实施方式中,在第i级字符串表的存储空间达到存储阈值的情况下,计算机设备对第i级字符串表进行压缩处理得到第二压缩处理结果,并将第二压缩处理结果存储至第i+1级字符串表中,其中,i≥0,且i为整数,从而字符串表的层级越高,字符串表文件越大,存储的键值对也越旧。
在一种可能的实施方式中,在第一树组件中存在至少两个键值对存储请求需要处理,且各个键值对存储请求对应的第一级子存储范围不同的情况下,计算机设备则可以在不同的第一级子存储范围内对键值对存储请求内的键值对进行并行存储,并在各个第一级子存储范围内对内存表以及排序字符串表进行并行压缩处理,从而提高了数据处理的效率,优化了数据存储空间。
示意性的,如图4所示,第0级字符串表中包括四个字符串表文件,分别对应不同的键值范围,处于半排序可修改状态,不同字符串表文件对应的键值范围存在部分重合,第1级字符串表中包括N个字符串表文件,处于已经排序状态,各个字符串表文件不存在键值范围重合。
相关技术中,在树组件中仅划分为第一存储范围,该第一存储范围同时处理0-999键值范围内的键值数据,并对0-999键值范围内的数据同时进行压缩处理,导致数据处理效率低,存在数据写入停顿,本申请实施例中,在第一存储范围的基础上进一步划分为多个第一级子存储范围,如图4所示,其中,第一级子存储范围1负责处理0-99键值范围内的键值数据,第一级子存储范围2负责处理120-199键值范围内的键值数据,第一级子存储范围3负责处理920-999键值范围内的键值数据,从而在第一级子存储范围1对应的第0级字符串需要进行压缩处理时,可以仅对第一级子存储范围1内的第0级字符串对应的键值范围内的数据进行压缩处理,而不影响其他第一级子存储范围内的数据写入,并且在多个第一级子存储范围内的第0级字符串表需要压缩处理的情况下,可以在多个第一级子存储范围内进行并行压缩,从而提高数据压缩效率。
步骤311,将待存储键值对存储至第一可用内存表内。
进一步的,在将第一压缩处理结果存储至第一级子存储范围对应的排序字符串表中,并将不可用内存表转换为第一可用内存表之后,计算机设备即可以将待存储键值对存储至第一可用内存表内。
上述实施例中,根据内存表的剩余存储空间,将第一级子存储范围内的内存表划分为可用内存表和不可用内存表,从而在接收到键值对存储请求的情况下,优先将待存储键值对存储至可用内存表中,提高了对键值对的存储和管理效率。
并且,在可用内存表的剩余存储空间不足的情况下,通过对不可用内存表进行刷新,以保留键值对应的最新数据值并丢弃旧数据值,从而得到空余存储空间以存储新的键值对,充分利用了内存表中的存储空间,提高了存储效率。
此外,通过设置排序字符串表,在内存表中键值数量达到阈值、剩余存储空间不足的情况下,可以对内存表内的键值对进行压缩处理,按照键值顺序,将压缩处理结果存储至排序字符串表中,优化了对键值对的管理,提高了数据处理效率。
在一种可能的实施方式中,为了进一步对键值对进行存储管理,在将键值对按照键值顺序存储至排序字符串表之后,计算机设备还可以将排序字符串表内的键值数据进一步存储至存储组件中,通过存储组件存储、检索和管理不同大小的数据块。
可选的,计算机设备可以为每个树组件配置一个存储组件,即树组件和存储组件一一对应。
可选的,计算机设备还可以为每个树组件配置有多个存储组件,即一个树组件可以对应多个存储组件,一个存储组件也可以对应多个树组件,从而利用多个存储组件的磁盘带宽,以减少数据写入时间。
在一种可能的实施方式中,在将键值对从排序字符串表写入存储组件的过程中,计算机设备首先确定第一树组件对应的多个存储组件的组件数量,从而确定各级字符串表对应的数据分区方式,进而根据各级字符串表对应的数据分区方式,对各级字符串表进行数据分区,得到各级字符串表对应的多个数据片段,并根据数据片段的片段数以及各个存储组件的剩余存储空间,从多个存储组件中筛选出与片段数相同数量的存储组件,并将各个数据片段并行写入对应的存储组件中。
在一种可能的实施方式中,为了最小化存储组件的排序延迟,计算机设备可以通过随机选择算法,根据数据片段的片段数以及各个存储组件的剩余存储空间,从多个(片段数×2个)存储组件中选择出剩余存储空间较大的与片段数相同数量的存储组件,从而将各个数据片段并行写入对应的存储组件中。
在一个示意性的例子中,计算机设备将一个字符串表分为个数据片段,则需要
从个随机选择的存储组件中选择剩余存储空间较大的即磁盘队列最短的个存储组件,
与个数据片段一一对应,其中,。
在一种可能的实施方式中,考虑到在键值对存储过程中,可能存在数据倾斜问题,即可能存在某些键值范围的键值对数量较多,某些键值范围的键值对数量较少,因此为了提高对键值对的存储效率,计算机设备还可以根据存储组件的组件数量,以及各级字符串表内的数据写入范围分布情况,确定各级字符串表对应的数据分区方式。
在一个示意性的例子中,第一树组件对应有 个存储组件,其中,,
是存储组件的总数量。当时,计算机设备则将排序字符串表中的键值对分配给一个
存储组件;当时,计算机设备则将排序字符串表中得到键值对以数据块片段的形式
分配给 个存储组件。
示意性的,如图5所示,第0级字符串表对应有3个存储组件,第N级字符
串表对应有4个存储组件。
可选的,每个存储组件均由一组连续的内存区域组成,计算机设备可以通过远程内存直接访问写操作将数据片段写入内存区域,并通过远程内存直接访问读操作获取数据片段。
可选的,远程内存直接访问是一种与以太网相似的协议,可以提供高达几十或几百Gbps的带宽和几微秒的延迟。远程内存直接访问提供了一种新颖的方式,可以绕过接收端的CPU进行数据读写操作,在数据存储和处理中发挥重要作用,如分布式数据系统和云计算中的硬件软件协同设计。它还可以通过网络连接单个服务器的多个物理资源来提高性能和伸缩性。
在一种可能的实施方式中,为了将排序字符串表内的数据片段存储至存储组件内,计算机设备可以向第一存储组件发送数据写入请求,以使得第一存储组件基于数据写入请求分配内存区域。
在一种可能的实施方式中,在接收到数据写入请求的情况下,第一存储组件在其本地内存中分配一个连续的内存区域,并将存储组件文件句柄返回给第一树组件,其中,该文件句柄中包括内存区域地址以及该内存区域的内存偏移量,从而在接收到第一存储组件返回的内存区域地址以及内存偏移量的情况下,计算机设备将排序字符串表中的数据片段写入第一存储组件中。
在一种可能的实施方式中,计算机设备通过远程内存直接访问写操作将数据片段写入当前内存偏移量对应的内存区域,并增加内存偏移量。在数据片段所需存储空间大于该内存区域的可用存储空间的情况下,则请求第一存储组件重新分配一个新的内存区域,并恢复写操作,将数据片段写入新的内存区域。
在一种可能的实施方式中,为了进一步存储该数据片段,在通过远程内存直接访问写操作将数据片段写入内存区域之后,计算机设备还可以通过第一存储组件,将写入的数据片段刷新到磁盘中,以持久化对数据的存储。
在一种可能的实施方式中,在将键值对数据写入第一存储组件后,为了便于进行数据查询,计算机设备还可以将数据片段对应的元数据片段也写入存储组件中,其中,元数据片段中存储有对应数据片段的字符串表地址信息。
在一种可能的实施方式中,为了避免存储组件出现数据丢失问题,导致数据片段和元数据片段同时丢失,在接收到第一存储组件发送的数据写入确认消息的情况下,计算机设备可以将数据片段对应的元数据片段写入第二存储组件中,并进一步将元数据片段刷写入磁盘中。
示意性的,图6示出了将数据片段写入存储组件的流程示意图。首先,树组件向第一存储组件发送数据写入请求,从而第一存储组件打开第一存储组件文件,分配内存区域并确定内存偏移量,从而树组件通过写操作,将数据片段写入第一存储组件,第一存储组件进一步对数据片段进行刷写,存储至数据片段文件中,从而第一存储组件将数据写入确认消息发送给树组件,树组件则继续将元数据片段发送给第二存储组件并存储。
上述实施例中,通过为每个树组件设置有对应的存储组件,可以实现在树组件对应的内存表以及排序字符串表的剩余存储空间不足的情况下,对排序字符串表内的数据进行压缩处理,并存储至存储组件中,从而提高了数据存储效率,减少了数据写入延迟。
并且,通过将排序字符串表中的数据划分为多个数据片段,并分别并行写入多个存储组件中,进一步提高了数据存储效率,使得存储组件的排队延迟最小化。
在一种可能的实施方式中,为了防止在键值对存储过程中,出现数据丢失等问题,计算机设备还可以为每个树组件设置对应的日志组件,用于记录键值对的写入操作,以提高数据的高可用性和持久性。
可选的,日志组件可以是一个独立的组件,也可以是和树组件集成的库,本申请实施例对此不作限定。
在一种可能的实施方式中,和树组件一样,协调器和各个树组件对应的日志组件之间也定期交换心跳信息,日志组件可以通过无限期地向协调器发送租约请求来获取对应的键值处理范围,从而协调器根据接收到的租约请求,向各个日志组件分配对应的键值处理范围的租约。
在一种可能的实施方式中,在通过第一树组件处理键值对存储请求的情况下,计算机设备可以通过第一树组件对应的日志组件,为第一级子存储范围中的各个内存表配置对应的日志文件,从而在第一级子存储范围中的目标内存表存在数据写入更新的情况下,计算机设备通过日志组件在目标内存表对应的日志文件中添加日志记录,进而在目标内存表存在数据丢失的情况下,计算机设备即可以根据该日志记录,恢复目标内存表中存储的数据。
上述实施例中,通过为每个树组件配置对应的日志组件,可以实现在数据存储过程中生成对应的日志记录,并在数据恢复的情况下提供日志记录以恢复内存表中的存储数据,避免了数据丢失,提高了数据存储效率。
请参考图7,其示出了本申请一个示例性实施例提供的组件结构图。
其中,组件结构中包括树组件、日志组件以及存储组件,基于该组件结构可以实现数据存储与处理分离。
如图所示,在接收到键值对存储请求的情况下,键值数据可以通过IP网络传输给对应树组件,由树组件进行相应的处理。计算机设备通过协调器为各个树组件和日志组件分配租约,确定树组件和日志组件的键值处理范围,且树组件和日志组件通过转换器与存储组件进行数据传输。
其中,以树组件1为例,树组件1中可以包括个存储范围,对应个多层存储树,而
日志组件1为集成到树组件1中的库,负责在数据写入过程中生成日志记录,在数据恢复过
程中提供日志记录,存储组件则通过存储介质存储、检索和管理可变大小的数据片段,树组
件、日志组件以及存储组件之间可以通过远程内存直接访问相互连接。
可选的,协调器将键值数据库中的数据划分为任意数量的范围,分配给 个树组
件,并维护关于树组件的组件配置信息。
可选的,树组件对应配置有树组件接口,用于实现Get(获取)、Put(写入)、Delete(删除)、Scan(扫描)操作。并且为了避免数据丢失,树组件还可以将对应的排序字符串表复制到存储组件中,并使用基于奇偶检验的技术,在存储组件中的某一数据片段发生故障的情况下,树组件可以通过读取奇偶检验块和其他数据片段,恢复该数据片段。
可选的,日志组件对应配置有日志组件接口,用于实现Open(打开)、Append(追加)、Delete(删除)、Read(读取)日志文件,并且为了实现高可用性,还可以通过内存和多个副本对日志文件进行存储。
可选的,存储组件对应配置有存储组件接口,用于实现Open(打开)、Append(追加)、Delete(删除)、Read(读取)操作。
在一种可能的实施方式中,考虑到第一存储范围内的各个第一级子存储范围负责处理不同的键值对存储请求,而不同键值范围对应的键值对存储量可能存在明显不平衡的问题,从而导致一些第一级子存储范围的写入负载过大,而一些第一级子存储范围则处于空闲状态,因此为了平衡第一级子存储范围之间的负载,计算机设备可以根据第一级子存储范围的写入负载,对第一级子存储范围进行动态调节。
在一种可能的实施方式中,计算机设备获取第一存储范围内各个第一级子存储范围的写入负载以及数据写入频率分布情况,从而在存在写入负载大于负载阈值的第一级子存储范围的情况下,计算机设备可以根据数据写入频率分布情况,对第一存储范围中的各个第一级子存储范围重新进行范围分配,即各个第一级子存储范围对应的键值处理范围可以相同,也可以不同。
在一种可能的实施方式中,在某一键值处理范围存在频繁的键值对数据写入的情况下,计算机设备还可以分配多个第一级子存储范围用于共同处理该键值处理范围内的键值对存储请求。
在一个示意性的例子中,在键值范围的写入比例为其他键值处理范围的两
倍的情况下,计算机设备即可以通过两个第一级子存储范围处理该键值范围对应的键值对
存储请求。
在一种可能的实施方式中,为了避免频繁地对第一级子存储范围进行范围分配,提高数据处理效率,计算机设备还可以对第一级子存储范围进一步进行划分,将第一级子存储范围划分为多个第二级子存储范围,从而在第一级子存储范围的写入负载大于负载阈值的情况下,计算机设备则可以将第一级子存储范围中位于边界范围的第二级子存储范围分配给相邻第一级子存储范围,以降低当前第一级子存储范围的写入负载。
在一种可能的实施方式中,在将第二级子存储范围分配给相邻第一级子存储范围后,相邻第一级子存储范围的写入负载大于负载阈值的情况下,即通过分配第二级子存储范围给相邻第一级子存储范围仍无法平衡各个第一级子存储范围的写入负载,计算机设备则可以根据数据写入频率分布情况,对第一存储范围中的各个第一级子存储范围重新进行范围分配。
可选的,第一级子存储范围可以称为动态范围,第二级子存储范围可以称为微小动态范围。可选的,对第一存储范围中的各个第一级子存储范围重新进行范围分配的过程可以称为主要重组,将第二级子存储范围分配给相邻第一级子存储范围的过程可以称为次要重组。
在一个示意性的例子中,第一级子存储范围(动态范围)可以表示为,
第二级子存储范围(微小动态范围)可以表示为,第一级子存储范围中包括个
第二级子存储范围,,,且,经过
主要重组之后,第一级子存储范围(动态范围)可以表示为。
示意性的,如图8所示,第一存储范围中包括个第一级子存储范围,各个第一级子
存储范围中又可划分为多个第二级子存储范围,且各个第一级子存储范围都对应有一个可
用内存表和多个不可用内存表,其中,以第一级子存储范围为例,在第一级子存
储范围的写入负载过大的情况下,计算机设备可以首先通过次要重组,将第二
级子存储范围分配给相邻的第一级子存储范围,在其写入负载均
衡的情况下,则保持该范围分配方式;在写入负载仍然不均衡的情况下,则可以通过主要重
组,对各个第一级子存储范围对应的键值范围进行重新分配。
在一种可能的实施方式中,在对各个第一级子存储范围重新进行范围分配之后,为了提高后续键值数据存储的准确性,计算机设备还需要通过树组件为每个内存表重新分配对应的内存表标识,并且将受到范围分配影响的可用内存表转换为不可用内存表,以及创建新的可用内存表。
上述实施例中,通过根据各个第一级子存储范围的写入负载以及数据写入频率分布情况,对第一级子存储范围进行动态的范围分配,从而达到平衡各个第一级子存储范围的写入负载的目的,提高了对键值对的存储效率。
此外,通过将第一级子存储范围进一步划分为多个第二级子存储范围,在某个第一级子存储范围的写入负载过大的情况下,可以通过将该第一级子存储范围内的第二级子存储范围分配到相邻第一级子存储范围,以减少该第一级子存储范围的写入负载,提高了动态调节各个第一级子存储范围的写入负载的效率。
在一种可能的实施方式中,在将各个树组件中的多个第一存储范围划分为多个第一级子存储范围后,为了便于进行键值对查找,计算机设备还可以为每个树组件维护一个查找索引,该查找索引中包括各个键值以及键值对应的最新数据值所在的内存表标识。
可选的,计算机设备可以通过一个间接映射表维护内存表与内存表标识之间的映射关系,将内存表标识映射到内存表的指针。
可选的,查找索引的索引结构可以表示为,为键值,为
内存表标识。
在一种可能的实施方式中,在接收到键值查找请求的情况下,计算机设备首先获取键值查找请求中的第二键值,并根据第二键值以及组件配置信息,确定用于处理该键值查找请求的第二树组件,进而从第二树组件对应的查找索引中查找第二键值,该查找索引中包括第二树组件中已存储键值以及各个已存储键值对应的内存表标识。
进而,在查找索引中存在与第二键值对应的已存储键值的情况下,计算机设备则可以根据已存储键值对应的内存表标识,从内存表标识对应的内存表中获取第二键值对应的最新数据值。
在一种可能的实施方式中,考虑到在键值对存储至内存表之后,在内存表已满的情况下,还会对键值数据进行压缩处理并存储至排序字符串表中,因此为了提高数据查找的效率,避免查找遗漏,在查找索引中不存在与第二键值对应的已存储键值的情况下,计算机设备还可以根据第二键值,依次从第二树组件对应的各个字符串表中查找与第二键值对应的已存储键值,并在目标字符串表中存在与第二键值对应的已存储键值的情况下,从目标字符串表中获取第二键值对应的数据值。
在一种可能的实施方式中,考虑到第0级字符串表是半排序的可修改的,不同于其他层级的字符串表为排序且不可修改状态,因此为了提高在第0级字符串表中的数据查找效率,计算机设备还可以在查找索引中添加第0级字符串表的字符串表文件标识,从而计算机设备可以直接通过查找索引,确定第0级字符串表中是否存在与第二键值对应的已存储键值。
在一种可能的实施方式中,为了提高键值数据查找的准确性,在对树组件中的内存表进行压缩处理,并将数据存储至排序字符串表后,计算机设备还需要对查找索引中各个键值对应的最新数据值所对应的内存表标识或者字符串表文件标识进行更新,并删除无效内存表标识以及字符串表文件标识。
在一种可能的实施方式中,为了提高查找效率,对于其他层级的字符串表,计算机设备还可以在各个字符串表中增设一个布隆过滤器,从而通过布隆过滤器确定字符串表中是否存在与第二键值对应的已存储键值。
可选的,布隆过滤器是一种快速且空间效率高的数据结构,用于判断一个元素是否存在于一个集合中,通过利用哈希函数和位数组来实现。当一个元素被添加到布隆过滤器中时,它会被哈希成几个不同的值,并将对应位数组中的位置标记为1。当检查一个元素是否在集合中时,它仅需要将该元素哈希成相同的几个值,并检查对应的位数组中是否都为1,若都为1,则可能存在于集合中;若有一位为0,则说明肯定不存在于集合中。
示意性的,如图9所示,在接收到键值查找请求,确定第二键值的情况下,计算机设备通过第一树组件对应的查找索引,对键值对应最新数据值所在存储位置进行查找,可以直接得到在可用内存表内的数据值,或不可用内存表内的数据值,或第0级字符串表内的数据值。
上述实施例中,通过在每个树组件中维护一个查找索引,在存在键值数据查找请求的情况下,可以直接根据查找索引查找与第二键值对应的已存储键值,提高了键值数据查找效率。
在一种可能的实施方式中,在需要查找某一键值范围内的各个键值对应的数据值的情况下,计算机设备可以通过扫描操作,对存储范围内的内存表以及排序字符串表进行扫描。
在一种可能的实施方式中,为了提高范围扫描效率,计算机设备还可以为每个树组件维护一个范围索引,该范围索引的范围分区方式可以与第一级子存储范围对应,即范围索引中的每个范围分区对应一个第一级子存储范围。
在一种可能的实施方式中,在接收到范围扫描请求的情况下,计算机设备获取范围扫描请求中的目标扫描范围,该目标扫描范围中至少包括起始键值以及结束键值,进而根据起始键值以及组件配置信息,确定用于处理范围扫描请求的第三树组件,并通过二分查找的方式,从第三树组件对应的范围索引中确定起始键值对应第一范围分区,进而从第一范围分区中的各个内存表和字符串表中查找与目标扫描范围中的各个第三键值对应的已存储键值。
在一种可能的实施方式中,计算机设备从起始键值开始,依次在第一范围分区内的各个内存表和字符串表中查找与起始键值对应的已存储键值,在第一范围分区内包含与结束键值对应的已存储键值的情况下,即表示目标扫描范围内各个第三键值对应的已存储键值均在第一范围分区内,从而计算机设备获取各个第三键值对应的数据值。
在一种可能的实施方式中,在进行键值扫描的过程中,在第一范围分区内不包含与结束键值对应的已存储键值的情况下,计算机设备则可以继续从第一范围分区的后一范围分区,即第二范围分区开始,在第二范围分区中的各个内存表和字符串表中继续查找与目标扫描范围中的各个第三键值对应的已存储范围,直到查找到结束键值对应的已存储键值,并获取各个第三键值对应的数据值。
在一种可能的实施方式中,为了提高范围扫描效率,计算机设备还可以根据起始键值以及结束键值,同时确定范围分区,在起始键值和结束键值对应同一范围分区的情况下,计算机设备则可以直接在该范围分区内进行扫描操作;在起始键值和结束键值对应不同范围分区的情况下,计算机设备则可以在各个范围分区内并行执行扫描操作,从而提高扫描效率。
在一种可能的实施方式中,为了提高扫描准确性,计算机设备还需要根据第一级子存储范围对应的键值处理范围的变化情况,对范围索引内的范围分区进行相应的更新。
可选的,在第一级子存储范围内增加新的内存表或者第0级字符串表的情况下,可以将新增内存表或者第0级字符串表对应的键值处理范围,对应添加到范围分区中。
可选的,在删除第一级子存储范围内的第0级字符串表,或者刷新不可用内存表的情况下,可以将范围索引内对应的范围分区进行修改。
上述实施例中,通过在每个树组件中维护一个范围索引,在存在范围扫描请求的情况下,通过确定起始键值所在范围分区,并进行键值扫描操作,从而得到目标扫描范围内各个第三键值对应的数据值,提高了范围扫描的效率。
请参考图10,其示出了本申请一个示例性实施例提供的数据处理装置的结构框图,该装置包括。
第一获取模块1001,用于在接收到键值对存储请求的情况下,从所述键值对存储请求中获取待存储键值对的第一键值;
第一确定模块1002,用于基于所述第一键值以及组件配置信息,确定用于处理所述键值对存储请求的第一树组件,所述组件配置信息表征各个树组件与各个键值处理范围之间的分配关系,不同树组件负责处理不同键值范围对应的键值对存储请求;
第二确定模块1003,用于基于所述第一键值,确定所述第一树组件中用于存储所述待存储键值对的第一存储范围,所述第一树组件维护多个多层存储树,所述多层存储树与所述第一存储范围一一对应,所述第一存储范围中还包括多个第一级子存储范围,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围基于各个第一级子存储范围的写入负载动态变化;
第一存储模块1004,用于基于所述第一键值,确定所述待存储键值对对应的第一级子存储范围,并将所述待存储键值对存储至所述第一级子存储范围内的内存表中。
可选的,所述第一存储模块1004,用于:
基于所述第一键值,确定所述第一存储范围中用于存储所述待存储键值对的所述第一级子存储范围;
在所述第一级子存储范围中存在第一可用内存表,且所述第一可用内存表的剩余存储空间不小于所述待存储键值对所需存储空间的情况下,将所述待存储键值对存储至所述第一可用内存表内。
可选的,所述装置还包括:
刷新模块,用于在所述第一级子存储范围中不存在所述第一可用内存表,或所述第一可用内存表的剩余存储空间小于所述待存储键值对所需存储空间的情况下,刷新所述第一级子存储范围中的多个不可用内存表,以删除所述不可用内存表中存储的各个键值对应的重复数据值并保留最新数据值,所述不可用内存表为存储空间已满的内存表;
内存表构建模块,用于利用刷新后的多个不可用内存表中的空余存储空间构建第二可用内存表;
第二存储模块,用于将所述待存储键值对存储至所述第二可用内存表内。
可选的,所述装置还包括:
压缩模块,用于在所述第一级子存储范围中不存在所述第一可用内存表,或所述第一可用内存表的剩余存储空间小于所述待存储键值对所需存储空间的情况下,对所述第一级子存储范围中的多个不可用内存表进行压缩处理,得到第一压缩处理结果,所述不可用内存表为存储空间已满的内存表;
转换模块,用于将所述第一压缩处理结果存储至所述第一级子存储范围对应的排序字符串表中,并将所述不可用内存表转换为所述第一可用内存表;
第三存储模块,用于将所述待存储键值对存储至所述第一可用内存表内。
可选的,所述第一级子存储范围对应的排序字符串表由多级字符串表构成;
所述转换模块,用于:
在所述排序字符串表的第0级字符串表存在剩余存储空间的情况下,将所述第一压缩处理结果存储至所述第0级字符串表中;
在第i级字符串表的存储空间达到存储阈值的情况下,对所述第i级字符串表进行压缩处理得到第二压缩处理结果,并将所述第二压缩处理结果存储至第i+1级字符串表中,其中,i≥0,且i为整数。
可选的,所述第一树组件对应有多个存储组件,所述装置还包括:
第三确定模块,用于基于所述第一树组件对应的多个存储组件的组件数量,以及各级字符串表内的数据写入范围分布情况,确定各级字符串表对应的数据分区方式;
数据分区模块,用于基于各级字符串表对应的数据分区方式,对各级字符串表进行数据分区,得到各级字符串表对应的多个数据片段;
组件筛选模块,用于基于所述数据片段的片段数以及各个存储组件的剩余存储空间,从多个存储组件中筛选出与所述片段数相同数量的存储组件;
数据写入模块,用于将各个数据片段并行写入对应的存储组件中。
可选的,所述数据写入模块,用于:
向第一存储组件发送数据写入请求,以使得所述第一存储组件基于所述数据写入请求分配内存区域;
在接收到所述第一存储组件返回的内存区域地址以及内存偏移量的情况下,将所述数据片段写入所述第一存储组件中;
在接收到所述第一存储组件发送的数据写入确认消息的情况下,将所述数据片段对应的元数据片段写入第二存储组件中,所述元数据片段与所述数据片段对应,所述元数据片段中存储有所述数据片段对应的字符串表地址信息。
可选的,所述装置还包括:
配置模块,用于通过所述第一树组件对应的日志组件,为所述第一级子存储范围中的各个内存表配置对应的日志文件;
添加模块,用于在所述第一级子存储范围中的目标内存表存在数据写入更新的情况下,在所述目标内存表对应的日志文件中添加日志记录;
数据恢复模块,用于在所述目标内存表存在数据丢失的情况下,基于所述日志记录,恢复所述目标内存表中存储的数据。
可选的,所述装置还包括:
第二获取模块,用于获取所述第一存储范围中各个第一级子存储范围的写入负载以及数据写入频率分布情况;
范围分配模块,用于在存在写入负载大于负载阈值的第一级子存储范围的情况下,基于所述数据写入频率分布情况,对所述第一存储范围中的各个第一级子存储范围重新进行范围分配。
可选的,所述第一级子存储范围中还包括多个第二级子存储范围,所述范围分配模块,用于:
在存在写入负载大于负载阈值的第一级子存储范围的情况下,将所述第一级子存储范围中位于边界范围的第二级子存储范围分配给相邻第一级子存储范围;
在将所述第二级子存储范围分配给所述相邻第一级子存储范围后,所述相邻第一级子存储范围的写入负载大于负载阈值的情况下,基于所述数据写入频率分布情况,对所述第一存储范围中的各个第一级子存储范围重新进行范围分配。
可选的,所述装置还包括:
第三获取模块,用于在接收到键值查找请求的情况下,获取所述键值查找请求中的第二键值;
第四确定模块,用于基于所述第二键值以及所述组件配置信息,确定用于处理所述键值查找请求的第二树组件;
第一查找模块,用于从所述第二树组件对应的查找索引中查找所述第二键值,所述查找索引中包括所述第二树组件中已存储键值以及各个已存储键值对应的内存表标识;
第四获取模块,用于在所述查找索引中存在与所述第二键值对应的已存储键值的情况下,基于所述已存储键值对应的内存表标识,从所述内存表标识对应的内存表中获取所述第二键值对应的数据值。
可选的,所述装置还包括:
第二查找模块,用于在所述查找索引中不存在与所述第二键值对应的已存储键值的情况下,基于所述第二键值,依次从所述第二树组件对应的各个字符串表中查找与所述第二键值对应的已存储键值;
第五获取模块,用于在目标字符串表中存在与所述第二键值对应的已存储键值的情况下,从所述目标字符串表中获取所述第二键值对应的数据值。
可选的,所述装置还包括:
第六获取模块,用于在接收到范围扫描请求的情况下,获取所述范围扫描请求中的目标扫描范围,所述目标扫描范围包括起始键值以及结束键值;
第五确定模块,用于基于所述起始键值以及所述组件配置信息,确定用于处理所述范围扫描请求的第三树组件;
第六确定模块,用于通过二分查找的方式从所述第三树组件对应的范围索引中确定所述起始键值对应的第一范围分区,所述范围索引中的范围分区方式与所述第一级子存储范围对应;
第三查找模块,用于从所述第一范围分区中的各个内存表和字符串表中查找与所述目标扫描范围中的各个第三键值对应的已存储键值;
第四查找模块,用于在所述第一范围分区内不包含与所述结束键值对应的已存储键值的情况下,从第二范围分区中的各个内存表和字符串表中继续查找与所述目标扫描范围中的各个第三键值对应的已存储键值;
第七获取模块,用于在查找到所述结束键值对应的已存储键值的情况下,获取所述目标扫描范围内各个第三键值对应的数据值。
综上所述,本申请实施例中,设置有多个树组件用于处理键值对存储请求,且各个树组件中维护有多个多层存储树,每个多层存储树与第一存储范围一一对应,并且为了便于对键值对数据进行压缩存储和管理,在第一存储范围中又细分了多个第一级子存储范围,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围基于各个第一级子存储范围的写入负载动态变化,从而在接收到键值对存储请求的情况下,可以根据键值对存储请求中待存储键值对的第一键值,确定处理该键值对存储请求的第一树组件,并根据第一键值,确定第一存储范围以及第一级子存储范围,进而将待存储键值对存储至第一级子存储范围内的内存表中,提高了对键值对的存储效率,优化了数据处理和管理的过程。
需要说明的是:上述实施例提供的装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其实现过程详见方法实施例,这里不再赘述。
请参考图11,其示出了本申请一个示例性实施例提供的计算机设备的结构示意图。具体来讲:所述计算机设备1100包括中央处理单元(Central Processing Unit,CPU)1101、包括随机存取存储器1102和只读存储器1103的系统存储器1104,以及连接系统存储器1104和中央处理单元1101的系统总线1105。所述计算机设备1100还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(Input/Output,I/O系统)1106,和用于存储操作系统1113、应用程序1114和其他程序模块1115的大容量存储设备1107。
所述基本输入/输出系统1106包括有用于显示信息的显示器1108和用于用户输入信息的诸如鼠标、键盘之类的输入设备1109。其中所述显示器1108和输入设备1109都通过连接到系统总线1105的输入输出控制器1110连接到中央处理单元1101。所述基本输入/输出系统1106还可以包括输入输出控制器1110以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1110还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备1107通过连接到系统总线1105的大容量存储控制器(未示出)连接到中央处理单元1101。所述大容量存储设备1107及其相关联的计算机可读介质为计算机设备1100提供非易失性存储。也就是说,所述大容量存储设备1107可以包括诸如硬盘或者驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括随机存取记忆体(RAM,Random Access Memory)、只读存储器(ROM,Read Only Memory)、闪存或其他固态存储其技术,只读光盘(Compact Disc Read-Only Memory,CD-ROM)、数字通用光盘(Digital Versatile Disc,DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1104和大容量存储设备1107可以统称为存储器。
存储器存储有一个或多个程序,一个或多个程序被配置成由一个或多个中央处理单元1101执行,一个或多个程序包含用于实现上述方法的指令,中央处理单元1101执行该一个或多个程序实现上述各个方法实施例提供的方法。
根据本申请的各种实施例,所述计算机设备1100还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备1100可以通过连接在所述系统总线1105上的网络接口单元1112连接到网络1111,或者说,也可以使用网络接口单元1112来连接到其他类型的网络或远程计算机系统(未示出)。
本申请实施例还提供一种计算机可读存储介质,该可读存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述实施例所述的数据处理方法。
可选地,该计算机可读存储介质可以包括:ROM、RAM、固态硬盘(SSD,Solid StateDrives)或光盘等。其中,RAM可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。
本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例所述的数据处理方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种数据处理方法,其特征在于,所述方法包括:
在接收到键值对存储请求的情况下,从所述键值对存储请求中获取待存储键值对的第一键值;
基于所述第一键值以及组件配置信息,确定用于处理所述键值对存储请求的第一树组件,所述组件配置信息表征各个树组件与各个键值处理范围之间的分配关系,不同树组件负责处理不同键值范围对应的键值对存储请求;
基于所述第一键值,确定所述第一树组件中用于存储所述待存储键值对的第一存储范围,所述第一树组件维护多个多层存储树,所述多层存储树与所述第一存储范围一一对应,所述第一存储范围中还包括多个第一级子存储范围,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围基于各个第一级子存储范围的写入负载动态变化;
基于所述第一键值,确定所述待存储键值对对应的第一级子存储范围,并将所述待存储键值对存储至所述第一级子存储范围内的内存表中。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一键值,确定所述待存储键值对对应的第一级子存储范围,并将所述待存储键值对存储至所述第一级子存储范围内的内存表中,包括:
基于所述第一键值,确定所述第一存储范围中用于存储所述待存储键值对的所述第一级子存储范围;
在所述第一级子存储范围中存在第一可用内存表,且所述第一可用内存表的剩余存储空间不小于所述待存储键值对所需存储空间的情况下,将所述待存储键值对存储至所述第一可用内存表内。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述第一级子存储范围中不存在所述第一可用内存表,或所述第一可用内存表的剩余存储空间小于所述待存储键值对所需存储空间的情况下,刷新所述第一级子存储范围中的多个不可用内存表,以删除所述不可用内存表中存储的各个键值对应的重复数据值并保留最新数据值,所述不可用内存表为存储空间已满的内存表;
利用刷新后的多个不可用内存表中的空余存储空间构建第二可用内存表;
将所述待存储键值对存储至所述第二可用内存表内。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述第一级子存储范围中不存在所述第一可用内存表,或所述第一可用内存表的剩余存储空间小于所述待存储键值对所需存储空间的情况下,对所述第一级子存储范围中的多个不可用内存表进行压缩处理,得到第一压缩处理结果,所述不可用内存表为存储空间已满的内存表;
将所述第一压缩处理结果存储至所述第一级子存储范围对应的排序字符串表中,并将所述不可用内存表转换为所述第一可用内存表;
将所述待存储键值对存储至所述第一可用内存表内。
5.根据权利要求4所述的方法,其特征在于,所述第一级子存储范围对应的排序字符串表由多级字符串表构成;
所述将所述第一压缩处理结果存储至所述第一级子存储范围对应的排序字符串表中,包括:
在所述排序字符串表的第0级字符串表存在剩余存储空间的情况下,将所述第一压缩处理结果存储至所述第0级字符串表中;
在第i级字符串表的存储空间达到存储阈值的情况下,对所述第i级字符串表进行压缩处理得到第二压缩处理结果,并将所述第二压缩处理结果存储至第i+1级字符串表中,其中,i≥0,且i为整数。
6.根据权利要求5所述的方法,其特征在于,所述第一树组件对应有多个存储组件,所述方法还包括:
基于所述第一树组件对应的多个存储组件的组件数量,以及各级字符串表内的数据写入范围分布情况,确定各级字符串表对应的数据分区方式;
基于各级字符串表对应的数据分区方式,对各级字符串表进行数据分区,得到各级字符串表对应的多个数据片段;
基于所述数据片段的片段数以及各个存储组件的剩余存储空间,从多个存储组件中筛选出与所述片段数相同数量的存储组件;
将各个数据片段并行写入对应的存储组件中。
7.根据权利要求6所述的方法,其特征在于,所述将各个数据片段并行写入对应的存储组件中,包括:
向第一存储组件发送数据写入请求,以使得所述第一存储组件基于所述数据写入请求分配内存区域;
在接收到所述第一存储组件返回的内存区域地址以及内存偏移量的情况下,将所述数据片段写入所述第一存储组件中;
在接收到所述第一存储组件发送的数据写入确认消息的情况下,将所述数据片段对应的元数据片段写入第二存储组件中,所述元数据片段与所述数据片段对应,所述元数据片段中存储有所述数据片段对应的字符串表地址信息。
8.根据权利要求2所述的方法,其特征在于,所述方法还包括:
通过所述第一树组件对应的日志组件,为所述第一级子存储范围中的各个内存表配置对应的日志文件;
在所述第一级子存储范围中的目标内存表存在数据写入更新的情况下,在所述目标内存表对应的日志文件中添加日志记录;
在所述目标内存表存在数据丢失的情况下,基于所述日志记录,恢复所述目标内存表中存储的数据。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述第一存储范围中各个第一级子存储范围的写入负载以及数据写入频率分布情况;
在存在写入负载大于负载阈值的第一级子存储范围的情况下,基于所述数据写入频率分布情况,对所述第一存储范围中的各个第一级子存储范围重新进行范围分配。
10.根据权利要求9所述的方法,其特征在于,所述第一级子存储范围中还包括多个第二级子存储范围,所述在存在写入负载大于负载阈值的第一级子存储范围的情况下,基于所述数据写入频率分布情况,对所述第一存储范围中的各个第一级子存储范围重新进行范围分配,包括:
在存在写入负载大于负载阈值的第一级子存储范围的情况下,将所述第一级子存储范围中位于边界范围的第二级子存储范围分配给相邻第一级子存储范围;
在将所述第二级子存储范围分配给所述相邻第一级子存储范围后,所述相邻第一级子存储范围的写入负载大于负载阈值的情况下,基于所述数据写入频率分布情况,对所述第一存储范围中的各个第一级子存储范围重新进行范围分配。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到键值查找请求的情况下,获取所述键值查找请求中的第二键值;
基于所述第二键值以及所述组件配置信息,确定用于处理所述键值查找请求的第二树组件;
从所述第二树组件对应的查找索引中查找所述第二键值,所述查找索引中包括所述第二树组件中已存储键值以及各个已存储键值对应的内存表标识;
在所述查找索引中存在与所述第二键值对应的已存储键值的情况下,基于所述已存储键值对应的内存表标识,从所述内存表标识对应的内存表中获取所述第二键值对应的数据值。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
在所述查找索引中不存在与所述第二键值对应的已存储键值的情况下,基于所述第二键值,依次从所述第二树组件对应的各个字符串表中查找与所述第二键值对应的已存储键值;
在目标字符串表中存在与所述第二键值对应的已存储键值的情况下,从所述目标字符串表中获取所述第二键值对应的数据值。
13.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到范围扫描请求的情况下,获取所述范围扫描请求中的目标扫描范围,所述目标扫描范围包括起始键值以及结束键值;
基于所述起始键值以及所述组件配置信息,确定用于处理所述范围扫描请求的第三树组件;
通过二分查找的方式从所述第三树组件对应的范围索引中确定所述起始键值对应的第一范围分区,所述范围索引中的范围分区方式与所述第一级子存储范围对应;
从所述第一范围分区中的各个内存表和字符串表中查找与所述目标扫描范围中的各个第三键值对应的已存储键值;
在所述第一范围分区内不包含与所述结束键值对应的已存储键值的情况下,从第二范围分区中的各个内存表和字符串表中继续查找与所述目标扫描范围中的各个第三键值对应的已存储键值;
在查找到所述结束键值对应的已存储键值的情况下,获取所述目标扫描范围内各个第三键值对应的数据值。
14.一种数据处理装置,其特征在于,所述装置包括:
第一获取模块,用于在接收到键值对存储请求的情况下,从所述键值对存储请求中获取待存储键值对的第一键值;
第一确定模块,用于基于所述第一键值以及组件配置信息,确定用于处理所述键值对存储请求的第一树组件,所述组件配置信息表征各个树组件与各个键值处理范围之间的分配关系,不同树组件负责处理不同键值范围对应的键值对存储请求;
第二确定模块,用于基于所述第一键值,确定所述第一树组件中用于存储所述待存储键值对的第一存储范围,所述第一树组件维护多个多层存储树,所述多层存储树与所述第一存储范围一一对应,所述第一存储范围中还包括多个第一级子存储范围,不同第一级子存储范围用于存储不同键值范围的键值对,且各个第一级子存储范围对应的键值范围基于各个第一级子存储范围的写入负载动态变化;
第一存储模块,用于基于所述第一键值,确定所述待存储键值对对应的第一级子存储范围,并将所述待存储键值对存储至所述第一级子存储范围内的内存表中。
15.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如权利要求1至13任一所述的数据处理方法。
16.一种计算机可读存储介质,其特征在于,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如权利要求1至13任一所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310880889.6A CN116595015B (zh) | 2023-07-18 | 2023-07-18 | 数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310880889.6A CN116595015B (zh) | 2023-07-18 | 2023-07-18 | 数据处理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116595015A true CN116595015A (zh) | 2023-08-15 |
CN116595015B CN116595015B (zh) | 2023-12-15 |
Family
ID=87606614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310880889.6A Active CN116595015B (zh) | 2023-07-18 | 2023-07-18 | 数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116595015B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150120754A1 (en) * | 2013-10-31 | 2015-04-30 | Oracle International Corporation | Systems and Methods for Generating Bit Matrices for Hash Functions Using Fast Filtering |
CN106682184A (zh) * | 2016-12-29 | 2017-05-17 | 华中科技大学 | 一种基于日志合并树结构的轻量级合并方法 |
CN106844650A (zh) * | 2017-01-20 | 2017-06-13 | 中国科学院计算技术研究所 | 一种日志合并树的合并方法及系统 |
GB201720946D0 (en) * | 2017-12-15 | 2018-01-31 | Nchain Holdings Ltd | Computer-implemented system and method |
CN108717448A (zh) * | 2018-05-18 | 2018-10-30 | 南京大学 | 一种面向键值对存储的范围查询过滤方法和键值对存储系统 |
CN110413612A (zh) * | 2019-07-02 | 2019-11-05 | 华中科技大学 | 一种基于混合索引的混合内存性能优化方法及系统 |
-
2023
- 2023-07-18 CN CN202310880889.6A patent/CN116595015B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150120754A1 (en) * | 2013-10-31 | 2015-04-30 | Oracle International Corporation | Systems and Methods for Generating Bit Matrices for Hash Functions Using Fast Filtering |
CN106682184A (zh) * | 2016-12-29 | 2017-05-17 | 华中科技大学 | 一种基于日志合并树结构的轻量级合并方法 |
CN106844650A (zh) * | 2017-01-20 | 2017-06-13 | 中国科学院计算技术研究所 | 一种日志合并树的合并方法及系统 |
GB201720946D0 (en) * | 2017-12-15 | 2018-01-31 | Nchain Holdings Ltd | Computer-implemented system and method |
CN108717448A (zh) * | 2018-05-18 | 2018-10-30 | 南京大学 | 一种面向键值对存储的范围查询过滤方法和键值对存储系统 |
CN110413612A (zh) * | 2019-07-02 | 2019-11-05 | 华中科技大学 | 一种基于混合索引的混合内存性能优化方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116595015B (zh) | 2023-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10649827B2 (en) | Two level addressing in storage clusters | |
US11082206B2 (en) | Layout-independent cryptographic stamp of a distributed dataset | |
US10002148B2 (en) | Memory-aware joins based in a database cluster | |
US8892531B2 (en) | Scalable file management for a shared file system | |
EP2501108B1 (en) | Massively scalable object storage system | |
US8140625B2 (en) | Method for operating a fixed prefix peer to peer network | |
US8762353B2 (en) | Elimination of duplicate objects in storage clusters | |
US7447839B2 (en) | System for a distributed column chunk data store | |
US8214388B2 (en) | System and method for adding a storage server in a distributed column chunk data store | |
US20120197958A1 (en) | Parallel Serialization of Request Processing | |
CN106716412B (zh) | 用于支持分布式计算环境中的零拷贝二进制基数树的系统和方法 | |
US7457935B2 (en) | Method for a distributed column chunk data store | |
EP3200431A2 (en) | Massively scalable object storage system | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及系统 | |
CN113672175A (zh) | 分布式对象存储方法、装置和设备及计算机存储介质 | |
WO2019001020A1 (zh) | 基于分布式系统的存储空间整理方法、装置及系统 | |
CN111144582B (zh) | 训练及更新机器学习模型的方法及相应装置 | |
CN111708894A (zh) | 一种知识图谱创建方法 | |
CN116595015B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN115114294A (zh) | 数据库存储模式的自适应方法、装置、计算机设备 | |
CN114168588A (zh) | 一种向量数据库存储与检索方法 | |
CN107168645B (zh) | 一种分布式系统的存储控制方法及系统 | |
CN117075823B (zh) | 对象查找方法、系统、电子设备及存储介质 | |
CN114244855B (zh) | 指纹文件的存储方法、装置、设备及可读存储介质 | |
CN114020986B (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 |