用于管理数据集的方法、设备和计算机程序产品与流程

文档序号:20277240发布日期:2020-04-07 14:39阅读:115来源:国知局
用于管理数据集的方法、设备和计算机程序产品与流程
本公开的各实现方式涉及数据集,更具体地,涉及用于确定两个数据集之间的具有关联关系的数据元素的方法、设备和计算机程序产品。
背景技术
:随着计算机技术的发展,各种数据集已经被用于存储各种类型的数据。在各种应用环境中,经常会需要确定两个数据集之间是否存在具有关联关系的数据元素。由于上述操作是后续操作的基础,因而期望以更高的效率来找到具有关联关系的数据元素。技术实现要素:因而,期望能够开发并实现一种以更为有效的方式来管理数据集的技术方案。期望该技术方案能够与现有的应用环境相兼容,并且通过改造现有应用环境的各种配置,来以更为有效的方式管理数据集。根据本公开的第一方面,提供了一种用于管理存储系统的方法。在该方法中,在该方法中,可以获取包括第一数量的数据元素的第一数据集以及包括第二数量的数据元素的第二数据集。可以比较第一数量和第二数量。可以基于比较的结果来从第一数据集和第二数据集中选择一个数据集以作为搜索数据集,以及选择另一数据集作为遍历数据集。可以在搜索数据集中搜索候选数据元素,在此的候选数据元素与遍历数据集中包括的数据元素具有关联关系。根据本公开的第二方面,提供了一种用于管理存储系统的设备。该设备包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:获取包括第一数量的数据元素的第一数据集以及包括第二数量的数据元素的第二数据集;比较第一数量和第二数量;基于比较的结果来从第一数据集和第二数据集中选择一个数据集以作为搜索数据集,以及选择另一数据集作为遍历数据集;以及在搜索数据集中搜索候选数据元素,候选数据元素与遍历数据集中包括的数据元素具有关联关系。根据本公开的第三方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第一方面的方法。附图说明结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:图1示意性示出了可以使用本公开的方法来进行管理的数据集的框图;图2示意性示出了根据本公开的一个实现方式的用于管理数据集的框图;图3示意性示出了根据本公开的一个实现方式的用于管理数据集的方法的流程图;图4示意性示出了根据本公开的一个实现方式的基于数据集的索引来进行搜索的框图;图5示意性示出了其中可以实现本发明的方法的存储系统的框图;图6示意性示出了根据本公开的一个实现方式的存储系统的地址映射的框图;图7示意性示出了根据本公开一个实现方式的基于地址映射来确定第一数据集和第二数据集中的相关联的数据元素的框图;以及图8示意性示出了根据本公开的示例性实现的用于管理存储系统的设备的框图。具体实施方式下面将参照附图更详细地描述本公开的优选实现。虽然附图中显示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。图1示意性示出了其中可以使用本公开的方法来进行管理的数据集的框图100。如图1所示,第一数据集110可以包括第一数量112的数据元素,而第二数据集120可以包括第二数量122的数据元素。将会理解,在此的第一数据集110和第二数据集120中的数据元素的格式可以是相同的或者可以是不同的(只要两个格式之间具有关联关系即可)。在图1中,第一数据集110包括数据元素114,第二数据集120包括数据元素124,并且两个数据元素之间的连线表示两者具有关联关系。在下文中将以具体示例描述关联关系的含义。例如,第一数据集110和第二数据集120可以采用列表、集合或者其他方式存储。具体地,两个数据集可以采用相同或者不同的方式存储。在一个示例中,第一数据集110可以是基于对象的存储系统中的由第一用户使用的对象的标识符的列表,第二数据集120可以是由第二用户使用的对象的标识符的列表。此时,在第一数据集110和第二数据集120之间搜索具有关联关系的数据元素,可以是指确定由第一用户和第二用户共同使用的对象的过程。在另一示例中,第一数据集110可以是基于对象的存储系统中存储的对象的标识符的列表,第二数据集120可以是待回收区块(chunk)的标识符的列表。此时,在第一数据集110和第二数据集120之间搜索具有关联关系的数据元素,可以是指确定待回收列表中的各个区块是否被存储系统中的对象使用的过程。在此示例中,如果未找到具有关联关系的数据元素,则表示没有对象使用待回收列表中的区块,此时可以执行回收操作。将会理解,上文仅示意性示出了用于管理数据集的两个具体示例,在其他应用环境中还可以涉及其他的示例。目前已经提出了用于确定两个数据集之间的具有关联关系的数据元素的技术方案。在这些技术方案中,可以在一个数据集中逐一搜索是否存在与另一数据集中的每个数据元素相匹配的数据元素。然而,当数据集中包括大量数据元素时,将会导致较大的时间开销。此时,如何以更高的效率来确定两个数据集之间是否存在具有关联关系的数据元素,成为一个研究热点。为了至少部分地解决现有技术方案中的问题,根据本公开的示例性提出了一种用于处理数据集的方法。在该方法中,可以获取包括第一数量的数据元素的第一数据集以及包括第二数量的数据元素的第二数据集。可以比较第一数量和第二数量,并基于比较的结果来从第一数据集和第二数据集中选择一个数据集以作为搜索数据集。可以选择另一数据集作为遍历数据集。可以在搜索数据集中搜索候选数据元素,在此的候选数据元素与遍历数据集中包括的数据元素具有关联关系。将会理解,对于同一个数据集而言,搜索操作和遍历操作的复杂度并不相同,进而导致相对应的时间和计算资源的开销都存在差异。因而,利用上述示例性实现,可以两个数据集中包括的数据元素的数量的比较,来确定针对哪个数据集执行搜索操作。以此方式,可以以更高效的方式来获取第一数据集和第二数据集之间的具有关联关系的数据元素。在下文中将参见图2描述本公开的更多细节,该图2示意性示出了根据本公开的一个实现方式的用于管理数据集的框图200。如图2所示,第一数据集110包括第一数量112的数据元素,以及第二数据集120包括第二数量122的数据元素。在框210处,可以比较第一数量112和第二数量122,并基于比较的结果来确定搜索数据集和遍历数据集。在此搜索数据集是指针对其执行搜索操作的数据集,而遍历数据集是指针对其执行遍历操作的数据集。在此实现中,可以基于比较的结果来从第一数据集110和第二数据集120中选择一个数据集以作为搜索数据集220,继而可以选择另一数据集作为遍历数据集230。可以在搜索数据集220中执行搜索操作222,并且可以在遍历数据集230中执行遍历操作232,以便找到候选数据元素240。将会理解,在此的候选数据元素240与遍历数据集222中包括的数据元素具有关联关系。图3示意性示出了根据本公开的一个实现方式的用于管理数据集的方法300的流程图。在框310处,获取包括第一数量112的数据元素的第一数据集110以及包括第二数量122的数据元素的第二数据集120。第一数据集110和第二数据集120可以基于多种数据结构来存储,例如,可以以列表、链表、集合或者其他数据结构来存储。将会理解,在此并不限定两个数据集的存储方式,两个数据集可以以相同或者不同的方式来存储。在框320处,比较第一数量112和第二数量122。在框330处,基于比较的结果来从第一数据集110和第二数据集120中选择一个数据集以作为搜索数据集220,以及选择另一数据集作为遍历数据集230。在此过程中,如果第一数量112和第二数量122相等,则可以从两个数据集中选择任意数据集来作为搜索数据集220,并选择另一数据集作为遍历数据集230。如果第一数量112和第二数量122不同,则可以选择较大数量所对应的数据集来作为搜索数据集220,并选择另一数据集作为遍历数据集230。在下文中,将详细描述有关选择搜索数据集220和遍历数据集230的更多细节。根据本公开的示例性实现,可以选择与第一数量112和第二数量122中的较大值相对应的数据集来作为搜索数据集220。具体地,如果第一数量112大于第二数量122,可以选择第一数据集112作为搜索数据集220,以及选择第二数据集120作为遍历数据集230。又例如,如果第一数量112小于第二数量122,可以选择第二数据集122作为搜索数据集220,以及选择第一数据集110作为遍历数据集230。将会理解,对于同一个数据集而言,搜索操作的复杂度通常低于遍历操作的复杂度。数据集中的数据元素的数量越大,则复杂度的差异越大。因而,利用上述示例性实现,可以针对包括较多数据元素的数据集执行搜索操作,而针对包括较少数据元素的数据集执行遍历操作。以此方式,可以以更高效的方式来获取第一数据集和第二数据集之间的具有关联关系的数据元素。在框340处,在搜索数据集220中搜索候选数据元素,候选数据元素与遍历数据集230中包括的数据元素具有关联关系。根据本公开的示例性实现,可以按顺序来遍历该遍历数据集中的每个数据元素。进一步,针对遍历数据集230中的给定数据元素,可以对搜索数据集220进行搜索,以便确定在该搜索数据集20中是否存在与给定数据元素具有关联关系的候选数据元素240。利用上述示例性实现,由于遍历数据集230中包括的数据元素的数量较少,因而针对该遍历数据集230执行遍历操作并不会导致较高的时间开销。另一方面,尽管在搜索数据集220中包括较多的数据元素,然而由于搜索操作的复杂度较低,因而同样不用导致太高的时间开销。以此方式,可以以更高效的方式来获取第一数据集和第二数据集之间的具有关联关系的数据元素。根据本公开的示例性实现,可以首先获取搜索数据集的索引。将会理解,数据集的索引可以基于多种技术。例如,索引可以是基于二叉树、b+树等树状结构的索引,或者还可以是基于哈希函数的哈希索引。在搜索数据集220中,可以基于索引来搜索与给定数据元素具有关联关系的候选数据元素。由于索引可以加快搜索操作的时间效率,因而利用上述示例性实现可以进一步降低在搜索数据集中搜索候选数据元素的时间开销。在下文中将参见图4描述有关基于索引来进行搜索的更多细节。图4示意性示出了根据本公开的一个实现方式的基于数据集的索引来进行搜索的框图400。将会理解,数据集的索引可以基于多种方式来建立。尽管在图4中示意性示出了基于二叉树来建立的索引,在其他实现中,还可以基于b+树、多叉树或者哈希函数来建立索引。在图4中,搜索数据集220可以包括7个数据元素,并且遍历数据集222可以包括2个数据元素。为简化描述起见,假设两个数据集中的数据元素均为整数,搜索数据集220中的各个数据元素分别为整数1、4、3、5、9、8和10,并且遍历数据集222中的各个数据元素分别为整数9和7。图4左侧示出了基于二叉树的索引,该索引包括:根节点430,第一层节点432和434,以及第二层节点436、438、440和442。在此实现中,可以逐一地针对该遍历数据集222中的每个数据元素进行处理。可以首先获取遍历数据集222中的第一个数据元素(值为9),此时可以基于索引来在搜索数据集220中搜索数值为9的数据元素。搜索过程如下,从根节点430开始,比较根节点430中的数值5与9,由于9>5,因而将遍历根节点430的右侧子树。操作前进至右侧节点434,该节点434的数值为9。此时,在搜索数据集220中找到了与搜索数据集222中的第一个数据元素相匹配的数据元素,进而可以将找到的数据元素标记为候选数据元素240。接着,可以获取遍历数据集222中的第二个数据元素(值为7),此时可以基于索引来在搜索数据集220中搜索数值为7的数据元素。搜索过程如下,从根节点430开始,比较根节点430中的数值5与7,由于7>5,因而将遍历根节点430的右侧子树。操作前进至右侧节点434,该节点434的数值为9。由于9>7,因而将遍历节点434的左侧子树,并且操作前进至左侧节点440。节点440的数值为8,8>7并且该节点440不存在左子树,此时搜索过程结束。在搜索数据集220中不存在与搜索数据集222中的第二个数据元素相匹配的数据元素。采用上文描述的方式,基于搜索数据集220的索引,可以以更快的方式来确定两个数据集之间的具有关联关系的数据元素。将会理解,图4仅示意性示出了两个数据集均包括较少数据元素的情况,在实际应用环境中两个数据集通常都包括数万甚至数十万数据元素。在下文中,将基于具体公式比较用于确定两个数据集之间的具有关联关系的数据元素的复杂度。假设第一数量112表示为n,第二数量122表示为m,并且n>m,则此时第一数据集110是搜索数据集220,而第二数据集120是遍历数据集230。当搜索数据集220的以索引以二叉树方式构建时,搜索操作的复杂度为o(log2n),而遍历操作的复杂度为o(m)。此时,采用本公开的方法用于确定两个之间的具有关联关系的数据元素的整体复杂度为o(log2n*m)。假设n=100000并且m=2,则使用本公开的方法的整体复杂度为:o(log2n*m)=o(log2100000*2)≈33在常规的技术方案中,并不比较第一数量112和第二数量122的,而是直接在第二数据集120中搜索是否存在与第一数据集110中的每个数据元素具有关联关系的数据元素。此时,对第一数据集110执行遍历操作的复杂度为o(n),对第二数据集120执行搜索操作的复杂度为o(log2m)。继续上文的示例,使用常规技术方案的整体复杂度为:o(n*log2m)=o(100000*log22)=100000。在上述示例中,33<<100000,可见采用本公开的方法的整体复杂度远低于常规技术方案的复杂度。进而,采用本公开的方法的执行效率将远高于常规技术方案的效率。将会理解,在上文中仅仅示意性示出了采用二叉树索引时的复杂度的比较。当采用其他方式建立索引时,复杂度的计算公式将会有所变化。例如,当基于哈希函数建立索引时,搜索操作的复杂度为1。此时采用本公开的方法的复杂度将为o(1*m)=o(2)。在上文中已经描述了如何确定两个数据集之间的相关联的数据元素的一般性描述。在下文中将结合存储系统的应用环境,来描述根据本公开的示例性实现的方法在存储系统领域中的具体应用。目前已经开发出了多种存储系统,具体地,图5示意性示出了其中可以实现本公开的方法的存储系统的示意图500。如图5所示,可以提供资源池570,并且该资源池570可以包括多个存储设备510、520、530、540、550、……、560。尽管在此示出了多个独立的物理存储设备510、520、530、540、550、……、560,根据本公开的示例性实现,存储设备还可以是虚拟存储设备。可以基于资源池570来提供一个或多个存储系统。例如,存储系统590和592可以经由网络来访问资源池570中的存储设备中的存储空间,以便向用户提供数据访问服务。在此实现中,存储系统590可以是基于对象的存储系统,并且在下文中,将参见图6描述基于对象的存储系统的更多细节。图6示意性示出了根据本公开的一个实现方式的基于对象的存储系统590的地址映射630的框图600。在存储系统590中可以包括多个对象,例如,对象610可以是存储系统中的一个对象。该对象610可以包括多个片段(fragment)612、614、等。此时由于存储系统590是分布式存储系统,因而对象610中的多个片段612、614等可以分别被存储在不同的区块620、622等之中。为了记录对象中的各个片段被存储于何处,存储系统590可以包括地址映射630,以用于描述对象所包括的至少一个片段与至少一个区块的关联关系。如图6所示,地址映射630可以包括:对象id632、片段id634(表示对象中的各个片段的id)以及区块id636(表示某个片段被存储于其中的区块的id)。可以基于存储系统590中的每个对象中的每个片段来生成地址映射630中的每个条目,以便使得地址映射630描述每个对象中的每个片段被存储于哪个区块。将会理解,图6中的地址映射630仅仅是一个示意性的数据结构,根据本公开的示例性实现,地址映射630还可以包括更多或者更少的字段。例如,地址映射630可以包括:片段id字段,用于唯一地指示各个对象中的各个片段;以及区块id字段,用于唯一地指示一个片段被存储在哪个区块中。根据本公开的示例性实现,可以在基于对象的存储系统中实现上文描述的方法。例如,第一数据集可以包括基于对象的存储系统中的至少一个对象的标识符,以及第二数据集包括将要从存储系统中被回收的至少一个区块的标识符。在存储系统的运行期间,经常会存在需要回收可能已经不再被使用的区块的情况。为了确保存储系统的可靠性,在回收之前需要验证回收列表中的区块是不再被存储系统中的任何对象使用的区块。利用上述示例性实现,可以加速验证回收列表的过程,进而可以提高存储系统的垃圾回收的效率。根据本公开的示例性实现,其中给定数据元素是至少一个对象中的给定对象的对象标识符。进一步,存储系统可以包括地址映射,在此的地址映射描述至少一个对象所包括的至少一个片段与至少一个区块的关联关系。基于该地址映射,可以从区块标识符的列表中找到哪些区块中存储了存储系统中的对象中的片段。具体地,响应于地址映射指示给定对象标识符所表示的对象与第二数据集中的给定区块标识符所表示的区块之间具有关联关系,将给定区块标识为候选数据元素。利用上述示例性实现,可以快速地从待回收列表中找到仍然被存储系统中的对象使用的、不满足回收条件的区块。将会理解,由于对象可能涉及大量数据,并且在存储时可能涉及多个区块的情况。例如,对象可以被划分为多个片段,并且每个片段可以位于不同的区块。根据本公开的示例性实现,可以首先基于地址映射确定对象标识符所表示的对象中包括的至少一个片段,进而针对每个片段进行处理。如果至少一个片段中的一个片段与给定区块标识符所表示的区块之间具有关联关系,也即该片段被存储在给定区块标识符所表示的区块中,则可以将给定区块标识为候选数据元素。利用上述示例性实现,可以以更为快速的方式针对对象中的每个片段进行逐一确认,进而防止出现对象中的某个或者某些片段被存储在待回收列表所指示的一个或多个区块中并且被错误地回收的情况。以此方式,可以较小的时间开销提高存储系统的可靠性。图7示意性示出了根据本公开一个实现方式的基于地址映射630来确定第一数据集110和第二数据集120中的相关联的数据元素的框图700。如图7所示,在此的第一数据集110可以是对象id列表710,其中包括存储系统中的全部对象的标识符:object01、object02。第二数据集120可以是区块id列表720,其中包括存储系统中的待回收的全部区块的标识符:chunk01、chunk02、chunk03。假设地址映射630中的内容如下文表1所示:表1地址映射的示例序号对象id片段id区块id1object01fragment01chunk012object01fragment02chunk043object02fragment01chunk054object02fragment02chunk065object02fragment03chunk07可以采用上文描述的方法来确定区块id列表720中的区块是否满足回收条件。换言之,对象id列表710中的对象中的区块是否被存储在该区块id列表720中的区块中。如果判断结果为“否”,则区块id列表720中的区块满足回收条件。由于对象id列表710包括2个数据元素,而区块id列表720包括3个数据元素,因而可以在区块id列表720中分别搜索是否包括与对象object01和object02具有关联关系的数据元素。基于表1所示的地址映射可知,在区块chunk01中存储了对象object01中的fragment01。因而此时区块id列表720中的区块chunk01不满足删除条件。在上文中描述了第一数据集110包括对象的标识符而第二数据集120包括待回收区块的标识符的情况。根据本公开的示例性实现,两个数据集的内容还可以被交换。此时,第一数据集110可以包括将要从存储系统590中被回收的至少一个区块的标识符,而第二数据集120可以包括基于对象的存储系统590中的至少一个对象的标识符。继续上文描述的示例,此时给定数据元素是至少一个区块中的给定区块的区块标识符,以及并且在搜索数据集中搜索与给定数据元素具有关联关系的候选数据元素的过程与上文描述的过程类似。此时,在待回收列表中进行搜索时,如果地址映射指示给定区块标识符所表示的区块与第二数据集中的给定对象标识符所表示的对象之间具有关联关系,将给定对象标识为候选数据元素。根据本公开的示例性实现,如果确定在搜索数据集中不存在候选数据元素,从存储系统中回收至少一个区块。在此实现中,搜索数据集中不存在候选数据元素表示:待回收列表中不包括被存储系统中的对象使用的任何片段。此时,将列表中的全部区块进行回收是安全的。利用上述示例性实现,可以以快速并且有效的方式来验证待回收列表中的区块是否可以被回收。在上文中已经参见图2至图7详细描述了根据本公开的方法的示例,在下文中将描述相应的设备的实现。根据本公开的示例性实现,提供了一种用于管理存储系统的装置。该装置包括:获取模块,配置用于获取包括第一数量的数据元素的第一数据集以及包括第二数量的数据元素的第二数据集;比较模块,配置用于比较第一数量和第二数量;选择模块,配置用于基于比较的结果来从第一数据集和第二数据集中选择一个数据集以作为搜索数据集,以及选择另一数据集作为遍历数据集;以及搜索模块,配置用于在搜索数据集中搜索候选数据元素,候选数据元素与遍历数据集中包括的数据元素具有关联关系。根据本公开的示例性实现,选择模块进一步配置用于:响应于第一数量大于第二数量,选择第一数据集作为搜索数据集,以及选择第二数据集作为遍历数据集。根据本公开的示例性实现,搜索模块进一步配置用于:针对遍历数据集中的给定数据元素,在搜索数据集中搜索与给定数据元素具有关联关系的候选数据元素。根据本公开的示例性实现,搜索模块进一步配置用于:获取搜索数据集的索引;以及在搜索数据集中,基于索引来搜索与给定数据元素具有关联关系的候选数据元素。根据本公开的示例性实现,第一数据集包括基于对象的存储系统中的至少一个对象的标识符。根据本公开的示例性实现,第二数据集包括将要从存储系统中被回收的至少一个区块的标识符。根据本公开的示例性实现,给定数据元素是至少一个对象中的给定对象的对象标识符,以及搜索模块进一步配置用于:获取存储系统的地址映射,地址映射描述至少一个对象所包括的至少一个片段与至少一个区块的关联关系;以及响应于地址映射指示给定对象标识符所表示的对象与第二数据集中的给定区块标识符所表示的区块之间具有关联关系,将给定区块标识为候选数据元素。根据本公开的示例性实现,搜索模块进一步配置用于:基于地址映射确定对象标识符所表示的对象中包括的至少一个片段;响应于至少一个片段中的一个片段与给定区块标识符所表示的区块之间具有关联关系,将给定区块标识为候选数据元素。根据本公开的示例性实现,第一数据集包括将要从存储系统中被回收的至少一个区块的标识符。根据本公开的示例性实现,第二数据集包括基于对象的存储系统中的至少一个对象的标识符。根据本公开的示例性实现,给定数据元素是至少一个区块中的给定区块的区块标识符,以及搜索模块进一步配置用于:获取存储系统的地址映射,地址映射描述至少一个对象所包括的至少一个片段与至少一个区块的关联关系;以及响应于地址映射指示给定区块标识符所表示的区块与第二数据集中的给定对象标识符所表示的对象之间具有关联关系,将给定对象标识为候选数据元素。根据本公开的示例性实现,进一步包括回收模块,配置用于响应于确定在搜索数据集中不存在候选数据元素,从存储系统中回收至少一个区块。图8示意性示出了根据本公开的示例性实现的用于管理存储系统的设备800的框图。如图所示,设备800包括中央处理单元(cpu)801,其可以根据存储在只读存储器(rom)802中的计算机程序指令或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序指令,来执行各种适当的动作和处理。在ram803中,还可存储设备800操作所需的各种程序和数据。cpu801、rom802以及ram803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。设备800中的多个部件连接至i/o接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。上文所描述的各个过程和处理,例如方法300,可由处理单元801执行。例如,在一些实现中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实现中,计算机程序的部分或者全部可以经由rom802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序被加载到ram803并由cpu801执行时,可以执行上文描述的方法400的一个或多个步骤。备选地,在其他实现中,cpu801也可以以其他任何适当的方式被配置以实现上述过程/方法。根据本公开的示例性实现,提供了一种用于管理存储系统的设备,包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行动作。该动作包括:获取包括第一数量的数据元素的第一数据集以及包括第二数量的数据元素的第二数据集;比较第一数量和第二数量;基于比较的结果来从第一数据集和第二数据集中选择一个数据集以作为搜索数据集,以及选择另一数据集作为遍历数据集;以及在搜索数据集中搜索候选数据元素,候选数据元素与遍历数据集中包括的数据元素具有关联关系。根据本公开的示例性实现,响应于第一数量大于第二数量,选择第一数据集作为搜索数据集,以及选择第二数据集作为遍历数据集。根据本公开的示例性实现,针对遍历数据集中的给定数据元素,在搜索数据集中搜索与给定数据元素具有关联关系的候选数据元素。根据本公开的示例性实现,获取搜索数据集的索引;以及在搜索数据集中,基于索引来搜索与给定数据元素具有关联关系的候选数据元素。根据本公开的示例性实现,第一数据集包括基于对象的存储系统中的至少一个对象的标识符;以及第二数据集包括将要从存储系统中被回收的至少一个区块的标识符。根据本公开的示例性实现,给定数据元素是至少一个对象中的给定对象的对象标识符。根据本公开的示例性实现,获取存储系统的地址映射,地址映射描述至少一个对象所包括的至少一个片段与至少一个区块的关联关系;以及响应于地址映射指示给定对象标识符所表示的对象与第二数据集中的给定区块标识符所表示的区块之间具有关联关系,将给定区块标识为候选数据元素。根据本公开的示例性实现,基于地址映射确定对象标识符所表示的对象中包括的至少一个片段;响应于至少一个片段中的一个片段与给定区块标识符所表示的区块之间具有关联关系,将给定区块标识为候选数据元素。根据本公开的示例性实现,第一数据集包括将要从存储系统中被回收的至少一个区块的标识符。根据本公开的示例性实现,第二数据集包括基于对象的存储系统中的至少一个对象的标识符。根据本公开的示例性实现,给定数据元素是至少一个区块中的给定区块的区块标识符。根据本公开的示例性实现,获取存储系统的地址映射,地址映射描述至少一个对象所包括的至少一个片段与至少一个区块的关联关系;以及响应于地址映射指示给定区块标识符所表示的区块与第二数据集中的给定对象标识符所表示的对象之间具有关联关系,将给定对象标识为候选数据元素。根据本公开的示例性实现,响应于确定在搜索数据集中不存在候选数据元素,从存储系统中回收至少一个区块。根据本公开的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的方法。根据本公开的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本公开方法。本公开可以是方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。这里参照根据本公开实现的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本
技术领域
的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本
技术领域
的其他普通技术人员能理解本文公开的各实现。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1