具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明数据块的查找方法一个实施例的流程图,如图1所示,该数据块的查找方法可以包括:
步骤101,获得待查找数据块所在路径树的高度值和该待查找数据块对应的数据管理结构号。
步骤102,根据该路径树的高度值和该数据管理结构号查找上述数据管理结构号对应的指针,并根据查找到的指针定位待查找数据块。
上述实施例中,根据待查找数据块所在路径树的高度值和该待查找数据块对应的数据管理结构号,查找该数据管理结构号对应的指针,然后根据查找到的指针定位上述待查找数据块;从而实现了根据待查找数据块对应的数据管理结构号,通过路径树直接查找到待查找数据块,减少了查找次数,提高了待查找数据块的查找效率。
本发明实施例通过一种路径树的数据结构来管理数据,初始建立路径树时,该路径树包括根节点和第一子节点,在该根节点中记录该路径树的第一高度值和根节点指向第一子节点的指针;这时,该路径树的第一高度值为该高度值的初始值,该第一高度值可以为1或其他正整数,本发明实施例对第一高度值的大小不作限定,但本发明实施例以第一高度值为1为例进行说明。
当有数据需要写入时,在第一子节点的数据管理结构所管理的数据块中写入数据,并在第一子节点中记录该数据管理结构对应的数据管理结构号和该数据管理结构号对应的指针,该数据管理结构号对应的指针指向上述数据管理结构所管理的数据块;本发明实施例中,可以依次在第一子节点的数据管理结构所管理的数据块中写入数据,即将第一子节点的第一个数据管理结构所管理的数据块写满之后,再在第一子节点的第二个数据管理结构所管理的数据块中写入数据,依次类推。
图2为本发明路径树一个实施例的示意图,如图2所示,该路径树包括根节点和第一子节点,根节点中记录有路径树的高度值和指向第一子节点的指针,图2所示路径树的高度值为1。图2中所示的第一子节点包括100个数据管理结构,这100个数据管理结构的数据管理结构号分别为0~99;每个数据结构管理逻辑上连续的4个数据块,每个数据管理结构号对应的指针指向该数据管理结构号对应的数据管理结构所管理的数据块。如图2所示,数据管理结构号0对应的指针指向第一子节点的第一个数据管理结构所管理的0、1、2和3这4个数据块,数据管理结构号1对应的指针指向第一子节点的第二个数据管理结构所管理的4、5、6和7这4个数据块,数据管理结构号2对应的指针指向第一子节点的第二个数据管理结构所管理的8、9、10和11这4个数据块。
图2仅是路径树的一个示例,本发明实施例并不仅限于此,本发明实施例对第一子节点所包括的数据管理结构的总数和每个数据管理结构管理的逻辑上连续的数据块的块数不作限定。但本发明实施例以下的描述中均以第一子节点包括100个数据管理结构,每个数据管理结构管理逻辑上连续的4个数据块为例进行说明。
本发明实施例中,在将第一子节点的数据管理结构所管理的数据块写满数据之后,如果还有数据需要写入,则在该路径树中插入第二子节点和第三子节点,将根节点指向第一子节点的指针修改为指向第二子节点,并将该路径树的第一高度值加上预定数值,获得该路径树的第二高度值,该预定数值可以为1或其他正整数,本发明实施例对预定数值的大小不作限定,但本发明实施例以该预定数值为1为例进行说明;该第二子节点的第一个指针指向第一子节点,第二子节点的第二个指针指向第三子节点。然后,在第三子节点的数据管理结构所管理的数据块中写入数据,并在第三子节点中记录数据管理结构对应的数据管理结构号和数据管理结构号对应的指针,该数据管理结构号对应的指针指向该数据管理结构号对应的数据管理结构所管理的数据块。其中,在第三子节点中写入数据的过程与在第一子节点中写入数据的过程相同,在此不再赘述。同理,在将第三子节点的数据管理结构所管理的数据块写满数据之后,如果还有数据需要写入,则可以继续在该路径树中插入第四子节点和第五子节点,后续的处理过程与在该路径树中插入第二子节点和第三子节点之后的处理过程相同,在此不再赘述。以此类推,还可以继续在该路径树中插入第六子节点,...,第N子节点,其中N为正整数,具体的实现方式均与在该路径树中插入第二子节点和第三子节点的实现方式相同,在此不再赘述。
图3为本发明路径树另一个实施例的示意图,与图2所示路径树相比,不同的是,图3所示的路径树还包括第二子节点和第三子节点,根节点的指针指向第二子节点,第二子节点同样包括100个数据管理结构,这100个数据管理结构的数据管理结构号分别为0~99;第二子节点数据管理结构号0对应的指针,即第二子节点的第一个指针指向第一子节点;第二子节点数据管理结构号1对应的指针,即第二子节点的第二个指针指向第三子节点。第三子节点同样包括100个数据管理结构,这100个数据管理结构对应的数据管理结构号分别为0~99,每个数据结构管理逻辑上连续的4个数据块,每个数据管理结构号对应的指针指向该数据管理结构号对应的数据管理结构所管理的数据块。如图3所示,第三子节点中数据管理结构号0对应的指针指向第三子节点的第一个数据管理结构所管理的400、401、402和403这4个数据块。
图3也仅为路径树的一个示例,本发明实施例并不仅限于此,本发明实施例对第一子节点、第二子节点和第三子节点所包括的数据管理结构的总数,以及每个数据管理结构管理的逻辑上连续的数据块的块数不作限定。但本发明实施例以下的描述中均以每个子节点包括100个数据管理结构,每个数据管理结构管理逻辑上连续的4个数据块为例进行说明。
结合图2和图3可以看出,本发明实施例提供的路径树最底层的子节点(例如:第一子节点或第三子节点)的数据管理结构号对应的指针指向数据管理结构所管理的逻辑上连续的数据块;除路径树最底层子节点之外的子节点(例如:第二子节点)的数据管理结构号对应的指针指向下一级子节点。
本发明实施例中,在获得待查找数据块所在路径树的高度值和该待查找数据块对应的数据管理结构号之后,即可根据该路径树的高度值和该数据管理结构号查找上述数据管理结构号对应的指针,进而可以根据查找到的指针定位该待查找数据块。
具体地,如果该路径树的高度值为第一高度值,即该路径树仅包括根节点和第一子节点,则可以根据该数据管理结构号在路径树的第一子节点中查找上述数据管理结构号对应的指针;或者,
如果该路径树的高度值为第二高度值,则可以先计算该数据管理结构号与该路径树最底层的每个子节点中数据管理结构的总数的商和余数;然后,在第二子节点中查找上述商对应的指针,并将该路径树的第二高度值减去预定数值,获得第三高度值;如果第三高度值等于第一高度值,则在上述商对应的指针所指向的子节点中查找余数对应的指针,该余数对应的指针为该数据管理结构号对应的指针;如果第三高度值大于第一高度值,则重复执行计算该数据管理结构号与该路径树最底层的每个子节点中数据管理结构的总数的商和余数,在第二子节点中查找上述商对应的指针,并将第三高度值减去预定数值的步骤,直至减去该预定数值之后,获得的高度值等于第一高度值。
下面结合图4,对本发明实施例中定位待查找数据块的过程进行详细说明。图4为本发明定位待查找数据块一个实施例的流程图,如图4所示,定位待查找数据块的过程可以包括:
步骤401,判断路径树的高度值是否等于该高度值的初始值。如果该路径树的高度值等于该高度值的初始值,则执行步骤402;如果该路径树的高度值大于该高度值的初始值,则执行步骤403。
步骤402,根据数据管理结构号在路径树的子节点中查找该数据管理结构号对应的指针,执行步骤407。
以图2所示的路径树为例,图2所示路径树的高度值等于该高度值的初始值,图2所示路径树的高度值为1。假设待查找数据块对应的数据管理结构号为12,则可以直接根据该数据管理结构号在第一子节点中查找数据管理结构号12对应的指针。
步骤403,计算数据管理结构号与路径树最底层的每个子节点中数据管理结构的总数的商和余数,执行步骤404。
本发明实施例中,每个子节点中数据管理结构的总数相同,本发明实施例以每个子节点中数据管理结构的总数为100为例进行说明。
步骤404,在第二子节点中查找上述商对应的指针,并将该路径树的高度值减去预定数值,执行步骤405。
其中,该预定数值可以为1或其他正整数,本发明实施例对该预定数值的大小不作限定,但该预定数值与本发明图1所示实施例步骤101中预定数值的大小相等,本发明实施例以该预定数值为1为例进行说明。
步骤405,判断减去该预定数值之后,获得的高度值是否等于该高度值的初始值。如果减去该预定数值之后,获得的高度值等于该高度值的初始值,则执行步骤406;如果减去该预定数值之后,获得的高度值大于该高度值的初始值,则返回执行步骤403。
步骤406,在上述商对应的指针所指向的子节点中查找余数对应的指针,该余数对应的指针为该数据管理结构号对应的指针,执行步骤407。
以图3所示路径树为例,图3所示路径树的高度值为2,大于该高度值的初始值,图3所示路径树最底层的每个子节点中数据管理结构的总数为100。假设待查找数据块对应的数据管理结构号为101,先计算101与100的商和余数,其中,101/100的商为1,余数为1;然后,在第二子节点中查找101/100的商对应的指针,101/100的商对应的指针即为第二子节点中数据管理结构号1对应的指针;并将路径树的高度值减去1;减去1之后,该路径树的高度值为1,等于该高度值的初始值,因此,接下来可以在101/100的商对应的指针所指向的子节点中查找101/100的余数对应的指针。其中,该101/100的商对应的指针所指向的子节点即为第三子节点,101/100的余数对应的指针即为第三子节点中数据管理结构号1对应的指针,因此第三子节点中数据管理结构号1对应的指针即为待查找数据块对应的数据管理结构号所对应的指针。
步骤407,根据查找到的指针定位上述待查找数据块。
具体地,首先可以根据查找到的指针定位待查找数据块对应的数据管理结构,然后从定位到的数据管理结构中获得待查找数据块的存储位置;最后,根据该存储位置定位该待查找数据块。
上述实施例实现了根据待查找数据块的数据管理结构号,通过路径树直接查找到待查找数据块,减少了查找次数,提高了待查找数据块的查找效率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图5为本发明数据块的查找装置一个实施例的结构示意图,本实施例提供的数据块的查找装置可以实现本发明图1所示实施例的流程。如图5所示,该数据块的查找装置可以包括:获得模块51、查找模块52和定位模块53。
其中,获得模块51,用于获得待查找数据块所在路径树的高度值和该待查找数据块对应的数据管理结构号。
查找模块52,用于根据获得模块51获得的路径树的高度值和数据管理结构号查找该数据管理结构号对应的指针;具体地,查找模块52可以根据本发明图4所示实施例提供的方法查找该数据管理结构号对应的指针。
定位模块53,用于根据查找模块52查找到的指针定位上述待查找数据块。
上述实施例中,查找模块52根据待查找数据块所在路径树的高度值和该待查找数据块对应的数据管理结构号,查找该数据管理结构号对应的指针,然后定位模块53根据查找到的指针定位上述待查找数据块;从而实现了根据待查找数据块对应的数据管理结构号,通过路径树直接查找到待查找数据块,减少了查找次数,提高了待查找数据块的查找效率。
图6为本发明数据块的查找装置另一个实施例的结构示意图,本实施例提供的数据块的查找装置可以实现本发明图1所示实施例的流程。与图5所示的数据块的查找装置相比,不同的是,图6所示的数据块的查找装置还可以包括:建立模块54、写入模块55和插入模块56。
其中,建立模块54,用于建立路径树,该路径树包括根节点和第一子节点,该根节点中记录该路径树的第一高度值和该根节点指向第一子节点的指针;
写入模块55,用于在第一子节点的数据管理结构所管理的数据块中写入数据,并在该第一子节点中记录数据管理结构对应的数据管理结构号和数据管理结构号对应的指针,该数据管理结构号对应的指针指向该数据管理结构号对应的数据管理结构所管理的数据块;
插入模块56,用于在写入模块55将第一子节点的数据管理结构所管理的数据块写满数据之后,在路径树中插入第二子节点和第三子节点,将根节点指向第一子节点的指针修改为指向第二子节点,并将该路径树的第一高度值加上预定数值,获得该路径树的第二高度值;上述第二子节点的第一个指针指向第一子节点,第二子节点的第二个指针指向第三子节点;
写入模块55,还可以在第三子节点的数据管理结构所管理的数据块中写入数据,并在第三子节点中记录数据管理结构对应的数据管理结构号和数据管理结构号对应的指针,该数据管理结构号对应的指针指向该数据管理结构号对应的数据管理结构所管理的数据块。
本实施例中,查找模块52可以包括第一查找子模块521;或者,查找模块52可以包括计算子模块522和第二查找子模块523;或者,查找模块52可以包括第一查找子模块521、计算子模块522和第二查找子模块523。
其中,第一查找子模块521,用于当路径树的高度值为第一高度值时,根据数据管理结构号在路径树的第一子节点中查找该数据管理结构号对应的指针。
计算子模块522,用于当路径树的高度值为第二高度值时,计算该数据管理结构号与路径树最底层的每个子节点中数据管理结构的总数的商和余数;
第二查找子模块523,用于在第二子节点中查找上述商对应的指针,并将该路径树的第二高度值减去上述预定数值,获得第三高度值;当第三高度值等于第一高度值时,在上述商对应的指针所指向的子节点中查找上述余数对应的指针,该余数对应的指针为该数据管理结构号对应的指针。
如果第三高度值大于第一高度值,则计算子模块522重复执行计算该数据管理结构号与路径树最底层的每个子节点中数据管理结构的总数的商和余数的步骤,并且第二查找子模块523重复执行在第二子节点中查找上述商对应的指针,并将第三高度值减去上述预定数值的步骤,直至减去上述预定数值之后,获得的高度值等于第一高度值。
本实施例中,定位模块53可以包括:第一定位子模块531和位置获得子模块532。
其中,第一定位子模块531,用于根据查找到的指针定位待查找数据块对应的数据管理结构;
位置获得子模块532,用于从第一定位子模块531定位到的数据管理结构中获得待查找数据块的存储位置;
第一定位子模块531,还用于根据位置获得子模块532获得的存储位置定位该待查找数据块。
上述实施例实现了根据待查找数据块对应的数据管理结构号,通过路径树直接查找到待查找数据块,减少了查找次数,提高了待查找数据块的查找效率。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。