CN117556088A - 内存多维数据库的数据管理方法及装置 - Google Patents
内存多维数据库的数据管理方法及装置 Download PDFInfo
- Publication number
- CN117556088A CN117556088A CN202311458458.7A CN202311458458A CN117556088A CN 117556088 A CN117556088 A CN 117556088A CN 202311458458 A CN202311458458 A CN 202311458458A CN 117556088 A CN117556088 A CN 117556088A
- Authority
- CN
- China
- Prior art keywords
- target
- memory block
- data
- node
- bitmap
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000013523 data management Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 38
- 239000002243 precursor Substances 0.000 claims description 40
- 238000013499 data model Methods 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 17
- 238000004590 computer program Methods 0.000 description 9
- 238000011084 recovery Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004064 recycling Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013507 mapping 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
- 238000005457 optimization Methods 0.000 description 1
- 239000007787 solid Substances 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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
-
- 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/5016—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 the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种内存多维数据库的数据管理方法及装置,涉及数据处理技术领域,该方法包括:基于待操作数据的操作类型,确定对应的目标内存块,其中,所述目标内存块中的节点类型与所述待操作数据的节点类型相同;确定所述待操作数据在所述目标内存块中的目标位置;将所述待操作数据在所述目标位置进行处理。由此,在对内存多维数据进行处理时,可以基于待操作数据的操作类型,快速确定出目标内存块及目标位置,之后再进行相应的操作与处理,由于该内存多维数据中的节点、内存块等较为规律,从而对其进行处理的过程中,不涉及多余数据的查找与操作,从而节省了时间,提高了对内存多维数据进行处理的效率。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种内存多维数据库的数据管理方法及装置。
背景技术
随着计算机技术的发展,需要用到的内存数据也越来越多,通常为了便于内存数据的存储与管理,内存多维数据库也应用的越来越广泛。但是因为所有数据都常驻内存,对数据库内存资源的管理提出了更高的要求。内存多维数据库中占用内存最大的模块是多维立方体,也称多维模型,多维模型的数据存储,逻辑上通常是按平衡多叉树形数据结构来组织。
相关技术中,在对多维模型中的数据进行管理时,通常需要从整个树形数据结构考虑,由于涉及到的数据较多、节点类型也较为复杂,从而在对数据进行处理时,需要消耗较长时间,从而可能影响对数据处理的效率。由此,如何提高对内存多维数据进行处理的效率,显得至关重要。
发明内容
本申请提供一种内存多维数据库的数据管理方法及装置。
根据本申请的第一方面,提供一种内存多维数据库的数据管理方法,该方法包括:基于待操作数据的操作类型,确定对应的目标内存块,其中,所述目标内存块中的节点类型与所述待操作数据的节点类型相同;确定所述待操作数据在所述目标内存块中的目标位置;将所述待操作数据在所述目标位置进行处理。
在一些实施方式中,所述基于待操作数据的操作类型,确定对应的目标内存块,包括:在所述待操作数据的操作类型为写入操作的情况下,基于所述待操作数据的节点类型,确定第一目标状态位图,其中,所述第一目标状态位图中的节点类型与所述待操作数据的节点类型相同;基于所述第一目标状态位图,确定对应的第一目标内存块。
在一些实施方式中,所述确定所述待操作数据在所述目标内存块中的目标位置,包括:基于所述第一目标位图中每个节点当前的使用状态,确定第一目标节点;确定所述第一目标节点在所述第一目标内存块中的第一目标位置。
在一些实施方式中,所述将所述待操作数据在所述目标位置进行处理,包括:将所述待操作数据写入所述第一目标位置;将所述第一目标位图中所述第一目标节点的使用状态进行更新。
在一些实施方式中,所述在所述待操作数据的操作类型为写入操作的情况下,基于所述待操作数据的节点类型,确定第一目标状态位图,包括:基于所述待操作数据的节点类型,从多维数据模型对应的多个状态位图链表中,确定第一目标状态位图链表,其中,所述第一目标状态位图链表中每个第一状态位图中的节点类型与所述待操作数据的节点类型相同;基于所述第一目标状态位图链表中每个第一状态位图的所在位置及节点利用率,确定第一目标状态位图。
在一些实施方式中,所述基于所述第一目标状态位图链表中每个第一状态位图的所在位置及节点利用率,确定第一目标状态位图,包括:在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率小于第一阈值的情况下,将所述第一状态位图确定为第一目标状态位图;在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率等于第一阈值的情况下,根据所述第一状态位图的前驱位图,确定第一目标状态位图。
在一些实施方式中,所述在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率等于第一阈值的情况下,根据所述第一状态位图的前驱位图,确定第一目标状态位图,包括:在所述第一状态位图的前驱位图的地址不为空的情况下,将所述第一状态位图的前驱位图确定为第一目标状态位图,其中所述第一目标状态位图链表中各个第一状态位图按照节点利用率由低至高排列;或者在所述第一状态位图的前驱位图的地址为空的情况下,分配新的状态位图及关联的新的内存块;将所述新的状态位图确定为第一目标状态位图;将所述新的状态位图确定为所述第一目标状态位图链表中的表头位图、将所述新的内存块确定为所述第一目标内存块所在的第一目标内存块链表中的表头内存块。
在一些实施方式中,所述基于待操作数据的操作类型,确定对应的目标内存块,包括:在所述待操作数据的操作类型为删除操作的情况下,基于所述待操作数据的节点类型,确定第二目标内存块链表;基于所述待操作数据的节点地址,从所述第二目标内存块链表中确定第二目标内存块。
在一些实施方式中,所述确定所述待操作数据在所述目标内存块中的目标位置,包括:基于所述待操作数据的节点地址,确定所述待操作数据的节点在所述第二目标内存块中的第二目标位置。
在一些实施方式中,所述将所述待操作数据在所述目标位置进行处理,包括:将所述第二目标内存块关联的第二目标状态位图中所述第二目标位置对应的第二目标节点的使用状态进行更新;将所述第二目标内存块中的有效节点的数量进行更新;基于更新后的所述第二目标内存块中的有效节点的数量,将所述第二目标状态位图在所述第二目标状态位图链表中的位置进行更新、以及将所述第二目标内存块在所述第二目标内存块链表中的位置进行更新。
根据本申请的第二方面,提供一种内存多维数据的数据管理装置,其包括:第一确定模块,用于基于待操作数据的操作类型,确定对应的目标内存块,其中,所述目标内存块中的节点类型与所述待操作数据的节点类型相同;第二确定模块,用于确定所述待操作数据在所述目标内存块中的目标位置;处理模块,用于将所述待操作数据在所述目标位置进行处理。
在一些实施方式中,所述第一确定模块包括:第一确定子模块,用于在所述待操作数据的操作类型为写入操作的情况下,基于所述待操作数据的节点类型,确定第一目标状态位图,其中,所述第一目标状态位图中的节点类型与所述待操作数据的节点类型相同;第二确定子模块,用于基于所述第一目标状态位图,确定对应的第一目标内存块。
在一些实施方式中,所述第二确定模块具体用于:基于所述第一目标位图中每个节点当前的使用状态,确定第一目标节点;确定所述第一目标节点在所述第一目标内存块中的第一目标位置。
在一些实施方式中,所述处理模块具体用于:将所述待操作数据写入所述第一目标位置;将所述第一目标位图中所述第一目标节点的使用状态进行更新。
在一些实施方式中,所述第一确定子模块包括:第一确定单元,用于基于所述待操作数据的节点类型,从多维数据模型对应的多个状态位图链表中,确定第一目标状态位图链表,其中,所述第一目标状态位图链表中每个第一状态位图中的节点类型与所述待操作数据的节点类型相同;第二确定单元,用于基于所述第一目标状态位图链表中每个第一状态位图的所在位置及节点利用率,确定第一目标状态位图。
在一些实施方式中,所述第二确定单元包括:第一确定子单元,用于在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率小于第一阈值的情况下,将所述第一状态位图确定为第一目标状态位图;第二确定子单元,用于在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率等于第一阈值的情况下,根据所述第一状态位图的前驱位图,确定第一目标状态位图。在一些实施方式中,所述第二确定子单元具体用于:在所述第一状态位图的前驱位图的地址不为空的情况下,将所述第一状态位图的前驱位图确定为第一目标状态位图,其中所述第一目标状态位图链表中各个第一状态位图按照节点利用率由低至高排列;或者在所述第一状态位图的前驱位图的地址为空的情况下,分配新的状态位图及关联的新的内存块;将所述新的状态位图确定为第一目标状态位图;将所述新的状态位图确定为所述第一目标状态位图链表中的表头位图、将所述新的内存块确定为所述第一目标内存块所在的第一目标内存块链表中的表头内存块。
在一些实施方式中,所述第一确定模块还包括:第三确定子模块,用于在所述待操作数据的操作类型为删除操作的情况下,基于所述待操作数据的节点类型,确定第二目标内存块链表;第四确定子模块用于基于所述待操作数据的节点地址,从所述第二目标内存块链表中确定第二目标内存块。
在一些实施方式中,所述第二确定模块还具体用于:基于所述待操作数据的节点地址,确定所述待操作数据的节点在所述第二目标内存块中的第二目标位置。
在一些实施方式中,所述处理模块还具体用于:将所述第二目标内存块关联的第二目标状态位图中所述第二目标位置对应的节点的使用状态进行更新;将所述第二目标内存块中的有效节点的数量进行更新;基于更新后的所述第二目标内存块中的有效节点的数量,将所述第二目标状态位图在所述第二目标状态位图链表中的位置进行更新、以及将所述第二目标内存块在所述第二目标内存块链表中的位置进行更新。
根据本申请的第三方面,提供一种电子设备,电子设备包括:处理器以及存储有计算机程序指令的存储器;处理器执行计算机程序指令时实现上述的任一种内存多维数据库的数据管理方法。
根据本申请的第四方面,提供一种计算机可读存储介质,其特征在于,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述的任一种内存多维数据库的数据管理方法。
综上所述,本申请提供的内存多维数据库的数据管理方法及装置至少具有以下有益效果:可以先基于待操作数据的操作类型,确定对应的目标内存块,其中,目标内存块中的节点类型与待操作数据的节点类型相同,之后可以确定待操作数据在目标内存块中的目标位置,并将待操作数据在目标位置进行处理。由此,在对内存多维数据进行处理时,可以基于待操作数据的操作类型,快速确定出目标内存块及目标位置,之后再进行相应的操作与处理,由于该内存多维数据中的节点、内存块等较为规律,从而对其进行处理的过程中,不涉及多余数据的查找与操作,从而节省了时间,提高了对内存多维数据进行处理的效率。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域的技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请的实施例提供的一种内存多维数据库的数据管理方法的流程图;
图2为本申请的实施例提供的内存块链表、块内节点和节点使用状态位图的示意图;
图3为本申请的实施例提供的一种内存多维数据库的数据管理方法中的写入操作流程图;
图4为本申请的实施例提供的一种内存多维数据库的数据管理方法中的删除操作流程图;
图5为本申请的实施例提供的一种内存多维数据库的数据管理方法中的内存回收操作流程图;
图6为本申请的实施例提供的在待操作数据的操作类型为写入操作的情况下,内存多维数据库的数据管理装置的结构图;
图7为本申请的实施例提供的在待操作数据的操作类型为删除操作的情况下,内存多维数据库的数据管理装置的结构图;
图8为本申请的实施例提供的一种电子设备的结构图。
具体实施方式
为了使本申请的上述以及其他特征和优点更加清楚,下面结合附图进一步描述本申请。应当理解,本文给出的具体实施例是出于向本领域的技术人员解释的目的,仅是示例性的,而非限制性的。
在以下描述中,阐述了许多具体细节以提供对本申请的透彻理解。然而,对于本领域的技术人员来说,明显的是,不需要采用具体细节来实践本申请。在其他情况下,未详细描述众所周知的步骤或操作,以避免模糊本申请。
本申请实施例提供的内存多维数据库的数据管理方法,可由本申请实施例提供的内存多维数据的数据管理装置执行,该装置可配置于电子设备中。
图1为本申请的实施例提供的一种内存多维数据库的数据管理方法的流程图,参考图1,本申请实施例提供的一种内存多维数据库的数据管理方法包括以下步骤。
步骤101,基于待操作数据的操作类型,确定对应的目标内存块,其中,目标内存块中的节点类型与待操作数据的节点类型相同。
其中,待操作数据的操作类型可以有多种,比如可以为写入操作,或者也可以为删除操作,或者还可以为内存回收操作等等,本申请对此不做限定。
另外,目标内存块中的节点类型与待操作数据的节点类型相同,也即本申请实施例中,由于内存多维数据库中可以包含大量数据,为了便于对数据管理及操作,每个内存块中可以仅存储一种类型的节点,比如内存块1可以存储类型1的节点,内存块2和内存块3可以存储类型2的节点等等,本申请对此不做限定。
另外,在基于待操作数据的操作类型,确定对应的目标内存块时,可以有多种方式。
可选的,在待操作数据的操作类型为写入操作的情况下,可以基于待操作数据的节点类型,确定第一目标状态位图,之后可以基于第一目标状态位图,确定对应的第一目标内存块。需要说明的是,本文涉及到的第一目标状态位图、第一目标内存块均与写入操作相对应,且第一目标状态位图及第一目标内存块的确定方式见下文所述。
其中,第一目标状态位图中的节点类型与待操作数据的节点类型相同,第一目标状态位图中的节点类型也与第一目标内存块中的节点类型相同。
可以理解的是,本申请实施例中,由于内存多维数据库中包含大量数据,为了便于对数据管理及操作,内存多维数据库中的逻辑数据树中的树节点存储在内存块链表中:每个内存块中可以仅存储一种类型的节点,由于存储同一种类型节点的内存块可以为一个或者也可以为多个,从而存储不同类型节点的多个内存块又可以构成各类型节点分别对应的内存块链表。由于每一个内存块中设置的节点数量相同,存储的节点可能均为有效节点、或者也可以均为无效节点,或者还可以包含有效节点及无效节点,从而为了表征每个内存块中节点的使用状态,每个内存块对应设置有状态位图(即节点使用状态图),相应的,存储同一类型节点的内存块的状态位图又可以构成状态位图链表。对于存储某一类型节点的内存块链表来说,该内存块链表中包含的多个内存块可以按照节点利用率由低至高顺序排列,也即该内存块链表的表头内存块为节点利用率最低的内存块、该内存块链表尾部的内存块为节点利用率最高的内存块。相应的,状态位图链表中的各个状态位图的位置也与各内存块的节点利用率相对应。
节点按大小不同划分,有32种不同类型的节点,按照节点大小从小到大排序依次为类型1节点,类型2节点,直到类型32节点。每种类型的节点都有对应的内存块链表,本申请以类型1节点和类型2节点的内存块链表为例说明。
图2为本申请的实施例提供的内存块链表、块内节点和节点使用状态位图的示意图。在图2所示的示意图中,内存块1-1、内存块1-2、……及内存块1-M存储类型1节点,构成内存块链表1(如图2中的2.1所示);各个内存块的节点示意图与各个内存块相对应,该节点示意图中的末尾部分用于表征该内存块中的有效节点数量(如图2中的2.2所示);各个内存块的状态位图也与各个内存块相对应,状态位图1-1、状态位图1-2、……及状态位图1-M构成类型1节点的状态位图链表1(如图2中的2.3所示)。
内存块2-1、内存块2-2、……及内存块2-K存储类型2节点,构成内存块链表2(如图2中的2.4所示);各个内存块的节点示意图与各个内存块相对应,该节点示意图中的末尾部分用于表征该内存块中的有效节点数量(如图2中的2.5所示);各个内存块的状态位图也与各个内存块相对应,状态位图2-1、状态位图2-2、……及状态位图2-K构成类型2节点的状态位图链表2(如图2中的2.6所示)。
需要说明的是,图2中的2.3和2.6中的各个状态位图中的“1”用于表征该节点内存储有数据、该节点当前的状态为有效、该节点可以称为有效节点;“0”用于表征该节点内未存储数据、该节点当前的状态为无效、该节点可以称为无效节点。各个内存块可以按照有效节点数量由低至高排列,构成内存块链表,各个状态位图与各个内存块一一对应,并构成状态位图链表。为了使节点和内存块的管理更加高效,每个内存块中只包含固定大小的节点,并且每个内存块中的节点个数相等。
图2中的2.7展示了单个多维数据模型的数据树的逻辑视图,该数据树由各级节点组成,相邻层级的节点有父子关系,每个节点的下一级有多个子节点,节点的类型可以不同。以图2.7中的3个节点举例说明数据树节点跟内存块链表之间的关系:最上方的节点是数据树的根节点,该节点是类型1节点,其分配在内存块链表1中的内存块1-1中的节点N;根节点有2个子节点,左边的子节点也是类型1节点,其分配在内存块链表1中的内存块1-M中的节点3;根节点右边的子节点是类型2节点,其分配在内存块链表2中的内存块2-2中的节点1。可见单个多维模型树上的所有节点实际上可分布于不同内存块链表的不同内存块中。
上述示例只是示意性说明,不能作为对本申请实施例中节点类型、内存块数量及标号、状态位图等的限定。
从而,本申请实施例中,在待操作数据的操作类型为写入操作的情况下,可以先基于该待操作数据的节点类型,确定第一目标状态位图,之后再基于该第一目标状态位图,确定对应的第一目标内存块。
举例来说,在待操作数据的操作类型为写入操作的情况下,若该待操作数据的节点为类型1,存储类型1节点的内存块对应的状态位图分别为:内存块1-1对应的状态位图1-1、内存块1-2对应的状态位图1-2、……、内存块1-M对应的状态位图1-M。各个状态位图可以用于表征该内存块中的各个节点的使用状态,可以基于各个内存块中有效节点的数量与该内存块的节点数量的比值,确定节点利用率,之后可以基于节点利用率确定第一目标状态位图,比如可以将节点利用率最高的状态位图确定为第一目标状态位图,如图2.3中类型1节点对应的状态位图1-M。或者,由于各个内存块中的节点数量都相同,也可以直接基于有效节点的数量确定第一目标状态位图,比如可以将有效节点的数量最高的状态位图确定为第一目标状态位图,如图2中类型1节点对应的状态位图1-M。
可以理解的是,由于各个状态位图与内存块为一一对应的,也即二者呈关联关系,从而本申请实施例中,在确定出第一目标状态位图后,可以将与该第一目标状态位图关联的内存块确定为第一目标内存块等等,本申请对此不做限定。
可选的,在待操作数据的操作类型为删除操作的情况下,可以相应的确定出第二目标内存块等等,此处不再赘述(具体见下文步骤401-406部分所述)。
可以理解的是,本申请实施例中的目标内存块可以包括第一目标内存块及第二目标内存块等,本申请对此不做限定。其中,第一目标内存块对应写入操作中确定出的内存块,第二目标内存块对应删除操作中确定出的内存块。
步骤102,确定待操作数据在目标内存块中的目标位置。
可选的,可以基于该目标内存块中各个节点的使用状态,确定出该待操作数据在该目标内存块中的目标位置。
举例来说,在待操作数据为写入数据的情况下,可以先确定出第一目标内存块中各个节点的使用状态,之后可以将无效节点对应的位置确定为第一目标位置。若该第一目标内存块中仅包含一个无效节点,那么该无效节点所在位置即为第一目标位置。若该第一目标内存块中包含多个无效节点,那么可以将多个无效节点中任意一个无效节点所在位置确定为第一目标位置等等,本申请对此不做限定。
可选的,在待操作数据的操作类型为删除操作的情况下,可以基于该待操作数据确定出第二目标内存块,之后再在该第二目标内存块中确定出第二目标位置等等,此处不再赘述。
步骤103,将待操作数据在目标位置进行处理。
可以理解的是,在确定出第一目标位置后,可以将该待操作数据在该第一目标位置对应的第一目标节点处进行写入并更新节点的使用状态。在确定出第二目标位置后,可以将该第二目标位置对应的第二目标节点的使用状态进行更新等等。从而,本申请实施例中,由于各数据按照节点类型在相应的内存块中进行存储,从而在需要对数据进行处理操作时,可以基于待操作数据的操作类型及节点类型,快速定位至目标内存块及目标位置,之后再进行操作处理,从而简化了内存块的管理,提高了节点管理的效率,从而可以使得内存多维数据的处理更为高效。
本申请实施例,可以先基于待操作数据的操作类型,确定对应的目标内存块,其中,目标内存块中的节点类型与待操作数据的节点类型相同,之后可以确定待操作数据在目标内存块中的目标位置,并将待操作数据在目标位置进行处理。由此,在对内存多维数据进行处理时,可以基于待操作数据的操作类型,快速确定出目标内存块及目标位置,之后再进行相应的操作与处理,由于该内存多维数据中的节点、内存块等较为规律,从而对其进行处理的过程中,不涉及多余数据的查找与操作,从而节省了时间,提高了对内存多维数据进行处理的效率。
图3为本申请的实施例提供的一种内存多维数据库的数据管理方法中的写入操作流程图。如图3所示,该内存多维数据库的数据管理方法可以包括以下步骤。
步骤301,在待操作数据的操作类型为写入操作的情况下,基于待操作数据的节点类型,从多维数据模型对应的多个状态位图链表中,确定第一目标状态位图链表。
其中,第一目标状态位图链表中每个第一状态位图中的节点类型可以与待操作数据的节点类型相同。
其中,多维数据模型中可以包含多个状态位图链表,每个状态位图链表中可以包含至少一个某一类型节点对应的状态位图。比如,在图2所示的示意图中,状态位图链表1中的各个状态位图为类型1节点的相关状态位图、状态位图链表2中的各个状态位图为类型2节点的相关状态位图等等,本申请对此不做限定。
举例来说,若当前多维数据模型对应有5个状态位图链表,状态位图链表1与类型1节点相对应、状态位图链表2与类型2节点相对应、状态位图链表3与类型3节点相对应、状态位图链表4与类型4节点相对应、状态位图链表5与类型5节点相对应,若当前待操作数据的节点类型为类型3,那么可以将状态位图链表3确定为第一目标状态位图链表。
需要说明的是,上述示例只是示意性说明,不能作为对本申请实施例中确定第一目标状态位图链表的方式等的限定。
步骤302,基于第一目标状态位图链表中每个第一状态位图的所在位置及节点利用率,确定第一目标状态位图。
其中,第一目标状态位图链表中可以包含有多个第一状态位图,各个第一状态位图在第一目标状态位图链表中的所在位置通常也不相同,各个第一状态位图中的节点利用率可以相同,或者也可以不同等等,本申请对此不做限定。
从而,本申请实施例中,在基于第一目标状态位图链表中每个第一状态位图的所在位置及节点利用率,确定第一目标状态位图时,可以有多种情况。
可选的,在第一目标状态位图链表中位于尾部的第一状态位图的节点利用率小于第一阈值的情况下,可以将第一状态位图确定为第一目标状态位图;在第一目标状态位图链表中位于尾部的第一状态位图的节点利用率等于第一阈值的情况下,可以根据第一状态位图的前驱位图,确定第一目标状态位图。
其中,第一阈值可以为提前设定的数值,比如可以为100%。第一目标状态位图链表中的各个第一状态位图,可以按照节点利用率由低至高的顺序进行排列,也即位于该第一目标状态位图链表表头位置的第一状态位图的节点利用率最低,位于该第一目标状态位图链表尾部位置的第一状态位图的节点利用率最高。
另外,由于在某一状态位图链表中各个状态位图按照节点利用率由低至高的顺序进行排列,前驱位图可以理解为比当前状态位图的节点利用率小、且最接近当前状态位图的状态位图,在该状态位图链表中其位于当前状态位图的左侧;而后继位图可以理解为比当前状态位图的节点利用率大、且最接近当前状态位图的状态位图,在该状态位图链表中其位于当前状态位图的右侧。比如,在图2.3所示的示意图中,状态位图1-1为状态位图1-2的前驱位图(反过来说,状态位图1-2为状态位图1-1的后继位图),状态位图1-3为状态位图1-2的后继位图(反过来说,状态位图1-2为状态位图1-3的前驱位图),本申请对此不做限定。
可以理解的是,若第一状态位图的节点利用率小于第一阈值,可以认为该第一状态位图中存在无效节点,此时表明该第一状态位图对应的第一内存块具有内存空间去存储数据。或者,若第一状态位图的节点利用率等于第一阈值,可以认为该第一状态位图中没有无效节点,此时表明该第一状态位图对应的第一内存块有没有内存空间去存储数据。
可以理解的是,在根据第一状态位图的前驱位图,确定第一目标状态位图时,也可以有多种情况。
可选的,可以在第一状态位图的前驱位图的地址不为空的情况下,将第一状态位图的前驱位图确定为第一目标状态位图,其中,第一目标状态位图链表中各个第一状态位图按照节点利用率由低至高排列。
可选的,也可以在第一状态位图的前驱位图的地址为空的情况下,分配新的状态位图及关联的新的内存块,之后可以将新的状态位图确定为第一目标状态位图,并将新的状态位图确定为第一目标状态位图链表中的表头位图、将新的内存块确定为第一目标内存块所在的第一目标内存块链表中的表头内存块。
其中,确定第一状态位图的前驱位图的地址是否存在,也即确定第一状态位图的前驱位图的地址是否为空时,可以采用任何可取的方式,本申请对此不做限定。
另外,若确定第一状态位图的前驱位图的地址不为空,可以表明该第一状态位图的前驱位图存在,此时可以直接将该第一状态位图的前驱位图确定为第一目标状态位图。
可选的,若当前第一状态位图的前驱位图不为空、但该第一状态位图的前驱位图的节点利用率也等于第一阈值,那么可以在该第一目标状态位图链表中继续向前寻找。
比如,当前第一状态位图为状态位图1-10、其前驱位图为状态位图1-9,若当前状态位图1-9的地址存在、但其节点利用率等于第一阈值,那么可以继续在第一目标状态位图链表中继续向前寻找该状态位图1-9的前驱位图。若该状态位图1-9的前驱位图为状态位图1-8的节点利用率小于第一阈值,那么可以将该状态位图1-8确定为第一目标状态位图。
若从状态位图1-10直至遍历至状态位图1-1,各个状态位图的节点利用率均等于第一阈值,该状态位图1-1的前驱位图地址为空,那么此时可以分配新的状态位图0、以及关联的新的内存块0,并将该新的状态位图0确定为第一目标状态位图,以及将该新的状态位图0确定为当前第一目标状态位图链表中的表头位图、将新的内存块0确定为第一目标内存块所在的第一目标内存块链表中的表头内存块。
需要说明的是,上述示例只是示意性说明,不能作为对本申请实施例中第一阈值、第一状态位图、前驱位图等的限定。
步骤303,基于第一目标状态位图,确定对应的第一目标内存块。
可以理解的是,由于各状态位图与各内存块均呈关联状态,因此若确定出第一目标状态位图,即可确定出与其对应的第一目标内存块。比如,在图2所示的示意图中,若确定出第一目标状态位图为状态位图1-2,那么可以确定与其对应的第一目标内存块为内存块1-2等等,本申请对此不做限定。
从而,本申请实施例中,在对内存多维数据进行写入操作时,由于内存多维数据中的各个节点按照类型在对应的内存块中分类进行存储,从而可以基于该待操作数据的节点类型,较为便捷、准确地确定出第一目标状态位图及第一目标内存块,避免了由于节点存储混乱而导致的繁杂情况的发生,为后续进行写入操作节省了时间,提高了效率。
步骤304,基于第一目标位图中每个节点当前的使用状态,确定第一目标节点。
其中,由于待操作数据的操作类型为写入操作,那么可以先确定出该第一目标位图中每个节点当前的使用状态,优选地将第一个无效状态的节点确定为第一目标节点。当然不仅限于此,在确定出该第一目标位图中每个节点当前的使用状态后,也可以将最后一个无效状态的节点确定为第一目标节点,或者还可以将任意一个无效状态的节点确定为第一目标节点等等,本申请对此不做限定。
步骤305,确定第一目标节点在第一目标内存块中的第一目标位置。
可以理解的是,确定出第一目标节点后,可以基于第一目标节点的序号或地址,确定出其在第一目标内存块中的第一目标位置。比如,在第一目标节点为第一目标状态位图中的节点n的情况下,可以确定第一目标节点在第一目标内存块中的第一目标位置为第n个节点对应的位置,本申请对此不做限定。这里,假设第1个节点的节点地址为addr1,则第n个节点对应的节点地址为addr1+s*(n-1),s为节点的大小。
步骤306,将待操作数据写入第一目标位置。
步骤307,将第一目标位图中第一目标节点的使用状态进行更新。
可以理解的是,在确定出第一目标位置后,可以将该待操作数据写入第一目标位置,并将该第一目标位图中该第一目标节点的使用状态进行更新。比如,可以将该第一目标位图中该第一目标节点的使用状态更新为有效状态、并且将第一目标内存块中的有效节点的数量加1等等,本申请对此不做限定。
本申请实施例,可以在待操作数据的操作类型为写入操作的情况下,基于待操作数据的节点类型,从多维数据模型对应的多个状态位图链表中,确定第一目标状态位图链表,之后可以基于第一目标状态位图链表中每个第一状态位图的所在位置及节点利用率,确定第一目标状态位图,并基于第一目标状态位图,确定对应的第一目标内存块,之后可以基于第一目标位图中每个节点当前的使用状态,确定第一目标节点,并确定第一目标节点在第一目标内存块中的第一目标位置,之后再将待操作数据写入第一目标位置,并将第一目标位图中第一目标节点的使用状态进行更新,并且将第一目标内存块中的有效节点的数量进行更新。由此,在对内存多维数据进行写入操作时,可以基于该待操作数据的节点类型,较为便捷快速地确定出第一目标状态位图、第一目标内存块,进而确定出第一目标节点对应的第一目标位置,之后即可在该第一目标位置处执行写入操作,由于该内存多维数据中的节点、内存块等较为规律,从而对其进行处理的过程中,不涉及多余数据的查找与操作,从而节省了时间,提高了对内存多维数据进行处理的效率。
图4为本申请的实施例提供的一种内存多维数据库的数据管理方法中的删除操作流程图。如图4所示,该内存多维数据库的数据管理方法可以包括以下步骤。
步骤401,在待操作数据的操作类型为删除操作的情况下,基于待操作数据的节点类型,确定第二目标内存块链表。
其中,在待操作数据的操作类型为删除操作的情况下,由于各节点在存储时按照类型在各个内存块中分类进行存储,从而本申请实施例中,可以基于待操作数据的节点类型,确定与该节点类型对应的第二目标内存块链表。
举例来说,若当前多维数据模型对应的内存块链表有六个,分别与类型1节点、类型2节点、类型3节点、类型4节点、类型5节点及类型6节点相对应,若当前待操作数据的节点类型为类型3,那么可以类型3节点对应的内存块链表确定为第二目标内存块链表等等,本申请对此不做限定。
步骤402,基于待操作数据的节点地址,从第二目标内存块链表中确定第二目标内存块。
其中,可以基于待操作数据的节点地址,对第二目标内存块链表中的各个内存块的地址进行判断,以确定第二目标内存块。
举例来说,若待操作数据的节点地址为addrA,其为类型1节点,每个类型1节点的大小为S,单个内存块内的节点总数为N,那么可以通过计算该节点所在块的起始地址的范围区间,以确定第二目标内存块。
具体地,若该待操作数据的节点是所在内存块的第一个节点,则该内存块的起始地址也是addrA,也即该节点的起始地址。若该待操作数据的节点是所在内存块的最后一个节点,则该内存块的起始地址可以为addrA-(N-1)*S,那么可以确定该待操作数据的节点所在内存块的起始地址的范围区间可以为:[addrA-(N-1)*S,addrA],之后可以遍历该第二目标内存块链表中的各个内存块,并可以将第一个起始地址落在该区间范围内的内存块确定为第二目标内存块。
需要说明的是,上述示例只是示意性说明,不能作为对本申请实施例中确定第二目标内存块的方式等的限定。
步骤403,基于待操作数据的节点地址,确定待操作数据的节点在第二目标内存块中的第二目标位置。
其中,可以基于该待操作数据的节点地址及第二目标内存块的起始地址,确定待操作数据的节点在第二目标内存块中的第二目标位置,可以使用节点在第二目标内存块中的序号表示该第二目标位置。
举例来说,若待操作数据节点的起始地址为addrA,确定出的第二目标内存块的起始地址为addrB,那么可以确定该待操作数据节点在该第二目标内存块内的序号可以为:seqNo=(addrA-addrB)/S+1,其中,此处的第二目标内存块内第一个节点的序号为1。
需要说明的是,上述示例只是示意性说明,不能作为对本申请实施例中确定待操作数据的节点在第二目标内存块中的第二目标位置的方式等的限定。
从而,本申请实施例中,由于内存多维数据中的节点及内存块等均分类存储,从而通过待操作数据的节点类型,可以快速准确地定位至第二目标内存块,进而基于该待操作数据的节点地址可以较为快速地确定出其在第二目标内存块内的具体位置,之后即可进行相应的处理操作,该过程避免了杂乱无章的数据查找,减少了数据定位过程,节省了时间,从而提高了对内存多维数据进行处理的效率。
步骤404,将第二目标内存块关联的第二目标状态位图中第二目标位置对应的第二目标节点的使用状态进行更新,即将有效状态更新为无效状态。
步骤405,将第二目标内存块中的有效节点的数量进行更新。
步骤406,基于更新后的第二目标内存块中的有效节点的数量,将第二目标状态位图在第二目标状态位图链表中的位置进行更新、以及将第二目标内存块在第二目标内存块链表中的位置进行更新。
可以理解的是,由于已将第二目标位置对应的第二目标节点的使用状态进行更新,即该第二目标位置对应的第二目标节点的使用状态由有效节点转变为无效节点,此时第二目标内存块内的有效节点数量减一。相应的,由于第二目标内存块中的第二目标状态位图中节点的有效状态发生了变化,那么可以将该第二目标内存块在第二目标内存块链表中的位置进行更新、将该第二目标状态位图在第二目标状态位图链表中的位置进行更新。
由于第二目标内存块链表中各个内存块及第二目标状态位图中的各个状态位图均按照节点利用率由低至高顺序排列,那么可以基于该第二目标内存块中有效节点的数量,将第二目标内存块、第二目标状态位图分别朝各自表头位置移动相应位置等等。由此,在对内存多维数据进行操作与处理后,通过对第二目标状态位图、第二目标内存块、第二目标内存块链表及第二目标状态位图链表分别进行更新,保证了内存多维数据的内存块、状态位图等的数据一致性,提高了内存多维数据存储的准确性与可靠性,为后续继续进行数据处理提供了可靠条件。
本申请实施例,可以在待操作数据的操作类型为删除操作的情况下,基于待操作数据的节点类型,确定第二目标内存块链表,之后基于待操作数据的节点地址,从第二目标内存块链表中确定第二目标内存块,之后再基于待操作数据的节点地址,确定待操作数据的节点在第二目标内存块中的第二目标位置,可以将第二目标内存块关联的第二目标状态位图中第二目标位置对应的第二目标节点的使用状态进行更新,之后更新第二目标内存块中的有效节点的数量,之后将第二目标状态位图在第二目标状态位图链表中的位置进行更新、以及将第二目标内存块在所述第二目标内存块链表中的位置进行更新。由此,在对内存多维数据进行删除操作时,可以基于该待操作数据的节点类型,较为便捷快速地确定出第二目标内存块,进而确定出第二目标位置,之后即可对该第二目标位置对应的第二目标节点的使用状态进行更新,该过程不涉及到对其他类型节点数据的处理,节省了时间,提高了对内存多维数据进行处理的效率。
可选的,本申请提供的内存多维数据库的数据管理方法还可以应用于对内存多维数据中的多维模型内存回收与内存释放。图5为本申请的实施例提供的一种内存多维数据库的数据管理方法中的内存回收操作流程图,下面结合图5对本申请提供的内存多维数据的多维模型内存回收与内存释放过程进行简单说明。
步骤501,响应于接收到多维模型的内存回收指令,确定第三目标内存块链表,其中,第三目标内存块链表中的内存块的节点类型均相同。
其中,多维模型内存回收指令可以为接收到的用户通过控件、按钮等触发的指令,或者也可以为内存多维数据装置按照预设周期自行触发的指令等等,本申请对此不做限定。
可以理解的是,在接收到内存回收指令后,可以从多个内存块链表中确定出第三目标内存块链表,之后可以基于该第三目标内存块链表进行后续内存回收的操作与处理。
其中,可以将各个内存块链表中总的可释放垃圾内存最高的某一内存块链表确定为第三目标内存块链表
步骤502,从第三目标内存块链表中,确定第三目标内存块及第四目标内存块。
其中,第三目标内存块可以理解为待进行数据转移的源内存块,第四目标内存块可以理解为将待转移数据重新进行存储的目标内存块。
另外,从第三目标内存块链表中,确定第三目标内存块及第四目标内存块的方式可以有多种。
可选的,由于各个内存块链表中各个内存块中设置的节点数量相同、而存储的有效节点及无效节点的数量可能不同,因此可以基于第三目标内存块链表中每个内存块的有效节点的数量,确定第三目标内存块及第四目标内存块。
其中,对于任一内存块来说,该内存块中有效节点的数量越多,则无效节点的数量越少、节点利用率越高;该内存块中有效节点的数量越少,则无效节点的数量越多、节点利用率越低。
从而,本申请实施例中,可以将该第三目标内存块链表中节点利用率最低的内存块确定为第三目标内存块,将该第三目标内存块链表中节点利用率最高的内存块确定为第四目标内存块,也即将有效节点数量最少的内存块确定为第三目标内存块、有效节点数量最多的内存块确定为第四目标内存块,为后续进行数据转移、内存回收等处理提供了条件。
可选的,也可以基于第三目标内存块链表中每个内存块的所在位置,确定第三目标内存块及第四目标内存块。
其中,由于各个内存块链表中各个内存块按照节点利用率由低至高顺序排列,那么可以认为位于该内存块链表表头位置的内存块的节点利用率最低、位于该内存块链表尾部的内存块的节点利用率最高,从而可以将该第三目标内存块链表表头位置的内存块确定为第三目标内存块、将该第三目标内存块链表尾部位置的内存块确定为第四目标内存块等等,本申请对此不做限定。
需要说明的是,上述示例只是示意性说明,不能作为对本申请实施例中确定第三目标内存块及第四目标内存块的方式等的限定。
步骤503,将第三目标内存块对应的第三目标节点中的待转移数据拷贝到第四目标内存块中对应的第四目标节点中。
其中,在将第三目标内存块对应的第三目标节点中的待转移数据拷贝到第四目标内存块中对应的第四目标节点中后,更新第三目标内存块和第四目标内存块的有效节点的数量及各自关联的状态位图。
具体地,第三目标节点可以为该第三目标内存块中的有效节点,第四目标节点可以为该第四目标内存块中的无效节点,从而将第三目标内存块对应的第三目标节点中的待转移数据拷贝到第四目标内存块中对应的第四目标节点中,也即将第三目标内存块中的有效节点的待转移数据拷贝到第四目标内存块中的无效节点中。由于第三目标内存块中的节点利用率最低,第四目标内存块中的节点利用率最高,从而通过将第三目标内存块中的待转移数据拷贝到第四目标内存块中,可以使得通过节点迁移生成垃圾内存块所需的工作量最小,同时也可以最大限度地利用现有内存块中的无效节点,而不会分配新的内存池,也无需全量拷贝所有数据,且迁移后的内存块仍可以按照节点利用率顺序排列,为后续内存块释放提供了条件。
步骤504,在第三内存块中第三目标节点的数量等于第二阈值的情况下,将第三目标内存块确定为垃圾内存块,并判断当前是否提前结束节点拷贝。其中,第二阈值为提前设定的数值,比如可以为0。
可以理解的是,每产生一次垃圾内存块可以判断一次当前是否提前结束节点拷贝等。判断提前结束节点拷贝的方式有多种,比如可以根据已经处理的节点拷贝持续时长、垃圾内存块的数量、垃圾内存块占用的内存量等等,此处不再赘述,本申请对此也不做限定。
步骤505,在确定继续进行节点拷贝的情况下,返回执行从第三目标内存块链表中,确定第三目标内存块及第四目标内存块的步骤,直至结束节点拷贝。
其中,在确定继续进行节点拷贝的情况下,可以继续从该第三目标内存块链表中确定新的第三目标内存块及新的第四目标内存块,可以参照本申请各实施例中确定第三目标内存块及第四目标内存块的描述,此处不再赘述。
举例来说,若第三目标内存块链表为图2中的内存块链表1,若当前内存块1-1为第三目标内存块、内存块1-M为第四目标内存块,若当前内存块1-1中第三目标节点的数量等于第二阈值,其已被确定为垃圾内存块,且当前继续进行节点拷贝。那么可以将该内存块链表1中的内存块1-2确定为新的第三目标内存块,之后若该内存块1-M的节点利用率仍小于100%,那么可以该内存块1-M仍确定为第四目标内存块,若该内存块1-M的节点利用率已达到100%,那么可以将内存块1-(M-1)确定为第四目标内存块。之后可以将内存块1-2中的有效节点的待转移数据拷贝到内存块1-(M-1)的无效节点中,在内存块1-2中的有效节点的数量等于第二阈值时,将该内存块1-2确定为垃圾内存块,并再次判断当前是否结束节点拷贝。若继续进行节点拷贝,那么可以执行从目标内存块链表中,确定第三目标内存块及第四目标内存块的步骤,直至结束节点拷贝。
需要说明的是,上述示例只是示意性说明,不能作为对本申请实施例中进行节点拷贝的过程的限定。
从而本申请实施例中,由于迁移的第三目标内存块是从内存块链表的表头块向表尾块移动,迁移完一个内存块中的所有有效节点后才继续处理后继内存块(后继内存块可以理解为比当前第三目标内存块的节点利用率大、且最接近当前第三目标内存块的节点利用率的内存块,在该内存块链表中其位于当前第三目标内存块的右侧);而迁移的第四目标内存块处理是从内存块链表的表尾块向表头块移动,当第四目标内存块中的所有无效节点被迁移后成为有效节点后才继续处理前驱内存块(前驱内存块可以理解为比当前第四目标内存块的节点利用率小、且最接近当前第四目标内存块的节点利用率的内存块,在该内存块链表中其位于当前第四目标内存块的左侧),从而通过节点迁移操作不会破坏内存块链表内存块按照节点利用率由低至高排列的有序性。并且,通过将第三目标内存块中的待转移数据拷贝到第四目标内存块中,可以使得通过节点迁移生成垃圾内存块所需的工作量最小,也即可以充分利用现有内存块中的无效节点,而不会分配新的内存池,也不会全量拷贝所有数据,对比优化前单个多维数据模型只有单个链表构成且块内节点类型不统一的现有技术,该方法简化了块内内存的管理,提高了块内节点分配、废弃、回收的效率,间接降低了节点分配和废弃所带来的内存碎片;增加的链表内按照块内节点使用率由小到大排序内存块的机制,能够使节点的分配和废弃更加高效,能够使内存块的释放更加高效。
步骤506,基于节点地址重定位映射表中保存的第三目标节点的地址及第四目标节点的地址,将多维数据模型对应的数据树中节点的指针地址进行更新。
步骤507,将垃圾内存块进行释放。
其中,垃圾内存块的数量可以为一个,或者也可以为多个等等,本申请对此不做限定。可以理解的是,在节点拷贝结束后,可以将生成的垃圾内存块进行释放,从而可以使得内存多维数据的处理更为高效与可靠。
本申请实施例,可以先响应于接收到内存回收指令,确定第三目标内存块链表,其中,第三目标内存块链表中的内存块的节点类型均相同,之后可以从第三目标内存块链表中,确定第三目标内存块及第四目标内存块,并将第三目标内存块对应的第三目标节点中的待转移数据拷贝到第四目标内存块中对应的第四目标节点中,在第三内存块中的全部节点都是无效节点的情况下,将第三目标内存块确定为垃圾内存块,并判断当前是否结束节点拷贝,在确定继续进行节点拷贝的情况下,返回执行从第三目标内存块链表中,确定第三目标内存块及第四目标内存块的步骤,直至结束节点拷贝,并将垃圾内存块进行释放。由此,在对内存多维数据进行内存回收过程中,可以从第三目标内存块链表中确定出第三目标内存块及第四目标内存块,之后可以即可将第三目标内存块中的待转移数据拷贝到第四目标内存块中,在结束节点拷贝后可以将垃圾内存块释放,也即充分利用现有内存块中的无效节点,而不会分配新的内存池及全量拷贝所有数据,从而大幅减少了内存回收过程中的内存增长,也避免了全量拷贝所有数据所消耗的大量时间,从而节省了内存回收时间,可使得节点的回收与迁移更为便捷与高效,提高了内存回收与内存释放的效率。
根据本申请提供一种内存多维数据库的数据管理装置,如图6-7所示,该装置包括第一确定模块、第二确定模块和处理模块。其中,第一确定模块用于基于待操作数据的操作类型,确定对应的目标内存块,其中,所述目标内存块中的节点类型与所述待操作数据的节点类型相同;第二确定模块用于确定所述待操作数据在所述目标内存块中的目标位置;处理模块用于将所述待操作数据在所述目标位置进行处理。
由于待操作数据的操作类型可以有多种,比如可以为写入操作,或者也可以为删除操作等等。下面针对写入操作和删除操作分别对该装置进行详细说明。
图6为本申请的实施例提供的在待操作数据的操作类型为写入操作的情况下,内存多维数据库的数据管理装置的结构图。在一些实施方式中,如图6所示,在所述待操作数据的操作类型为写入操作的情况下,该数据管理装置包括第一确定模块610、第二确定模块620和处理模块630。具体地,第一确定模块610包括第一确定子模块611和第二确定子模块612。其中,第一确定子模块611用于基于所述待操作数据的节点类型,确定第一目标状态位图,其中,所述第一目标状态位图中的节点类型与所述待操作数据的节点类型相同。第二确定子模块612用于基于所述第一目标状态位图,确定对应的第一目标内存块。第二确定模块620具体用于:基于所述第一目标位图中每个节点当前的使用状态,确定第一目标节点;确定所述第一目标节点在所述第一目标内存块中的第一目标位置。处理模块630具体用于:将所述待操作数据写入所述第一目标位置;将所述第一目标位图中所述第一目标节点的使用状态进行更新。
在所述待操作数据的操作类型为写入操作的情况下,第一确定子模块611具体包括第一确定单元6111和第二确定单元6112。第一确定单元6111用于基于所述待操作数据的节点类型,从多维数据模型对应的多个状态位图链表中,确定第一目标状态位图链表,其中,所述第一目标状态位图链表中每个第一状态位图中的节点类型与所述待操作数据的节点类型相同。第二确定单元6112用于基于所述第一目标状态位图链表中每个第一状态位图的所在位置及节点利用率,确定第一目标状态位图。
第二确定单元6112包括第一确定子单元61121和第二确定子单元61122。其中,第一确定子单元61121用于在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率小于第一阈值的情况下,将所述第一状态位图确定为第一目标状态位图。第二确定子单元61122用于在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率等于第一阈值的情况下,根据所述第一状态位图的前驱位图,确定第一目标状态位图。
进一步地,第二确定子单元61122具体用于:在所述第一状态位图的前驱位图的地址不为空的情况下,将所述第一状态位图的前驱位图确定为第一目标状态位图,其中所述第一目标状态位图链表中各个第一状态位图按照节点利用率由低至高排列;或者在所述第一状态位图的前驱位图的地址为空的情况下,分配新的状态位图及关联的新的内存块;将所述新的状态位图确定为第一目标状态位图;将所述新的状态位图确定为所述第一目标状态位图链表中的表头位图、将所述新的内存块确定为所述第一目标内存块所在的第一目标内存块链表中的表头内存块。
图7为本申请的实施例提供的在待操作数据的操作类型为删除操作的情况下,内存多维数据库的数据管理装置的结构图。在一些实施方式中,如图7所示,在所述待操作数据的操作类型为删除操作的情况下,该数据管理装置包括第一确定模块710、第二确定模块720和处理模块730。
具体地,第一确定模块710包括第三确定子模块711和第四确定子模块712。其中,第三确定子模块711用于基于所述待操作数据的节点类型,确定第二目标内存块链表;第四确定子模块712,用于基于所述待操作数据的节点地址,从所述第二目标内存块链表中确定第二目标内存块。第二确定模块720具体用于基于所述待操作数据的节点地址,确定所述待操作数据的节点在所述第二目标内存块中的第二目标位置。处理模块730具体用于:将所述第二目标内存块关联的第二目标状态位图中所述第二目标位置对应的节点的使用状态进行更新;将所述第二目标内存块中的有效节点的数量进行更新;基于更新后的所述第二目标内存块中的有效节点的数量,将所述第二目标状态位图在所述第二目标状态位图链表中的位置进行更新、以及将所述第二目标内存块在所述第二目标内存块链表中的位置进行更新。
本申请提供的内存多维数据的数据管理装置,可以先基于待操作数据的操作类型,确定对应的目标内存块,其中,目标内存块中的节点类型与待操作数据的节点类型相同,之后可以确定待操作数据在目标内存块中的目标位置,并将待操作数据在目标位置进行处理。由此,在对内存多维数据进行处理时,可以基于待操作数据的操作类型,快速确定出目标内存块及目标位置,之后再进行相应的操作与处理,由于该内存多维数据中的节点、内存块等较为规律,从而对其进行处理的过程中,不涉及多余数据的查找与操作,从而节省了时间,提高了对内存多维数据进行处理的效率。
应理解,本文中前述关于本申请的方法所描述的具体特征、操作和细节也可类似地应用于本申请的装置和系统,或者,反之亦然。另外,上文描述的本申请的方法的每个步骤可由本申请的装置或系统的相应部件或单元执行。
应理解,本申请的装置的各个模块/单元可全部或部分地通过软件、硬件、固件或其组合来实现。各模块/单元各自可以硬件或固件形式内嵌于电子设备的处理器中或独立于处理器,也可以软件形式存储于电子设备的存储器中以供处理器调用来执行各模块/单元的操作。各模块/单元各自可以实现为独立的部件或模块,或者两个或更多个模块/单元可实现为单个部件或模块。
图8为本申请的实施例提供的一种电子设备的结构图。如图8所示,本申请提供了一种电子设备800,电子设备包括处理器801以及存储有计算机程序指令的存储器802。其中,处理器801执行计算机程序指令时实现上述的内存多维数据库的数据管理方法的各步骤。该电子设备700可以广义地为服务器、终端,或任何其他具有必要的计算和/或处理能力的电子设备。
在一个实施例中,该电子设备800可包括通过系统总线连接的处理器、存储器、网络接口、通信接口等。该电子设备800的处理器可用于提供必要的计算、处理和/或控制能力。该电子设备800的存储器可包括非易失性存储介质和内存储器。该非易失性存储介质可存储有操作系统、计算机程序等。该内存储器可为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备800的网络接口和通信接口可用于与外部的设备通过网络连接和通信。该计算机程序被处理器执行时执行本申请的方法的步骤。
本申请提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述的内存多维数据库的数据管理方法。
本领域的技术人员可以理解,本申请的方法步骤可以通过计算机程序来指示相关的硬件如电子设备800或处理器完成,计算机程序可存储于非暂时性计算机可读存储介质中,该计算机程序被执行时导致本申请的步骤被执行。根据情况,本文中对存储器、存储或其它介质的任何引用可包括非易失性或易失性存储器。非易失性存储器的示例包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘等。易失性存储器的示例包括随机存取存储器(RAM)、外部高速缓冲存储器等。
以上描述的各技术特征可以任意地组合。尽管未对这些技术特征的所有可能组合进行描述,但这些技术特征的任何组合都应当被认为由本说明书涵盖,只要这样的组合不存在矛盾。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (11)
1.一种内存多维数据库的数据管理方法,其特征在于,包括:
基于待操作数据的操作类型,确定对应的目标内存块,其中,所述目标内存块中的节点类型与所述待操作数据的节点类型相同;
确定所述待操作数据在所述目标内存块中的目标位置;
将所述待操作数据在所述目标位置进行处理。
2.如权利要求1所述的内存多维数据库的数据管理方法,其特征在于,所述基于待操作数据的操作类型,确定对应的目标内存块,包括:
在所述待操作数据的操作类型为写入操作的情况下,基于所述待操作数据的节点类型,确定第一目标状态位图,其中,所述第一目标状态位图中的节点类型与所述待操作数据的节点类型相同;
基于所述第一目标状态位图,确定对应的第一目标内存块。
3.如权利要求2所述的内存多维数据库的数据管理方法,其特征在于,所述确定所述待操作数据在所述目标内存块中的目标位置,包括:
基于所述第一目标位图中每个节点当前的使用状态,确定第一目标节点;
确定所述第一目标节点在所述第一目标内存块中的第一目标位置。
4.如权利要求3所述的内存多维数据库的数据管理方法,其特征在于,所述将所述待操作数据在所述目标位置进行处理,包括:
将所述待操作数据写入所述第一目标位置;
将所述第一目标位图中所述第一目标节点的使用状态进行更新。
5.如权利要求2所述的内存多维数据库的数据管理方法,其特征在于,所述在所述待操作数据的操作类型为写入操作的情况下,基于所述待操作数据的节点类型,确定第一目标状态位图,包括:
基于所述待操作数据的节点类型,从多维数据模型对应的多个状态位图链表中,确定第一目标状态位图链表,其中,所述第一目标状态位图链表中每个第一状态位图中的节点类型与所述待操作数据的节点类型相同;
基于所述第一目标状态位图链表中每个第一状态位图的所在位置及节点利用率,确定第一目标状态位图。
6.如权利要求5所述的内存多维数据库的数据管理方法,其特征在于,所述基于所述第一目标状态位图链表中每个第一状态位图的所在位置及节点利用率,确定第一目标状态位图,包括:
在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率小于第一阈值的情况下,将所述第一状态位图确定为第一目标状态位图;
在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率等于第一阈值的情况下,根据所述第一状态位图的前驱位图,确定第一目标状态位图。
7.如权利要求6所述的内存多维数据库的数据管理方法,其特征在于,所述在所述第一目标状态位图链表中位于尾部的第一状态位图的节点利用率等于第一阈值的情况下,根据所述第一状态位图的前驱位图,确定第一目标状态位图,包括:
在所述第一状态位图的前驱位图的地址不为空的情况下,将所述第一状态位图的前驱位图确定为第一目标状态位图,其中,所述第一目标状态位图链表中各个第一状态位图按照节点利用率由低至高排列;或者
在所述第一状态位图的前驱位图的地址为空的情况下,分配新的状态位图及关联的新的内存块;将所述新的状态位图确定为第一目标状态位图;将所述新的状态位图确定为所述第一目标状态位图链表中的表头位图、将所述新的内存块确定为所述第一目标内存块所在的第一目标内存块链表中的表头内存块。
8.如权利要求1所述的内存多维数据库的数据管理方法,其特征在于,所述基于待操作数据的操作类型,确定对应的目标内存块,包括:
在所述待操作数据的操作类型为删除操作的情况下,基于所述待操作数据的节点类型,确定第二目标内存块链表;
基于所述待操作数据的节点地址,从所述第二目标内存块链表中确定第二目标内存块。
9.如权利要求8所述的内存多维数据库的数据管理方法,其特征在于,所述确定所述待操作数据在所述目标内存块中的目标位置,包括:
基于所述待操作数据的节点地址,确定所述待操作数据的节点在所述第二目标内存块中的第二目标位置。
10.如权利要求8所述的内存多维数据库的数据管理方法,其特征在于,所述将所述待操作数据在所述目标位置进行处理,包括:
将所述第二目标内存块关联的第二目标状态位图中所述第二目标位置对应的第二目标节点的使用状态进行更新;
将所述第二目标内存块中的有效节点的数量进行更新;
基于更新后的所述第二目标内存块中的有效节点的数量,将所述第二目标状态位图在所述第二目标状态位图链表中的位置进行更新、以及将所述第二目标内存块在所述第二目标内存块链表中的位置进行更新。
11.一种内存多维数据的数据管理装置,其特征在于,包括:
第一确定模块,用于基于待操作数据的操作类型,确定对应的目标内存块,其中,所述目标内存块中的节点类型与所述待操作数据的节点类型相同;
第二确定模块,用于确定所述待操作数据在所述目标内存块中的目标位置;
处理模块,用于将所述待操作数据在所述目标位置进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311458458.7A CN117556088A (zh) | 2023-11-03 | 2023-11-03 | 内存多维数据库的数据管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311458458.7A CN117556088A (zh) | 2023-11-03 | 2023-11-03 | 内存多维数据库的数据管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117556088A true CN117556088A (zh) | 2024-02-13 |
Family
ID=89822397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311458458.7A Pending CN117556088A (zh) | 2023-11-03 | 2023-11-03 | 内存多维数据库的数据管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117556088A (zh) |
-
2023
- 2023-11-03 CN CN202311458458.7A patent/CN117556088A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200012598A1 (en) | Garbage Collection Method for Storage Medium, Storage Medium, and Program Product | |
CN107066498B (zh) | 键值kv存储方法和装置 | |
CN106682215B (zh) | 一种数据处理方法和管理节点 | |
EP3958107A1 (en) | Storage system, memory management method, and management node | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
US11314689B2 (en) | Method, apparatus, and computer program product for indexing a file | |
US9307024B2 (en) | Efficient storage of small random changes to data on disk | |
US9519437B2 (en) | Selecting first data sets in a first storage group to swap with second data sets in a second storage group | |
CN111459885B (zh) | 一种数据的处理方法、装置、计算机设备和存储介质 | |
WO2018068714A1 (zh) | 重删处理方法及存储设备 | |
US20170123975A1 (en) | Centralized distributed systems and methods for managing operations | |
US20160092454A1 (en) | Sparse file access | |
US8935470B1 (en) | Pruning a filemark cache used to cache filemark metadata for virtual tapes | |
US20170003911A1 (en) | Information processing device | |
CN113138859A (zh) | 一种基于共享内存池的通用数据存储方法 | |
CN106294189B (zh) | 内存碎片整理方法及装置 | |
US10872015B2 (en) | Data storage system with strategic contention avoidance | |
CN114115738B (zh) | 一种基于分布式存储的磁盘空间管理方法及系统 | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
US9152352B1 (en) | Filemark cache to cache filemark metadata for virtual tapes | |
CN117556088A (zh) | 内存多维数据库的数据管理方法及装置 | |
CN115793957A (zh) | 写数据的方法、装置及计算机存储介质 | |
US20200004448A1 (en) | Data storage system die set mapping | |
CN112015791A (zh) | 数据处理方法、装置、电子设备及计算机存储介质 | |
CN117573569A (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 |