CN111611238B - 数据的管理方法及装置 - Google Patents
数据的管理方法及装置 Download PDFInfo
- Publication number
- CN111611238B CN111611238B CN202010269376.8A CN202010269376A CN111611238B CN 111611238 B CN111611238 B CN 111611238B CN 202010269376 A CN202010269376 A CN 202010269376A CN 111611238 B CN111611238 B CN 111611238B
- Authority
- CN
- China
- Prior art keywords
- data
- array
- address
- connection
- setting
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2428—Query predicate definition using graphical user interfaces, including menus and forms
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据的管理方法及装置,涉及数据库技术领域。该方法包括:接收用户输入的待合并数组对应的第一序号;根据第一序号,在块显示查找表中查询待合并数组中第一个数组的首地址;基于第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0;针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。采用本发明可以提高数据管理效率、降低处理成本和处理复杂度。
Description
技术领域
本发明涉及数据库领域,尤其涉及一种数据的管理方法及装置。
背景技术
伴随着计算机技术和数字电路通信技术的快速发展和广泛应用。作为获取、处理和保存信息的重要媒介,数据库对数据管理的要求不断增强。目前,由于数据库中数据信息量较大,导致不方便存储,查找也比较费劲,且不方便操作。传统的数据管理方案,主要是采用软件的方式对数据进行管理,其实现简单,灵活性高,但耗时长,数据管理效率低下,成本高,已经不能满足行业发展的需求。虽后来有少部分人利用硬件进行数据管理,但其灵活性不高,并且随着数据库中数据量的增大,数据管理的复杂度变高,实现难度增大。因此,亟需一种数据管理效率高、处理成本低、处理复杂度低的数据管理方案。
发明内容
本发明实施例的目的在于提供一种数据的管理方法及装置,可以提高数据管理效率、降低处理成本和处理复杂度。具体技术方案如下:
第一方面,提供了一种数据的管理方法,所述方法应用于数据管理设备,所述数据管理设备中预先存储有块显示查找表和数据显示查找表,所述块显示查找表包括序号、第一个数组的首地址、最后一个数组的首地址、数据查询地址和数组状态,所述数据显示查找表包括数据地址、外接向下连接地址、外接向下连接标记、内接向下连接地址和内接向下连接标记、数据状态和数据信息,所述方法包括:
接收用户输入的待合并数组对应的第一序号;
根据所述第一序号,在块显示查找表中查询所述待合并数组中第一个数组的首地址;
基于所述第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0;
针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。
可选的,所述方法还包括:
接收用户输入的待删除数组对应的第二序号;
根据所述第二序号,在块显示查找表中查询所述待删除数组中第一个数组的首地址;
基于所述第一个数组的首地址,在数据显示查找表中将所述待删除数组包含的数据的数据状态置为0;
基于所述第二序号,在块显示查找表中将所述待删除数组对应的数组状态置为0。
可选的,所述方法还包括:
接收用户输入的待查询数组对应的第三序号;
根据所述第三序号,在块显示查找表中查询所述待查询数组中第一个数组的首地址;
基于所述第一个数组的首地址,在数据显示查找表中查询所述待查询数组包含的数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
可选的,所述方法还包括:
接收用户输入的待查询数据对应的数据地址;
根据所述数据地址,在数据显示查找表中查询所述待查询数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
可选的,所述方法还包括:
接收用户输入的待插入数据的数据信息和待插入数组对应的第四序号;
根据所述第四序号,在块显示查找表中查询所述待插入数组对应的数组状态;
如果所述数组状态为0,则在所述块显示查找表中,将所述待插入数组对应的数组状态置为1,并将所述待插入数组的第一个数组的首地址、最后一个数组的首地址和数据查询地址设置为为所述待插入数据分配的第一空闲地址;
在数据显示查找表中,将所述待插入数据的数据地址设置为所述第一空闲地址,将外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息;
如果所述数组状态为1,则根据所述第四序号,在所述块显示查找表中查询所述待插入数组中最后一个数组的首地址;
基于所述最后一个数组的首地址,在所述数据显示查找表中,将所述最后一个数组的第一个数据的外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为1,将所述待插入数据的数据地址设置为所述第一空闲地址,将外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息;
在所述块显示查找表中,将所述待插入数组中最后一个数组的首地址设置为所述第一空闲地址。
可选的,所述方法还包括:
接收用户输入的待插入数据的数据信息、所述待插入数据所属的第二数组的数组标识和所述第二数组所属的具有连接关系的数组对应的第五序号;
根据所述第五序号,在块显示查找表中查询所述具有连接关系的数组中第一个数组的首地址;
基于所述第一个数组的首地址和所述数组标识,在数据显示查找表中将所述第二数组的最后一个数据的内接向下连接地址修改为为待插入数据分配的第二空闲地址,并将所述第二数组的最后一个数据内接向下连接标记置为1;
在所述数据显示查找表中,将所述待插入数据的数据地址设置为所述第二空闲地址,将外接向下连接地址设置为所述第二空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第二空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息。
第二方面,提供了一种数据的管理装置,所述装置应用于数据管理设备,所述数据管理设备中预先存储有块显示查找表和数据显示查找表,所述块显示查找表包括序号、第一个数组的首地址、最后一个数组的首地址、数据查询地址和数组状态,所述数据显示查找表包括数据地址、外接向下连接地址、外接向下连接标记、内接向下连接地址和内接向下连接标记、数据状态和数据信息,所述装置包括:
第一接收单元,用于接收用户输入的待合并数组对应的第一序号;
第一查询单元,用于根据所述第一序号,在块显示查找表中查询所述待合并数组中第一个数组的首地址;
第一设置单元,用于基于所述第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0;
第二设置单元,用于针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。
可选的,所述装置还包括:
第二接收单元,用于接收用户输入的待删除数组对应的第二序号;
第二查询单元,用于根据所述第二序号,在块显示查找表中查询所述待删除数组中第一个数组的首地址;
第三设置单元,用于基于所述第一个数组的首地址,在数据显示查找表中将所述待删除数组包含的数据的数据状态置为0;
第四设置单元,用于基于所述第二序号,在块显示查找表中将所述待删除数组对应的数组状态置为0。
可选的,所述装置还包括:
第三接收单元,用于接收用户输入的待查询数组对应的第三序号;
第三查询单元,用于根据所述第三序号,在块显示查找表中查询所述待查询数组中第一个数组的首地址;
第四查询单元,用于基于所述第一个数组的首地址,在数据显示查找表中查询所述待查询数组包含的数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
可选的,所述装置还包括:
第四接收单元,用于接收用户输入的待查询数据对应的数据地址;
第五查询单元,用于根据所述数据地址,在数据显示查找表中查询所述待查询数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
可选的,所述装置还包括:
第五接收单元,用于接收用户输入的待插入数据的数据信息和待插入数组对应的第四序号;
第六查询单元,用于根据所述第四序号,在块显示查找表中查询所述待插入数组对应的数组状态;
第五设置单元,用于如果所述数组状态为0,则在所述块显示查找表中,将所述待插入数组对应的数组状态置为1,并将所述待插入数组的第一个数组的首地址、最后一个数组的首地址和数据查询地址设置为为所述待插入数据分配的第一空闲地址;
第六设置单元,用于在数据显示查找表中,将所述待插入数据的数据地址设置为所述第一空闲地址,将外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息;
第七查询单元,用于如果所述数组状态为1,则根据所述第四序号,在所述块显示查找表中查询所述待插入数组中最后一个数组的首地址;
第七设置单元,用于基于所述最后一个数组的首地址,在所述数据显示查找表中,将所述最后一个数组的第一个数据的外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为1,将所述待插入数据的数据地址设置为所述第一空闲地址,将外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息;
第八设置单元,用于在所述块显示查找表中,将所述待插入数组中最后一个数组的首地址设置为所述第一空闲地址。
可选的,所述装置还包括:
第六接收单元,用于接收用户输入的待插入数据的数据信息、所述待插入数据所属的第二数组的数组标识和所述第二数组所属的具有连接关系的数组对应的第五序号;
第八查询单元,用于根据所述第五序号,在块显示查找表中查询所述具有连接关系的数组中第一个数组的首地址;
第九设置单元,用于基于所述第一个数组的首地址和所述数组标识,在数据显示查找表中将所述第二数组的最后一个数据的内接向下连接地址修改为为待插入数据分配的第二空闲地址,并将所述第二数组的最后一个数据内接向下连接标记置为1;
第十设置单元,用于在所述数据显示查找表中,将所述待插入数据的数据地址设置为所述第二空闲地址,将外接向下连接地址设置为所述第二空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第二空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息。
可选的,所述装置是基于FPGA或ASIC实现。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
第四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法。
本发明实施例提供的一种数据管理的方法及装置,接收用户输入的待合并数组对应的第一序号,并根据第一序号,在块显示查找表中查询待合并数组中第一个数组的首地址。之后,基于所述第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0,并针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。这样,通过将数据分别存储在块显示查找表和数据显示查找表中,赋予数据之间的连接,从而能够快捷索引,自由进行插入、删除、合并、查询等操作,进而提高了数据处理效率,减少了耗时。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1A为本发明实施例提供的一种数据管理设备的架构图;
图1B为本发明实施例提供的一种数据的示意图
图2A为本发明实施例提供的一种数据的管理方法的流程图;
图2B为本发明实施例提供的一种数据的合并前后的示意图;
图3为本发明实施例提供的一种数据的管理方法的流程图;
图4为本发明实施例提供的一种数据的管理方法的流程图;
图5为本发明实施例提供的一种数据的管理方法的流程图;
图6为本发明实施例提供的一种数据的管理方法的流程图;
图7为本发明实施例提供的一种数据的管理方法的流程图;
图8为本发明实施例提供的一种数据的管理装置的结构示意图;
图9为本发明实施例提供的一种电子设备的结构示意图;
图10为本发明实施例提供中的外插入内插入操作示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明提供了一种数据的管理方法,该方法可以应用于数据管理设备。具体的,该方法可以应用于数据管理设备中的序号显示查找表(Index Look Up Table,IndexLUT)。该数据管理设备中还包括块显示查找表(Block Look Up Table,BlockLUT)和数据显示查找表(Data Look Up Table,DataLUT)。如图1A所示,IndexLUT介于BlockLUT和DataLUT中间,对BlockLUT和DataLUT的控制功能,以实现数据的管理。如图1B所示,数据包包括数字A1、数组B1和数组C1。其中,数组A1包括数据a1、数据a2……数据an,数组B1包括数据b1、数据b2……数据bn,数组C1包括数据c1、数据c2……数据cn。数组A1中数据a1、数据a2……数据an为内接关系,数组B1中数据b1、数据b2……数据bn为内接关系,数组C1中数据c1、数据c2……数据cn为内接关系。数组A1、数组B1和数组C1之间,数据a1、数据b1和数据c1为外接关系。
为了便于理解,本发明实施例优先对BlockLUT和DataLUT进行介绍,具体如下:
一级表格命名为BlockLUT,用于存储包含一个或多个数组的数据包的地址数据。其中,数据包中包含的多个数组之间为具有连接关系的数组。BlockLUT中包含数据包的序号(Index_ID)、数据包中第一个数组的首地址(Blockadds)、数据包中最后一个数组的首地址(Blockadde)、数据查询地址(Blockaddr)和数据包的数组状态(Status_b)。其中,Blockadds、Blockadde和Blockaddr均可以作为二级表格(即数据显示查找表(Data LookUp Table,DataLUT))的输入入口地址(即数据的物理地址),Blockaddr初始与Blockadds相同,Status_b为1表示数据包有效,Status_b为0表示数据包无效或者数据包已被删除。可选的,Blockadds、Blockadde和Blockaddr的位宽可以为16位,也可以为其他位宽,本发明实施例不作限定。Status_b的位宽可以为1位,也可以为其他位宽,本发明实施例不作限定。BlockLUT的深度可以为1024行(即BlockLUT可以存储1024个数据包的地址数据),也可以为其他深度,本发明实施例不作限定。
需要说明的是,当数据包仅包含一个数组时,Blockadds和Blockadde均为该数组的首地址。另外,考虑到需要对一行数据包的Blockadds、Blockadde、Blockaddr和Status_b进行单独的修改。因此,BlockLUT中每列的数据分开存储,方便进行查询、插入和更新。BlockLUT支持初始化、插入、更新、删除、查询、插入Status_b以及查询Status_b等操作。
例如,数据包0包括具有连接关系的两个数组:数组A1和数组B1,数组A1包括数据a1和数据a2,数据a1的地址为0000,数据a2的地址为0001,数组B1包括数据b1和数据b2,数据b1的地址为0002,数据a2的地址为0003。数据包1包括数组C1,数组C1包括数据c1,数据c1的地址为0004。数据包2包括数组D1,数组D1包括数据d1,数据d1的地址为0005。则BlockLUT如表一所示。
表一
Index_ID | Blockadds | Blockadde | Blockaddr | Status_b |
0 | 0000 | 0002 | 0000 | 1 |
1 | 0004 | 0004 | 0004 | 1 |
2 | 0005 | 0005 | 0005 | 1 |
二级表格为DataLUT,用于存储数组中数据的地址信息。DataLUT中包含数据地址(Addr_d)、外接向下连接地址(out_next_addr)、外接向下连接标记(out_conseq)、内接向下连接地址(in_next_addr)、内接向下连接标记(in_conseq)、数据状态(Status_d)和数据信息(Dataaddc)其中,out_next_addr为与该数据所属的数组连接的下一个数组的首地址,out_conseq为1表示有外接关系,out_conseq为0表示无外接关系(即该数据位于为数据包的最后一个数组)。in_next_addr为与该数据在同一个数组中连接的下一个数据的地址。in_conseq为1表示有内接关系,in_conseq为0表示无内接关系(也即该数据为数组中的最后一个数据)。Status_d为1表示该数据有效,Status_d为0表示数据无效或者数据已被删除。DataLUT支持初始化、外插入、内插入、合并、删除、更新、空闲ID查询、数据查询等操作。可选的,Addr_d的位宽可以为16位,也可以为其他位宽,本发明实施例不作限定。out_next_addr的位宽可以为16位,也可以为其他位宽,本发明实施例不作限定。out_conseq的位宽可以为1位,也可以为其他位宽,本发明实施例不作限定。in_next_addr的位宽可以为16位,也可以为其他位宽,本发明实施例不作限定。in_conseq的位宽可以为1位,也可以为其他位宽,本发明实施例不作限定。Status_d的位宽可以为1位,也可以为其他位宽,本发明实施例不作限定。Dataaddc的位宽可以为32位,也可以为其他位宽,本发明实施例不作限定。DataLUT的深度可以为1024行(即DataLUT可以存储1024个数据的地址数据),也可以为其他深度,本发明实施例不作限定。
需要说明的是,考虑到需要对一行数据的out_next_addr、out_conseq、in_next_addr、in_conseq和Status_d进行单独的修改。因此,DataLUT中每列的数据分开存储,方便进行查询、插入和更新。
其中,针对DataLUT中的in_next_addr和in_conseq,由于DataLUT可以存储多个数组中,每个数组包含一至多个数据,每个数据占用一行随机存取存储器(Random AccessMemory,RAM)资源,并且在同一数组内,数据的地址不一定是连续,数据之间的连接关系通过in_next_addr与in_conseq进行表示。如果该数据为数组中的最后一个数据,则该数据的in_next_addr为该数据的地址(即该数据的Addr_d),且该数据的in_conseq为0。而对于数据包仅包含一个数组,则该数组的第一个数据的in_next_addr为该数据的地址,且该数据的in_conseq为0。
针对DataLUT中的out_next_addr和out_conseq,由于每个数组的第一个数据中的out_next_addr是有效的,而非第一个数据中的out_next_addr是无效的。因此,对于数组中的非第一个数据,该数据的out_next_addr为该数据的地址(即该数据的Addr_d),且该数据的out_conseq为0。而对于数据包仅包含一个数组,则该数组的第一个数据的out_next_addr为该数据的地址,且该数据的out_conseq为0。在具有连接关系数组合并之前,可以在每个数组中的最后一个数据后面内插入一个新的数据。例如,可以在数组A1的最后一个数据后面内插入一个新的数据,也可以在数组B1的最后一个数据后面内插入一个新的数据。
例如,数据包0包括具有连接关系的两个数组:数组A1和数组B1,数组A1包括数据a1和数据a2,数据a1的地址为0000,数据a2的地址为0001,数组B1包括数据b1和数据b2,数据b1的地址为0002,数据a2的地址为0003。数据包1包括数组C1,数组C1包括数据c1,数据c1的地址为0004。数据包2包括数组D1,数组D1包括数据d1,数据d1的地址为0005。则DataLUT如表二所示。
表二
Addr_d | out_next_addr | out_conseq | in_next_addr | in_conseq | Status_d | Dataaddc |
0000 | 0002 | 1 | 0001 | 1 | 1 | a1 |
0001 | 0001 | 0 | 0001 | 0 | 1 | a2 |
0002 | 0002 | 0 | 0003 | 1 | 1 | b1 |
0003 | 0003 | 0 | 0003 | 0 | 1 | b2 |
0004 | 0004 | 0 | 0004 | 0 | 1 | c1 |
0005 | 0005 | 0 | 0005 | 0 | 1 | d1 |
对于具有连接关系数组进行合并后的DataLUT中的in_next_addr和in_conseq,具有连接关系的数组中,前一个数组中的最后一个数据的in_next_addr由该数据的地址修改为后一个数组中第一个数据的地址,该数据的in_conseq由0修改为1。最后一个数组中的最后一个数据的in_next_addr和in_conseq保持不变。
对于具有连接关系数组进行合并后的DataLUT中的out_next_addr和out_conseq,第一个数组中的第一个数据的out_next_addr依然保持为下一个数组的第一个数据的地址,但out_conseq由1修改为0。其他数组中的第一个数据的out_next_addr失去作用,且out_conseq由1修改为0。在具有连接关系数据进行合并后,仅可以在合并后的数组的最后一个数据(即合并前的最后一个数组的最后一个数据)之后内插入新的数据,不可以在合并后的数组中的数据后面内插入新的数据。例如,数组A1和数组B1合并为新的数组M,则可以在数组M的最后一个数据(即数组B1的最后一个数据)后面内插入新的数据。
例如,数据包0包括具有连接关系的两个数组:数组A1和数组B1,数组A1包括数据a1和数据a2,数据a1的地址为0000,数据a2的地址为0001,数组B1包括数据b1和数据b2,数据b1的地址为0002,数据b2的地址为0003。数据包1包括数组C1,数组C1包括数据c1,数据c1的地址为0004。数据包2包括数组D1,数组D1包括数据d1,数据d1的地址为0005。则对数组A1和数组B1进行合并后,DataLUT如表三所示。
表三
Addr_d | out_next_addr | out_conseq | in_next_addr | in_conseq | Status_d | Dataaddc |
0000 | 0002 | 0 | 0001 | 1 | 1 | a1 |
0001 | 0001 | 0 | 0002 | 1 | 1 | a2 |
0002 | 0002 | 0 | 0003 | 1 | 1 | b1 |
0003 | 0003 | 0 | 0003 | 0 | 1 | b2 |
0004 | 0004 | 0 | 0004 | 0 | 1 | c1 |
0005 | 0005 | 0 | 0005 | 0 | 1 | d1 |
基于BlockLUT和DataLUT,IndexLUT可以实现的数据的管理方法包括数据的合并、外插入、内插入、删除和查询等。
下面将结合具体的实施例,对本发明实施例提供的一种数据的管理方法中数据的合并方法进行详细的介绍,如图2A所示,具体处理过程如下:
步骤210,接收用户输入的待合并数组对应的第一序号。
在实施中,当需要对具有连接关系的数组(即待合并数组)进行合并时,用户可以输入待合并数组对应的第一序号(index_ID)。相应的,IndexLUT可以接收用户输入的待合并数组对应的index_ID。
步骤220,根据第一序号,在块显示查找表中查询待合并数组中第一个数组的首地址。
在实施中,IndexLUT接收到待合并数组对应的index_ID之后,可以将index_ID作为BlockLUT的地址输入,通过查询操作在BlockLUT中查询待合并数组中第一个数组的首地址(Blockadds),也即第一个数组的第一个数据的地址。
步骤230,基于第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0。
步骤240,针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。
在实施中,IndexLUT查询到待合并数组中对应的Blockadds后,可以将Blockadds作为DataLUT的地址输入,IndexLUT从第一个外接头(即第一个数组中第一个数据)开始,将外接向下连接标记(out_conseq)置为0,并读取内接向下连接地址(in_next_addr)。然后,根据读出的in_next_addr,继续读取下一个数据。当读出的数据的内接向下连接标记(in_conseq)为0时,也即当读出第一个数组的最后一个数据时,再读出第二个外接头(即第二个数组中的第一个数据)的地址,将第一个数组的最后一个数据的in_next_addr修改为第二个数组中的第一个数据的地址(也即第一个数组中第一个数据的out_next_addr),并将第一个数组的最后一个数据的in_conseq置为1。此时,如果第二个数组中的第一个数据的out_conseq为0,则说明第二数组为最后一个数组,合并结束。否则,按照第一个数组中数据的处理过程,继续对第二个数组中的数据进行处理。可选的,合并结束后,拉高IndexLUT的合并完成标志信号,表示整个合并操作已完成。可选的,具有连接关系的数组只能进行合并操作一次,否则会陷入死循环。只有当DataLUT中的内外接关系改变时,才可以再进行合并操作。
例如,数据包0包括具有连接关系的两个数组:数组A1和数组B1,数组A1包括数据a1和数据a2,数据a1的地址为0000,数据a2的地址为0001,数组B1包括数据b1和数据b2,数据b1的地址为0002,数据a2的地址为0003。数据包1包括数组C1,数组C1包括数据c1,数据c1的地址为0004。数据包2包括数组D1,数组D1包括数据d1,数据d1的地址为0005。则对数组A1和数组B1进行合并后,DataLUT如表四所示。又如,数据合并前后的示意图如图2B所示。
表四
Addr_d | out_next_addr | out_conseq | in_next_addr | in_conseq | Status_d | Dataaddc |
0000 | 0002 | 0 | 0001 | 1 | 1 | a1 |
0001 | 0001 | 0 | 0002 | 1 | 1 | a2 |
0002 | 0002 | 0 | 0003 | 1 | 1 | b1 |
0003 | 0003 | 0 | 0003 | 0 | 1 | b2 |
0004 | 0004 | 0 | 0004 | 0 | 1 | c1 |
0005 | 0005 | 0 | 0005 | 0 | 1 | d1 |
本发明实施例还提供了一种数据的管理方法中数据的删除方法,如图3所示,具体处理过程如下:
步骤310,接收用户输入的待删除数组对应的第二序号。
在实施中,当需要对具有连接关系的数组(即待删除数组)进行删除时,用户可以输入待删除数组对应的第二序号(index_ID)。相应的,IndexLUT可以接收用户输入的待删除数组对应的index_ID。
步骤320,根据第二序号,在块显示查找表中查询待删除数组中第一个数组的首地址。
在实施中,IndexLUT接收到待删除数组对应的index_ID之后,可以将index_ID作为BlockLUT的地址输入,通过查询操作在BlockLUT中查询待删除的数组中第一个数组的首地址(Blockadds),也即第一个数组的第一个数据的地址。
步骤330,基于第一个数组的首地址,在数据显示查找表中将待删除数组包含的数据的数据状态置为0。
在实施中,IndexLUT查询到待删除数组对应的Blockadds后,可以将Blockadds作为DataLUT的地址输入,IndexLUT从第一个外接头(即第一个数组中第一个数据)开始,将数据状态(Status_d)置为0,并读取in_next_addr。然后,根据读出的in_next_addr,继续读取下一个数据,并将下一个数据Status_d置为0。当读出的数据的in_conseq为0时,也即当读出第一个数组的最后一个数据时,再读出第二个外接头(即第二个数组中的第一个数据)的地址,将第二个数组中的第一个数据的Status_d置为0。此时,如果第二个数组中的第一个数据的out_conseq置为0,则说明第二数组为最后一个数组,IndexLUT将第二个数组中的最后一个数据的Status_d置为0后,删除结束。DataLUT删除结束后,DataLUT输出删除完成信号,表示DataLUT删除操作已完成。
步骤340,基于第二序号,在块显示查找表中将待删除数组对应的数组状态置为0。
在实施中,DataLUT删除结束后,IndexLUT可以将index_ID作为BlockLUT的地址输入,通过删除操作在BlockLUT中将待删除数组对应的数组状态(Status_b)置为0。BlockLUT删除结束后,BlockLUT输出删除完成信号,IndexLUT会输出删除完成信号,表示删除完成。
例如,数据包0包括具有连接关系的两个数组:数组A1和数组B1,数组A1包括数据a1和数据a2,数据a1的地址为0000,数据a2的地址为0001,数组B1包括数据b1和数据b2,数据b1的地址为0002,数据a2的地址为0003。数据包1包括数组C1,数组C1包括数据c1,数据c1的地址为0004。数据包2包括数组D1,数组D1包括数据d1,数据d1的地址为0005。则对数组A1和数组B1进行删除后,BlockLUT如表五所示,DataLUT如表六所示。
表五
Index_ID | Blockadds | Blockadde | Blockaddr | Status_b |
0 | 0000 | 0002 | 0000 | 0 |
1 | 0004 | 0004 | 0004 | 1 |
2 | 0005 | 0005 | 0005 | 1 |
表六
Addr_d | out_next_addr | out_conseq | in_next_addr | in_conseq | Status_d | Dataaddc |
0000 | 0002 | 0 | 0001 | 1 | 0 | a1 |
0001 | 0001 | 0 | 0002 | 1 | 0 | a2 |
0002 | 0002 | 0 | 0003 | 1 | 0 | b1 |
0003 | 0003 | 0 | 0003 | 0 | 0 | b2 |
0004 | 0004 | 0 | 0004 | 0 | 1 | c1 |
0005 | 0005 | 0 | 0005 | 0 | 1 | d1 |
本发明实施例还提供了一种数据的管理方法中数据的查询方法,如图4所示,具体处理过程如下:
步骤410,接收用户输入的待查询数组对应的第三序号。
在实施中,当需要对具有连接关系的数组(即待查询数组)进行查询时,用户可以输入待查询数组对应的第三序号(index_ID)。相应的,IndexLUT可以接收用户输入的待查询数组对应的index_ID。
步骤420,根据第三序号,在块显示查找表中查询待查询数组中第一个数组的首地址。
在实施中,IndexLUT接收到待查询数组对应的index_ID之后,可以将index_ID作为BlockLUT的地址输入,通过查询操作在BlockLUT中查询待查询数组中第一个数组的首地址(Blockadds),也即第一个数组的第一个数据的地址。
步骤430,基于第一个数组的首地址,在数据显示查找表中查询待查询数组包含的数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
在实施中,IndexLUT查询到待查询数组对应的Blockadds后,可以将Blockadds作为DataLUT的地址输入,IndexLUT从第一个外接头(即第一个数组中第一个数据)开始,读出第一个数据的数据信息(Dataaddc)、内接向下连接地址(in_next_addr)、内接向下连接标记(in_conseq)、外接向下连接地址(out_next_addr)和外接向下连接标记(out_conseq)。根据读出的in_next_addr,继续读取下一个数据的Dataaddc、in_next_addr、in_conseq、out_next_addr和out_conseq。当读出的数据的in_conseq为0时,也即当读出第一个数组的最后一个数据时,再读出第二个外接头(即第二个数组中的第一个数据)的地址,读出第二个数组中的第一个数据的Dataaddc、in_next_addr、in_conseq、out_next_addr和out_conseq。此时,如果第二个数组中的第一个数据的out_conseq置为0,则说明第二数组为最后一个数组,IndexLUT读出第二个数组中的最后一个数据的Dataaddc、in_next_addr、in_conseq、out_next_addr和out_conseq后,查询结束。DataLUT查询结束后,DataLUT输出查询完成信号,表示DataLUT查询操作已完成。
本发明实施例还提供了一种数据的管理方法中数据的查询方法,如图5所示,具体处理过程如下:
步骤510,接收用户输入的待查询数据对应的数据地址。
在实施中,当用户需要查询某一数据(即待查询数据)时,用户可以输入待查询数据对应的数据地址(Addr_d)。相应的,IndexLUT可以接收用户输入的待查询数据对应的Addr_d。
步骤520,根据数据地址,在数据显示查找表中查询待查询数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
在实施中,IndexLUT接收到待查询数据对应的Addr_d之后,可以将Addr_d作为DataLUT的地址输入,查询待查询数据的数据信息(Dataaddc)、内接向下连接地址(in_next_addr)、内接向下连接标记(in_conseq)、外接向下连接地址(out_next_addr)和外接向下连接标记(out_conseq)。DataLUT查询完成后,拉高查询完成标志信号,表示查询操作完成。
插入操作的实质是IndexLUT接收外部输入的数据写入到BlockLUT和DataLUT中。插入操作又分为外插入操作和内插入操作两种。其中,外插入操作其实是将接收到的待插入数据作为具有连接关系的数组中除第一个数组之外的某个数组的第一个数据(以下称为下接外插入),或者,将接收到的待插入数据作为具有连接关系的新的数组中第一个数组的第一个数据(以下称为直接外插入)。而内插入操作是指将待插入数据作为某一数组的最后一个数据。如果一个数组中没有数据,则对该数组的内插入操作相当于对该数组的直接外插入操作。多个具有连接关系的数组(比如数组A1、数组B1和数组C1)合并形成一个数组(数组M1)。数组M1的第一数据依然是数据a1,最后一个数据是数据cn。此时,数组M1的性质为一个单独的数组。数据a1的out_next_addr依然用于存放数组M1的外接地址。此时,数据a1的out_next_addr存放的是数组B1的第一个数据b1的地址,但out_conseq修改为0。后续,IndexLUT可以修改数据a1的out_next_addr,来连接其他数组的。同时,数据b1和数据c1的out_next_addr将失效,且失去存放外接地址的作用。如果IndexLUT需要对数组M1进行内插入操作,将直接在数据cn的后面进行内插入操作,不能在其他中间的数据(比如数据a1、数据b1、数据c1等)后面进行内插入操作。
例如,IndexLUT对具有连接关系的数组A1和数组B1进行下接外插入,也即在数组A1和数组B1的后面插入与数组A1及数组B1也具有连接关系的数组C1的第一个数据c1。IndexLUT可以查询一个空闲地址来存放数组C1的数据c1的Dataaddc。同时,IndexLUT将空闲地址更新到DataLUT的B1中的第一个数据b1的out_next_addr中,并且将数据b1的out_conseq修改为1,并且将数据c1的out_next_addr设置为空闲地址,将数据c1的out_conseq设置为0。如果IndexLUT要进行直接外插入,也即外插入一个独立的数组D1的第一个数据d1,IndexLUT可以查询一个空闲地址来存放数据d1的Dataaddc。同时,在DataLUT中将数据d1的out_next_addr设置为空闲地址,将数据d1的out_conseq设置为0。
本发明实施例还提供了一种数据的管理方法中数据的外插入方法,如图6所示,具体处理过程如下:
步骤610,接收用户输入的待插入数据的数据信息和待插入数组对应的第四序号。
在实施中,当需要在某一具有连接关系的数组(即待插入数组)中外插入一个数据(即待插入数据)时,用户可以输入待插入数据的数据信息(Dataaddc)和待插入数组对应的第四序号(index_ID)。相应的,IndexLUT可以接收用户输入的待插入数据的Dataaddc和待插入数组对应的index_ID。
步骤620,根据第四序号,在块显示查找表中查询待插入数组对应的数组状态。
在实施中,IndexLUT接收到待插入数组对应的index_ID之后,可以将index_ID作为BlockLUT的地址输入,通过查询操作在BlockLUT中查询待插入数组对应的数组状态(Status_b)。然后,IndexLUT可以判断Status_b是否为0。如果Status_b为0,则执行步骤630至步骤640。如果Status_b不为0,则执行步骤650至步骤670。
步骤630,如果数组状态为0,则在块显示查找表中,将待插入数组对应的数组状态置为1,并将待插入数组的第一个数组的首地址、最后一个数组的首地址和数据查询地址设置为为待插入数据分配的第一空闲地址。
在实施中,如果Status_b为0,则说明待插入数组对应的地址位置(即第一个数组的首地址(Blockadds)、最后一个数组的首地址(Blockadde)和数据查询地址(Blockaddr))未被占用,可以用来存放地址信息。此时,该外插入操作为直接外插入。IndexLUT可以进一步向BlockLUT发出插入Status_b请求信号将Status_b置为1,以占用待插入数组对应的地址位置。然后,IndexLUT向DataLUT发出空闲地址请求,得到第一空闲地址,并将BlockLUT中待插入数组的Blockadde、Blockadds和Blockaddr设置为第一空闲地址。
步骤640,在数据显示查找表中,将待插入数据的数据地址设置为第一空闲地址,将外接向下连接地址设置为第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为待插入数据的数据信息。
在实施中,IndexLUT还需要在DataLUT中,将待插入数据的数据地址(Addr_d)设置为第一空闲地址,将out_next_addr设置为第一空闲地址,将out_conseq置为0,将in_next_addr设置为第一空闲地址,将in_conseq置为0,将Status_d置为1,并将Dataaddc置为待插入数据的数据信息。BlockLUT和DataLUT外插入操作完成后,可以拉高IndexLUT的外插入完成标志信号,表示BlockLUT和DataLUT的外插入操作完成。
步骤650,如果数组状态为1,则根据第四序号,在块显示查找表中查询待插入数组中最后一个数组的首地址。
在实施中,如果Status_b为1,则说明待插入数组对应的地址位置(即第一个数组的首地址(Blockadds)、最后一个数组的首地址(Blockadde)和数据查询地址(Blockaddr))被占用。此时,该外插入操作为下接外插入。IndexLUT可以将接收到的待插入数组对应的index_ID作为BlockLUT的地址输入,通过查询操作在BlockLUT中查询待插入数组中最后一个数组的首地址(Blockadde),也即最后一个数组的第一个数据的地址。
步骤660,基于最后一个数组的首地址,在数据显示查找表中,将最后一个数组的第一个数据的外接向下连接地址设置为第一空闲地址,将外接向下连接标记置为1,将待插入数据的数据地址设置为第一空闲地址,将外接向下连接地址设置为第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为待插入数据的数据信息。
在实施中,IndexLUT向DataLUT发出空闲地址请求,得到第一空闲地址。然后,IndexLUT还需要将Blockadde作为DataLUT的地址输入,将最后一个数组的第一个数据(即Blockadde对应的数据)的out_next_addr设置为第一空闲地址,将out_conseq置为1。之后,IndexLUT还需要在DataLUT中,将待插入数据的数据地址(Addr_d)设置为第一空闲地址,将out_next_addr设置为第一空闲地址,将out_conseq置为0,将in_next_addr设置为第一空闲地址,将in_conseq置为0,将Status_d置为1,并将Dataaddc置为待插入数据的数据信息。
步骤670,在块显示查找表中,将待插入数组中最后一个数组的首地址设置为第一空闲地址。
在实施中,IndexLUT在DataLUT完成外插入后,可以进一步在BlockLUT中将待插入数组的Blockadde设置为第一空闲地址。BlockLUT和DataLUT外插入操作完成后,可以拉高IndexLUT的外插入完成标志信号,表示BlockLUT和DataLUT的外插入操作完成。
本发明实施例还提供了一种数据的管理方法中数据的内插入方法,如图7所示,具体处理过程如下:
步骤710,接收用户输入的待插入数据的数据信息、待插入数据所属的第二数组的数组标识和第二数组所属的具有连接关系的数组对应的第五序号。
在实施中,当需要在某一数组(即第二数组)中内插入一个数据(即待插入数据)时,用户可以输入待插入数据的数据信息(Dataaddc)、待插入数据所属的第二数组的数组标识(Block_ID)和第二数组所属的具有连接关系的数组对应的第五序号(index_ID)。相应的,IndexLUT可以接收用户输入的待插入数据的Dataaddc、第二数组的Block_ID和具有连接关系的数组对应的index_ID。其中,数组标识为第二数组在具有连接关系的数组中的顺序。例如,第二数组为第一个数组时,数组标识为0;第二数组为第二个数组时,数组标识为1,以此类推。
步骤720,根据第五序号,在块显示查找表中查询具有连接关系的数组中第一个数组的首地址。
在实施中,IndexLUT接收到具有连接关系的数组对应的index_ID之后,可以将index_ID作为BlockLUT的地址输入,通过查询操作在BlockLUT中查询具有连接关系的数组中第一个数组的首地址(Blockadds),也即第一个数组的第一个数据的地址。
步骤730,基于第一个数组的首地址和数组标识,在数据显示查找表中将第二数组的最后一个数据的内接向下连接地址修改为为待插入数据分配的第二空闲地址,并将第二数组的最后一个数据内接向下连接标记置为1。
在实施中,IndexLUT内置一个计数器(cnt),cnt的初始值为0。IndexLUT查询到第一个数组的首地址Blockadds后,可以在DataLUT中申请一个空闲地址(即第二空闲地址),并将Blockadds作为DataLUT的地址输入。IndexLUT读取第一个数组的第一数据的out_next_addr、out_conseq、in_next_addr和in_conseq,并判断cnt的值是否与Block_ID相同。如果不相同,且out_conseq为1,则IndexLUT将内置的计数器(cnt)加1,并基于out_next_addr,读出第二个数组的第一个数据的out_next_addr、out_conseq、in_next_addr和in_conseq,并判断cnt的值是否与Block_ID相同。如果相同,则说明在第二个数组中内插入,IndexLUT基于in_next_addr读取第二个数组中的第二个数据。当读出的数据的in_conseq为0时,也即当读出第二个数组的最后一个数据时,IndexLUT将最后一个数据的in_next_addr修改为第二空闲地址,并将in_conseq修改为1。如果此时不相同,且out_conseq为1,IndexLUT将内置的计数器(cnt)加1,并基于out_next_addr,读出第三个数组的第一个数据的out_next_addr、out_conseq、in_next_addr和in_conseq,直到cnt等于Block_ID的值后,将最后一个数据的in_next_addr修改为第二空闲地址,并将in_conseq修改为1。
步骤740,在数据显示查找表中,将待插入数据的数据地址设置为第二空闲地址,将外接向下连接地址设置为第二空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为第二空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为待插入数据的数据信息。
在实施中,IndexLUT还需要在DataLUT中,将待插入数据的数据地址(Addr_d)设置为第二空闲地址,将out_next_addr设置为第二空闲地址,将out_conseq置为0,将in_next_addr设置为第二空闲地址,将in_conseq置为0,将Status_d置为1,并将Dataaddc置为待插入数据的数据信息。DataLUT内插入操作完成后,可以拉高IndexLUT的内插入完成标志信号,表示DataLUT的内插入操作完成。
需要说明的是,插入操作、删除操作和合并操作存在前后顺序。在全部插入操作完毕后才可以进行删除操作,之后就不可以进行插入操作。需要的外插入操作和内插入操作完成之后才可以进行合并操作和删除操作。合并操作完成之后,不可以在中间数据之后进行内插入操作,但可以在最后一个数据之后进行内插入操作,以内插入一个新的数据,也可以在合并操作后的最后一个数组后进行下接外插入操作。删除操作一般发生在合并操作之后。会将整个合并操作后的数组进行删除。
本发明实施例提供的一种数据管理的方法,接收用户输入的待合并数组对应的第一序号,并根据第一序号,在块显示查找表中查询待合并数组中第一个数组的首地址。之后,基于所述第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0,并针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。这样,通过将数据分别存储在块显示查找表和数据显示查找表中,赋予数据之间的连接,从而能够快捷索引,自由进行插入、删除、合并、查询等操作,进而提高了数据处理效率,减少了耗时。
基于相同的技术构思,本申请实施例还提供了一种数据的管理装置,所述装置应用于数据管理设备,所述数据管理设备中预先存储有块显示查找表和数据显示查找表,所述块显示查找表包括序号、第一个数组的首地址、最后一个数组的首地址、数据查询地址和数组状态,所述数据显示查找表包括数据地址、外接向下连接地址、外接向下连接标记、内接向下连接地址和内接向下连接标记、数据状态和数据信息,如图8所示,该装置包括:
第一接收单元810,用于接收用户输入的待合并数组对应的第一序号;
第一查询单元820,用于根据第一序号,在块显示查找表中查询待合并数组中第一个数组的首地址;
第一设置单元830,用于基于第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0;
第二设置单元840,用于针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。
可选的,该装置还包括:
第二接收单元,用于接收用户输入的待删除数组对应的第二序号;
第二查询单元,用于根据第二序号,在块显示查找表中查询待删除数组中第一个数组的首地址;
第三设置单元,用于基于第一个数组的首地址,在数据显示查找表中将待删除数组包含的数据的数据状态置为0;
第四设置单元,用于基于第二序号,在块显示查找表中将待删除数组对应的数组状态置为0。
可选的,该装置还包括:
第三接收单元,用于接收用户输入的待查询数组对应的第三序号;
第三查询单元,用于根据第三序号,在块显示查找表中查询待查询数组中第一个数组的首地址;
第四查询单元,用于基于第一个数组的首地址,在数据显示查找表中查询待查询数组包含的数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
可选的,该装置还包括:
第四接收单元,用于接收用户输入的待查询数据对应的数据地址;
第五查询单元,用于根据数据地址,在数据显示查找表中查询待查询数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
可选的,该装置还包括:
第五接收单元,用于接收用户输入的待插入数据的数据信息和待插入数组对应的第四序号;
第六查询单元,用于根据第四序号,在块显示查找表中查询待插入数组对应的数组状态;
第五设置单元,用于如果数组状态为0,则在块显示查找表中,将待插入数组对应的数组状态置为1,并将待插入数组的第一个数组的首地址、最后一个数组的首地址和数据查询地址设置为为待插入数据分配的第一空闲地址;
第六设置单元,用于在数据显示查找表中,将待插入数据的数据地址设置为第一空闲地址,将外接向下连接地址设置为第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为待插入数据的数据信息;
第七查询单元,用于如果数组状态为1,则根据第四序号,在块显示查找表中查询待插入数组中最后一个数组的首地址;
第七设置单元,用于基于最后一个数组的首地址,在数据显示查找表中,将最后一个数组的第一个数据的外接向下连接地址设置为第一空闲地址,将外接向下连接标记置为1,将待插入数据的数据地址设置为第一空闲地址,将外接向下连接地址设置为第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为待插入数据的数据信息;
第八设置单元,用于在块显示查找表中,将待插入数组中最后一个数组的首地址设置为第一空闲地址。
可选的,该装置还包括:
第六接收单元,用于接收用户输入的待插入数据的数据信息、待插入数据所属的第二数组的数组标识和第二数组所属的具有连接关系的数组对应的第五序号;
第八查询单元,用于根据第五序号,在块显示查找表中查询具有连接关系的数组中第一个数组的首地址;
第九设置单元,用于基于第一个数组的首地址和数组标识,在数据显示查找表中将第二数组的最后一个数据的内接向下连接地址修改为为待插入数据分配的第二空闲地址,并将第二数组的最后一个数据内接向下连接标记置为1;
第十设置单元,用于在数据显示查找表中,将待插入数据的数据地址设置为第二空闲地址,将外接向下连接地址设置为第二空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为第二空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为待插入数据的数据信息。
在一些实施例中,所述装置是基于FPGA(现场可编程门阵列)或ASIC(专用集成电路)实现。
本发明实施例提供的一种数据管理的装置,接收用户输入的待合并数组对应的第一序号,并根据第一序号,在块显示查找表中查询待合并数组中第一个数组的首地址。之后,基于所述第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0,并针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。这样,通过将数据分别存储在块显示查找表和数据显示查找表中,赋予数据之间的连接,从而能够快捷索引,自由进行插入、删除、合并、查询等操作,进而提高了数据处理效率,减少了耗时。
基于相同的技术构思,本申请实施例还提供了一种电子设备,如图9所示,包括处理器901、通信接口902、存储器903和通信总线904,其中,处理器901,通信接口902,存储器903通过通信总线904完成相互间的通信,
存储器903,用于存放计算机程序;
处理器901,用于执行存储器903上所存放的程序时,实现上述的方法步骤:
上述电子设备提到的通信总线可以是外设部件互连标准(英文:PeripheralComponent Interconnect,简称:PCI)总线或扩展工业标准结构(英文:Extended IndustryStandard Architecture,简称:EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(英文:Random Access Memory,简称:RAM),也可以包括非易失性存储器(英文:Non-Volatile Memory,简称:NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(英文:Central ProcessingUnit,简称:CPU)、网络处理器(英文:Network Processor,简称:NP)等;还可以是数字信号处理器(英文:Digital Signal Processing,简称:DSP)、专用集成电路(英文:ApplicationSpecific Integrated Circuit,简称:ASIC)、现场可编程门阵列(英文:Field-Programmable Gate Array,简称:FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
基于相同的技术构思,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的web项目的部署方法步骤。
基于相同的技术构思,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的web项目的部署方法。
为使本领域技术人员更好地了解本发明,下面将以具体实施例说明本发明的实施方式。
发明人在进行多级索引表的处理方法具体实现过程中,在应用于数据库领域时,数据管理复杂程度高,需要存储的数据量大,位宽多。通常处理的数据是量大,处理程度复杂,需要大量存储空间,占用硬件资源较多。故本实施例在维持连续数据的基础上,将一整包待处理的数据独立分组存储,最后通过合并依然是一整包数据进行处理,将有这层联系的数据下文称为“有关系”。本实施例尤为棘手的是这个数据的处理需要维持其连续性。这种方式类似于软件的链表结构,能够进行插入与拼接等操作,以这样的处理方式既能便于查询利用数据,也可节约成本,对硬件资源要求不高。
为了实现这一方案,同时达到快捷索引且数据处理效率高的目的,实现整个装置是由多级表格组成,其交互关系如图1A所示。一级表格BlockLUT存放表征另一级表格即DataLUT的地址,而不同的地址存放的数据具有一定的关系,如一个有连接关系数组的第一个数据的地址或者有连接关系的最后一个数组的首地址等;另一级表格DataLUT主要是存放外部需要存放的数据,也存放其他数据类型表征存放数据的关系。同时此装置能够支持多种数据管理操作,包括外插入、内插入、合并、删除、查询和直接查询这六种操作,具体实施步骤由IndexLUT块进行实现。
由图1A可知IndexLUT块介于BlockLUT表和DataLUT表中间,其实质是实现控制功能。要实现装置设计的功能,将一数据包分为多个数组独立存储,且每个数据包中包含大量数据。控制块IndexLUT将会对输入的待存储的数据插入操作,存放在不同地址的表格中,同时记录数据间的连接关系,将地址信息按照不同的规定记录到BlockLUT和DataLUT表格中。
一级表格命名为BlockLUT,用来存储地址数据,如图10所示。BlockLUT的主体是一个数据存储表格,暂定深度为1024行,意思是能够存1024个各个数据类型的数据。数据存储有Blockadds,Blockadde和Blockaddr三种数据类型,位宽为16位,都可以作为另一级表格(其名为DataLUT)输入入口地址(即物理地址,表示每一行的行数,从0开始计数)。还内部存储status数,表征存储一行数据的状态,即成为状态标志信号,位宽位1。其中Blockadds这一列用于存放每一“有关系”(即大数据包独立出来的数据包,待合并连接)数据包的第一个数组的首地址或仅有一个数组时存储的是其地址本身,即图1B的A1(a1)地址或D1(d1)地址,Blockadde用于存放每一“有关系”数据包的最后一个数组的首地址或仅有一个数组时存放其地址本身,即图1B的C1(c1)地址或D1(d1)地址,Blockaddr用于存放待查询每一行32位数据的地址。状态标志信号status为1时表示此层地址存放数据有效,为0则表示此层地址存放的数据无效或者已被删除这种状态。考虑到有需要对一行数据的部分数据进行单独修改,表格每列的数据分开存储,方便对表格数据进行查询、插入与更新。
另一级表格命名为DataLUT,其主体为一个多行数据存储表格,存储的数据是明确其数据的连续性关系。暂定深度为1024行。有存储数据本身为Dataaddc,位宽为32位;附带存储外接向下连接地址out_next_addr,就是独立出来的数组连接下一个数组的第一个数据的首地址,即图1B中的a1那行表格数据存放的out_next_addr为存放b1数据那一行表格的地址,位宽为16;存储外接向下连接标记out_conseq,位宽为1位,当其值为1时则表示有外接关系,即如图1B中的A1数据包后还会外接一个B1数据包,若为0则表示没有外接关系,它是“有关系”数据包的最后一个数组的首个数据;还会存储内接向下连接地址in_next_addr,就是独立出来的数组中的数据内部连接下一个数据的地址,即a1那行表格数据存放in_next_addr为存储a2数据那一行的地址,位宽为16;内接向下连接标记in_conseq,位宽为1位,当其值为1时则表示有内接关系,即如图1B中的A1(a1)后还会内接一个a2,若为0则表示无内接关系,此数据为一个数组中的最后一个数据;有效标志信号status,位宽为1。status为1表示该行数据(即Dataaddc)是有效的,为0表示存放的数据无效或者已被删除这种状态。考虑到有需要对一行数据的部位数据进行单独修改,表格每列的数据分开存储。
在控制块IndexLUT和两个存储地址、数据信息的表格BlockLUT、DataLUT的基础上,要实现数据的连接关系,BlockLUT支持初始化、插入、更新、删除、查询,插入status以及查询status等操作,DataLUT支持初始化、外插入、内插入、合并、删除、更新、空闲ID查询、数据查询等操作,IndexLUT支持外部输入的外插入、内插入、合并、删除、查询和直接查询操作。下面所列举的操作只是IndexLUT块支持的内容,但其中包含BlockLUT和DataLUT会支持的操作内容。
在说明这些操作之前,下文所阐述的内接数据表示数组内部的连接关系;外接数据表示数组之间的连接关系,用各个数组的首地址数据之间的连接来表示。表格可以存储多个数组,每个数组包含一至多个不等的数据,每个数据占用一行RAM资源。在某一个数组内,它们的地址不一定连续,它们的连接关系通过内接数据来连接,即内接向下连接地址in_next_addr与内接向下连接标记in_conseq。如图1B有数组A,他的数据是a1,a2一直到an。某个数据那一行的in_next_addr表示他内接下接的数据的地址,in_conseq为1表示内接下接有效,比如a2后面接着a3数据,则a2数据那一行的in_next_addr为a3的地址。若数据为数组的最后一个数据,则它的in_next_addr为本身地址,同时in_conseq为0。
然后是外接数据,外接数据信息其实只存放在每个数组的第一个数据的外接信息RAM内,数组内除第一个数据外的其他数据的外接数据都是无效的,它们的外接向下连接地址out_next_addr默认存储为本身地址,out_conseq为0。外接数据的作用,记录各个数组之间的连接关系,比如图1B表示数组A,B,C是“将要”连接在一起的,是“有关系”的,D数组是独立的。那么RAM里面会这样表示,a1数据在的那一行RAM中外接下接out_next_addr存储的是b1数据的存放地址,外接下接有效标志out_conseq为1;b1数据在的那一行RAM中外接下接out_next_addr存储的是c1数据的地址,外接下接有效标志out_conseq为1,而c1数据作为外接连接的最后一个数据,它的out_next_addr为本身地址,同时out_next_addr为0,表示最后一个数据。详请见图10。外接连接的目的是为了“暂时”记录这3个数组的连接关系,作为后续合并操作的参考信息(3个数组是举例说明,允许范围内,可以任意个数组),在数组合并前可以单独的在A,B,C,数组后面插入数据,即在an或bn或cn后面内接数据,之后可以外部控制进行合并操作,根据外接数据存储的信息,ABC将头尾连接一起(A→B→C),会把三个数组ABC合并成一个数组即一个数据包。合并完成之后,形成一个新的数组M,这个数组的头地址还是a1,末地址是cn,此时M数组的性质与原来的单独数组D类似,A1还是作为他的外接信息存放地址,(此时A1存放的还是B1(b1)的外接下接地址,但是无效的,可以用来修改这个地址,用来连接其他数组头地址)。B1,C1将失效且失去外接存放地址作用,同时如果往M数组内插,将直接在cn后面插入了,不可在中间内插。
在上述说明的基础上,可支持如下操作:
插入实质是接收外部输入的数据写入到表格中,又分为外插入和内插入两种操作。外插入操作其实是将接收的待插入数据是几个关联数组除第一个数组之外的某个数组的第一个数据(下面简称下接外插入)或者写入几个关联数组的第一个数组的第一个数据(简称直接外插入),这样得以表示数组之间的连接关系。解释如下:
如果在整个数据库里就只有“有关系”的数组A→B,要进行下接外插入,即在A,B后面插入有连接关系的C,那么找到一个空闲地址存放C1(c1),存放需要插入的数据Dataaddc即C1(c1),同时将这空闲地址更新到B中的out_next_addr中,并且将B中的out_conseq变为1,同时C的out_next_addr是它本身的空闲地址,out_conseq为0。如果进行直接外插入,在整个数据库中外插入一个独立数组的第一个数据D1(d1),那么找到空闲地址(即未被占用存储数据的地址),对应行表格存放数据D1(d1),存放需要外插入的数据Dataaddc,D的out_next_addr是它本身的空闲地址,out_conseq置为0。
内插入操作的是指就是在数组A已有数据,还需要再进行插入数据an+1,an+2…,即存放数组A中内部具有连接关系的数据,在数组B已有数据后插入数据bn+1,bn+2…。若一个数组没有数据,进行内插入则相当于直接数组的外插入。
在外插入和内插入所阐述的连接关系的基础上进行数组的合并操作,多个数组合并形成一个初始的数据包。根据外接数据存储的信息,ABC将头尾连接一起(A→B→C),会把三个数组ABC合并成一个数组。合并完成之后,形成一个新的数组M,这个数组的头地址还是a1,末地址是cn,此时M数组的性质与原来的单独数组D类似,A1还是作为他的外接信息存放地址,(此时A1存放的还是B1(b1)的外接下接地址,但是无效的,可以用来修改这个地址,用来连接其他数组头地址)。B1,C1将失效且失去外接存放地址作用,同时如果往M数组内插,将直接在cn后面插入了,不可在中间内插,如图2B所示。并且“有关系”的数组只能合并一次,否则会陷入死循环。当然当DataLUT模块将内外接关系改变时,还可以再合并。
以上三种操作的解释说明,维持了数据存储的“关系”,保持数据的连续性,节省成本,快捷索引,数据管理效率显著提升。并且方便硬件在数据联结之后的后续应用。
为了方便理解以上内容,接下来列举更为具体实施例便于大家理解本发明。在具体实施例中,要进行输入数据所实现的“关系”是如图2B所示。总共一个大数据包,为便于数据管理,一个大的数据包独立分成数组A、B、C,这三个数据是“有关系”的。其关系体现在A→B→C具有一定的连接关系,为维持大数据包的连续性。首先外插入一个数据A1(a1)后,进行内接数据a2、a3直到an,再外接一个数据B1(b1)后,进行内接数据b2、b3直到bn,再外接一个数据C1(c1)后进行内接数据c2、c3直到cn整个数据包结束,BlockLUT表记录数据包中连续数据存放的首个数据以及最后一个数据包的首个数据的地址信息,DataLUT表记录数据包的数据以及数据之间的连接关系,之后进行合并操作将三个数组A、B、C进行连接。
为了实现这样的连接关系,具体操作进行阐述。外插入A1(a1)的操作时接收外部输入的需要进行插入的数据Dataaddc、BlockLUT的物理地址index_ID,这一地址对应的表格用来存储这一个数据的索引地址,首先BlockLUT要进行查询此层地址的状态是否有效,若查询得到状态有效信号status=0,表示index_ID这一物理地址上对应的位置未被占用,可以用来存放地址信息。此时要进行的外插入操作则是直接外插入。先是控制块IndexLUT给BlockLUT发出插入status请求信号将status置为1,目的是占用此地址,可将输入的待插入的数据Dataaddc的地址信息将要存放在此行。同时IndexLUT向DataLUT发出空闲地址请求,得到空闲地址out_free_addr。之后控制块IndexLUT将其空闲地址更新到BlockLUT表格中的数据Blockadde,Blockadds,Blockaddr,同时其空闲地址作为DataLUT的输入入口地址赋值给addr_d并且对DataLUT发出外插入请求信号进行外插入操作,这个时候输入的数据外插入到空闲地址这一行上,同时置其他列的数据,如将DataLUT表格中存放的数据out_next_addr置为空闲地址本身,out_conseq置为0,in_next_addr置为空闲地址本身,In_conseq置为0,Dataaddc为输入的待插入数据。直到BlockLUT的更新操作以及DataLUT的外插入都完成之后IndexLUT模块的外插入完成标志信号拉高,标志着整个模块的外插入操作完成,说明此时已外插入数据A1(a1),而对应的BlockLUT表格中的数据分别存放的Blockadds为空闲地址,Blockadde为空闲地址,Blockaddr为空闲地址,status为1;
若查询得到的BlockLUT此行地址状态有效信号status=1,表示此层地址已被占用,此时要进行的外插入操作则是下接外插入,如往A数组后外插入B1(b1),再外插入C1(c1)。控制块IndexLUT先对BlockLUT进行查询操作,IndexLUT给BlockLUT发出查询请求和索引地址index_ID,查询得到下接外插入的已有数据包最后一个数据的首地址Blockadde,用它来作为DataLUT的输入地址,DataLUT内部会找到另外一个空闲地址,即数据Dataaddc要插入的数据行,对DataLUT进行外插入操作,这一行的out_next_addr置为空闲地址本身,out_conseq置为0,in_next_addr置为空闲地址本身,In_conseq置为0,而A1(a1)数据对应那一行的out_next_addr置为下接的空闲地址,out_conseq置为1,其他数据类型即其余列的数据保持。完成后输出新的外插入末地址即外插入完成后整个新的“有关系”数据包的最后一个数组的首地址,将此最新地址通过更新操作,也就是IndexLUT给BlockLUT发出更新请求以及更新地址即index_ID作为Blockadde更新到BlockLUT中,更新操作完成后拉高IndexLUT模块的外插入完成标志信号,标志着整个模块的外插入操作完成,此时对应的BlockLUT表格中的数据分别存放的Blockadds为保持不变,Blockadde为新的“有关系”数据包的最后一个数组的首地址,Blockaddr保持不变,status为1。
接下来进行内插入a2、a3、…、an,如此时接收外部输入的待插入的数据Dataaddc,即a2、BlockLUT的物理地址index_ID、以及需要进行内插入的数据序号Block_ID,IndexLUT先将索引地址index_ID和查询请求信号输出给BlockLUT,查询出Blockadds地址即index_ID这一地址对应的数据包的首个数组的首个数据的首地址。将此作为DataLUT的输入入口地址,并且对DataLUT进行查询操作,DataLUT接收到IndexLUT发出的查询请求后不断输出外插向下连接地址out_next_addr,外插向下连接有效信号out_conseq;内置一计数器cnt自加一,将输出的out_next_addr再次作为输入地址进行查询,当block_ID为零时,就是往数组的第一个数据后进行内接数据,以其Blockadds作为输入入口地址进行内插入操作。否则直到cnt等于外部输入的块个数block_ID-1时,将此时输出的out_next_addr最后作为输入地址并且将Dataaddc和内插入请求信号输入给DataLUT进行内插入操作,待DataLUT的内插入完成后拉高IndexLUT模块的内插入完成标志信号,标志着整个模块的内插入操作完成,对应的BlockLUT表中的对应行的数据均保持不变。之后进行内插入a2、…、an,b1、b2、…、bn,c1、c2、…、cn都是类似操作。
为实现将具有连续关系的数组整合利用,现将具体实施例中的三个数组进行合并操作,其具体的实施步骤是:IndexLUT将接收到的index_ID输入给BlockLUT,作为BlockLUT的地址输入,通过查询操作读取Blockadds地址即一个“有关系”数据包的首地址,作为DataLUT的地址输入,进行合并操作。DataLUT根据外接关系将外接的各个数组头尾内接起来。外接RAM记录内接数组的地址头信息,从第一个外接头开头(即第一个内接数组的首地址),读内接RAM的数据,根据读出的内接地址,继续往下读,直到读出第一次in_conseq为0,即读出一个数组的最后一个数了,找到了最后一个数的地址H。这时候再读第二个外接头,把第二个外接头的地址,内接入地址H,H地址的in_conseq改为1,内接地址改为第二个外接头,然后看第二个外接头的外接标志(out_conseq)是不是0,若是0,说明是最后一个外接头,不需要再合并了。否则,接着读第二个数组,读到末地址,接上第三个外接头,以此类推,直到合并到最后一个外接头,如图2B所示。等到DataLUT合并完成之后,拉高IndexLUT的合并完成标志信号,表示整个模块的合并操作已完成。
需要注意的是,插入,删除,合并有前后顺序,全部插入完毕后才会出现删除,之后就不会有插入操作,需要的外插入内插入完成之后才会合并和删除,合并完成之后模块不再进行内部的插入操作,但可以在最后的地址后进行内插入新数据,也可以在合并后的一个数组后进行下接外插操作。删除一般会发生在合并之后。会将整个合并后的数组进行删除,如上述合并的数组,会将整个ABC数组全部删掉,所对应的status状态标志信号置0。
为了充分利用硬件资源,本实施例具有优秀的可重用性,对数据可进行删除还原操作,其具体的实施步骤是:IndexLUT块将接收到外部输入的索引地址index_ID作为BlockLUT的地址输入,同时发出查询请求给BlockLUT,进行查询操作得到index_ID这一地址对应的数据包的第一个数组的第一个数据的首地址Blockadds地址,将Blockadds地址作为DataLUT的输入入口地址,同时IndexLUT对DataLUT发出删除请求,DataLUT会根据内接向下标记in_conseq进行删除操作,待删除完成信号拉高后,IndexLUT模块的删除完成信号拉高,发送给外部标志着删除操作完成,之后IndexLUT模块给BlockLUT一个删除请求信号,同时将index_ID作为输入地址,对这一地址上的状态标志信号status置0,BlockLUT输出删除完成信号之后,IndexLUT会输出删除完成信号给外部,标志着删除操作完成。
为了让数据得到充分利用,整个实施例装置还支持查询功能,就是外部需求数组数据时,根据输入的BlockLUT中第一个数组的首地址以及最后一个数组的首地址来进行索引查询需求的数据。具体实施步骤是控制块IndexLUT将接收到外部输入的索引地址index_ID作为BlockLUT的地址输入,同时发出查询请求给BlockLUT,进行查询操作得到index_ID这一地址对应的数据包的首个数组的首地址Blockadds地址,作为DataLUT的地址输入入口地址,同时IndexLUT对DataLUT发出查询请求,输出DataLUT表中一行中所有的信息有数据Dataaddc、内插向下连接地址in_next_addr、内插向下连接有效信号in_conseq、外插向下连接地址out_next_addr、外插向下连接有效信号out_conseq。同时拉高查询完成标志信号,表示整个查询操作完成。
装置还支持直接查询操作,就是通过外部需求需要哪个数据就输入相应的行地址,数据得以输出,此方式方便直接、简便效率高。其具体实施步骤是将控制IndexLUT接收外部直接输入地址addr作为DataLUT模块的输入入口地址addr_d,查询输出DataLUT表格中这一地址对应行的数据Dataaddc,in_next_addr,in_conseq,out_next_addr、out_conseq。DataLUT直接查询完成后,拉高一个直接查询完成标志信号,表示整个直接查询操作完成。
本发明实施例还提供一种随机存储介质RAM,其上存储有大量的数据,根据程序步骤的处理对于RAM进行读写操作,将所需要的数据进行写操作,存放在随机存取存储器RAM中,也可以在查询等操作是将表格中存放的数据进行读操作,输出给外部得以利用。
综上所述,本发明实施例的多级索引表的实现与处理方法,通过将信息分别存储在两个表中,并有一个控制块控制两者的地址信息和数据信息,赋予数据“关系”,让整个装置都能快捷索引,自由进行处理插入、删除等操作,最终使整个装置的数据处理效率高,耗时少。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (14)
1.一种数据的管理方法,其特征在于,所述方法应用于数据管理设备,所述数据管理设备中预先存储有块显示查找表和数据显示查找表,所述块显示查找表包括序号、第一个数组的首地址、最后一个数组的首地址、数据查询地址和数组状态,所述数据显示查找表包括数据地址、外接向下连接地址、外接向下连接标记、内接向下连接地址和内接向下连接标记、数据状态和数据信息,所述方法包括:
接收用户输入的待合并数组对应的第一序号;
根据所述第一序号,在块显示查找表中查询所述待合并数组中第一个数组的首地址;
基于所述第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0;
针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收用户输入的待删除数组对应的第二序号;
根据所述第二序号,在块显示查找表中查询所述待删除数组中第一个数组的首地址;
基于所述第一个数组的首地址,在数据显示查找表中将所述待删除数组包含的数据的数据状态置为0;
基于所述第二序号,在块显示查找表中将所述待删除数组对应的数组状态置为0。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收用户输入的待查询数组对应的第三序号;
根据所述第三序号,在块显示查找表中查询所述待查询数组中第一个数组的首地址;
基于所述第一个数组的首地址,在数据显示查找表中查询所述待查询数组包含的数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收用户输入的待查询数据对应的数据地址;
根据所述数据地址,在数据显示查找表中查询所述待查询数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收用户输入的待插入数据的数据信息和待插入数组对应的第四序号;
根据所述第四序号,在块显示查找表中查询所述待插入数组对应的数组状态;
如果所述数组状态为0,则在所述块显示查找表中,将所述待插入数组对应的数组状态置为1,并将所述待插入数组的第一个数组的首地址、最后一个数组的首地址和数据查询地址设置为为所述待插入数据分配的第一空闲地址;
在数据显示查找表中,将所述待插入数据的数据地址设置为所述第一空闲地址,将外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息;
如果所述数组状态为1,则根据所述第四序号,在所述块显示查找表中查询所述待插入数组中最后一个数组的首地址;
基于所述最后一个数组的首地址,在所述数据显示查找表中,将所述最后一个数组的第一个数据的外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为1,将所述待插入数据的数据地址设置为所述第一空闲地址,将外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息;
在所述块显示查找表中,将所述待插入数组中最后一个数组的首地址设置为所述第一空闲地址。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收用户输入的待插入数据的数据信息、所述待插入数据所属的第二数组的数组标识和所述第二数组所属的具有连接关系的数组对应的第五序号;
根据所述第五序号,在块显示查找表中查询所述具有连接关系的数组中第一个数组的首地址;
基于所述第一个数组的首地址和所述数组标识,在数据显示查找表中将所述第二数组的最后一个数据的内接向下连接地址修改为为待插入数据分配的第二空闲地址,并将所述第二数组的最后一个数据内接向下连接标记置为1;
在所述数据显示查找表中,将所述待插入数据的数据地址设置为所述第二空闲地址,将外接向下连接地址设置为所述第二空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第二空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息。
7.一种数据的管理装置,其特征在于,所述装置应用于数据管理设备,所述数据管理设备中预先存储有块显示查找表和数据显示查找表,所述块显示查找表包括序号、第一个数组的首地址、最后一个数组的首地址、数据查询地址和数组状态,所述数据显示查找表包括数据地址、外接向下连接地址、外接向下连接标记、内接向下连接地址和内接向下连接标记、数据状态和数据信息,所述装置包括:
第一接收单元,用于接收用户输入的待合并数组对应的第一序号;
第一查询单元,用于根据所述第一序号,在块显示查找表中查询所述待合并数组中第一个数组的首地址;
第一设置单元,用于基于所述第一个数组的首地址,在数据显示查找表中将除最后一个数组以外的第一数组中的第一个数据的外接向下连接标记设置为0;
第二设置单元,用于针对每个第一数组,将该第一数组中的最后一个数据的内接向下连接地址修改为该第一数组中第一个数据的外接向下连接地址,并将该第一数组中的最后一个数据的内接向下连接标记设置为1。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二接收单元,用于接收用户输入的待删除数组对应的第二序号;
第二查询单元,用于根据所述第二序号,在块显示查找表中查询所述待删除数组中第一个数组的首地址;
第三设置单元,用于基于所述第一个数组的首地址,在数据显示查找表中将所述待删除数组包含的数据的数据状态置为0;
第四设置单元,用于基于所述第二序号,在块显示查找表中将所述待删除数组对应的数组状态置为0。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第三接收单元,用于接收用户输入的待查询数组对应的第三序号;
第三查询单元,用于根据所述第三序号,在块显示查找表中查询所述待查询数组中第一个数组的首地址;
第四查询单元,用于基于所述第一个数组的首地址,在数据显示查找表中查询所述待查询数组包含的数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第四接收单元,用于接收用户输入的待查询数据对应的数据地址;
第五查询单元,用于根据所述数据地址,在数据显示查找表中查询所述待查询数据的数据信息、内接向下连接地址、内接向下连接标记、外接向下连接地址和外接向下连接标记。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第五接收单元,用于接收用户输入的待插入数据的数据信息和待插入数组对应的第四序号;
第六查询单元,用于根据所述第四序号,在块显示查找表中查询所述待插入数组对应的数组状态;
第五设置单元,用于如果所述数组状态为0,则在所述块显示查找表中,将所述待插入数组对应的数组状态置为1,并将所述待插入数组的第一个数组的首地址、最后一个数组的首地址和数据查询地址设置为为所述待插入数据分配的第一空闲地址;
第六设置单元,用于在数据显示查找表中,将所述待插入数据的数据地址设置为所述第一空闲地址,将外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息;
第七查询单元,用于如果所述数组状态为1,则根据所述第四序号,在所述块显示查找表中查询所述待插入数组中最后一个数组的首地址;
第七设置单元,用于基于所述最后一个数组的首地址,在所述数据显示查找表中,将所述最后一个数组的第一个数据的外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为1,将所述待插入数据的数据地址设置为所述第一空闲地址,将外接向下连接地址设置为所述第一空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第一空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息;
第八设置单元,用于在所述块显示查找表中,将所述待插入数组中最后一个数组的首地址设置为所述第一空闲地址。
12.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第六接收单元,用于接收用户输入的待插入数据的数据信息、所述待插入数据所属的第二数组的数组标识和所述第二数组所属的具有连接关系的数组对应的第五序号;
第八查询单元,用于根据所述第五序号,在块显示查找表中查询所述具有连接关系的数组中第一个数组的首地址;
第九设置单元,用于基于所述第一个数组的首地址和所述数组标识,在数据显示查找表中将所述第二数组的最后一个数据的内接向下连接地址修改为为待插入数据分配的第二空闲地址,并将所述第二数组的最后一个数据内接向下连接标记置为1;
第十设置单元,用于在所述数据显示查找表中,将所述待插入数据的数据地址设置为所述第二空闲地址,将外接向下连接地址设置为所述第二空闲地址,将外接向下连接标记置为0,将内接向下连接地址设置为所述第二空闲地址,将内接向下连接标记置为0,将数据状态置为1,并将数据信息置为所述待插入数据的数据信息。
13.根据权利要求7至12任一所述的装置,其特征在于,所述装置是基于FPGA或ASIC实现。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010269376.8A CN111611238B (zh) | 2020-04-08 | 2020-04-08 | 数据的管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010269376.8A CN111611238B (zh) | 2020-04-08 | 2020-04-08 | 数据的管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111611238A CN111611238A (zh) | 2020-09-01 |
CN111611238B true CN111611238B (zh) | 2021-08-31 |
Family
ID=72202179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010269376.8A Active CN111611238B (zh) | 2020-04-08 | 2020-04-08 | 数据的管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111611238B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104021213A (zh) * | 2014-06-20 | 2014-09-03 | 中国银行股份有限公司 | 一种合并关联记录的方法及装置 |
US8856711B2 (en) * | 2004-09-15 | 2014-10-07 | Altera Corporation | Apparatus and methods for time-multiplex field-programmable gate arrays |
CN108614734A (zh) * | 2016-12-13 | 2018-10-02 | 迈普通信技术股份有限公司 | 安全参数索引管理方法及装置 |
CN109583861A (zh) * | 2018-11-23 | 2019-04-05 | 中科驭数(北京)科技有限公司 | key-value数据库中的数据压缩方法、访问方法和系统 |
CN110968413A (zh) * | 2018-09-28 | 2020-04-07 | 华为技术有限公司 | 一种数据管理方法、装置和服务器 |
CN110968267A (zh) * | 2019-11-15 | 2020-04-07 | 北京乐我无限科技有限责任公司 | 数据管理方法、装置、服务器及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729443A (zh) * | 2013-12-30 | 2014-04-16 | 北京首钢自动化信息技术有限公司 | 一种可配置式内存管理方法 |
CN104657446B (zh) * | 2015-02-04 | 2018-10-30 | 深圳市汇朗科技有限公司 | 分表联合统计查询方法、装置和系统 |
-
2020
- 2020-04-08 CN CN202010269376.8A patent/CN111611238B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856711B2 (en) * | 2004-09-15 | 2014-10-07 | Altera Corporation | Apparatus and methods for time-multiplex field-programmable gate arrays |
CN104021213A (zh) * | 2014-06-20 | 2014-09-03 | 中国银行股份有限公司 | 一种合并关联记录的方法及装置 |
CN108614734A (zh) * | 2016-12-13 | 2018-10-02 | 迈普通信技术股份有限公司 | 安全参数索引管理方法及装置 |
CN110968413A (zh) * | 2018-09-28 | 2020-04-07 | 华为技术有限公司 | 一种数据管理方法、装置和服务器 |
CN109583861A (zh) * | 2018-11-23 | 2019-04-05 | 中科驭数(北京)科技有限公司 | key-value数据库中的数据压缩方法、访问方法和系统 |
CN110968267A (zh) * | 2019-11-15 | 2020-04-07 | 北京乐我无限科技有限责任公司 | 数据管理方法、装置、服务器及系统 |
Non-Patent Citations (2)
Title |
---|
Higher Order Masking of Look-Up Tables;Jean-Sébastien Coron;《Annual International Conference on the Theory and Applications of Cryptographic Techniques》;20141231;第441-458页 * |
向量计算Array OLAP查询处理技术;张宇 等;《计算机工程与应用》;20150930;第51卷(第18期);第24-31页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111611238A (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4476813B2 (ja) | 任意に大きな文書内のデータへのスケーラブルなアクセス | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
JP3250544B2 (ja) | 転送先検索方法、転送先検索装置、検索テーブル記録媒体及び検索プログラム記録媒体 | |
KR102195836B1 (ko) | 인덱스 관리 방법 | |
CN102509012A (zh) | 将电子病历的内容映射电子病历标准数据库的方法 | |
CN106095698B (zh) | 面向对象的缓存写入、读取方法及装置 | |
CN107766374B (zh) | 一种海量小文件存储读取的优化方法和系统 | |
CN103561133A (zh) | 一种ip地址归属信息索引方法及快速查询方法 | |
CN105373541A (zh) | 数据库的数据操作请求的处理方法和系统 | |
CN106682139A (zh) | 一种基于Solr实现HBase多条件查询的方法及系统 | |
WO2024055571A1 (zh) | 一种namespace设置方法、装置及可读存储介质 | |
WO2023083237A1 (zh) | 图数据的管理 | |
WO2019165763A1 (zh) | 一种用于查询数据的方法 | |
CN110109763A (zh) | 一种共享内存管理方法及装置 | |
CN116226425A (zh) | 一种图数据的存储方法、读取方法和系统 | |
CN111831915A (zh) | 响应数据查询请求的方法、装置、电子设备及存储介质 | |
CN115167778A (zh) | 存储的管理方法、系统及服务器 | |
CN111611238B (zh) | 数据的管理方法及装置 | |
CN111241090B (zh) | 存储系统中管理数据索引的方法和装置 | |
CN111625543B (zh) | 一种基于HBase表实现全局单调递增的序列的方法 | |
WO2016192057A1 (zh) | 索引表的更新方法和设备 | |
CN111752941B (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN114443598A (zh) | 写数据方法、装置、计算机设备及存储介质 | |
CN103116652A (zh) | 一种基于拉链信息的索引存储管理方法 | |
CN116881243A (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 |