一种生成索引文档id的方法及装置的制造方法_2

文档序号:9288458阅读:来源:国知局
索引文档ID的方法,包括以下步骤S11-S14:
[0055]在步骤Sll中,接收由客户端发送来的文件;
[0056]在步骤S12中,存储所述文件的信息,所述文件的信息分布在至少一个服务器中,每个服务器有至少一个分表;
[0057]在步骤S13中,获取存储的所有分表的数量、各个所述分表的序号和循环处理的次数;
[0058]在步骤S14中,根据所述所有分表的数量、所述各个分表的序号和所述循环处理的次数,计算所述文件的索引文档ID。
[0059]在一个实施例中,在服务器端,接收由用户端发送过来的文件。由于实际应用中可能会面对几十万甚至更多的客户端在同一个时间段内集中向服务器发送某一类信息。以服务器为例,该类信息的数据库可以拥有至少一个分表,数据库中的分表分布在至少一个服务器中。对服务器而言,一个服务器上可有至少一个分表。
[0060]以视频的描述文件为例,在有限的时间内,服务器来不及对所有视频描述文件进行处理,先将所有的视频的描述文件保存下来,依次记录在队列中,在保存下来的同时,月艮务器向客户端回复该客户端的操作成功。获取所有的分表序号,且所有的分表序号是连续的。例如,一个数据库拥有10个服务器,每个服务器中拥有5个分表,这些分表序号为‘01’、
‘02’、‘03’.....‘50’,且每一个分表中拥有一个变量idxid,idxid是该分表的循环处理的次数,循环处理的次数idxld的初始值为0,每处理一个视频的描述文件,该变量id xld自增I。通过分表的总数量idstep和各个分表的序号id flag以及每个分表中循环处理的次数idxid,来计算索引文档ID。
[0061]通过以下公式来计算索引文档ID:
[0062]ID = idxldXidstep+idflag,
[0063]其中,符号ID为所述索引文档ID,符号idxld为循环处理的次数,符号idstep为所有分表的数量,符号idflag为各个分表的序号。
[0064]所有未处理的索引文档ID都是O。
[0065]某个分表的序号idflag是40,该分表的循环处理的次数idxid为200,所有分表的数量idstepS 50,通过上述公式,生成的这个文件的索引文档ID就是10040。通过上述公式,还可得到该分表的上一个生成的索引文档ID是9990,且可以预测该分表下一个生成的索引文档ID是10090。分表序号idflag为41的分表,在其循环处理的次数idxld为200时,生成的索引文档ID为10041。同理,在循环次数为200的各个分表中,其生成的索引文档ID
的数值依此为‘10051’、‘10052’、‘10053’......‘10100’。在循环次数为201的各个分表中,其生成的索引文档ID的数值依此为‘10101’、‘10102’、‘10103’......‘10150’。通过上述内容可以得出索引文档ID是连续的。
[0066]根据上述公式ID = idxidX idstep+idflag,生成的索引文档ID的数值除以所有分表的数量idstep可以得到一个商idxid和一个余数idflag,该余数idflag表示该索引文档ID是对应于那个分表,该商idxld表示该分表中的循环的轮数,即该索引文档是该分表中的第多少个索引文档。举例而言,一个索引文档ID为10072,那么通过该数值除以所有分表的数量50,可以得到一个商为201,一个余数为22。该余数22表示索引文档ID为10072的索引文档对应的分表的序号为22,该商201表示索引文档ID为10072的索引文档在序号为22的分表中的第201个索引文档。通过上述内容可以得出索引文档ID与该索引文档所对应分表之间的是存在联系的。
[0067]本公开的实施例提供的技术方案可以包括以下有益效果:生成索引文档ID需要的元素只与分表有关,可以加强生成索引文档ID与分表的联系,生成的索引文档ID唯一且索引文档ID的数值连续,可根据索引文档ID推断出该索引文档对应的具体分表及该索引文档是在该分表中的第多少条记录信息。
[0068]在一个实施例中,如图2所示,还包括如下步骤S21-S22:
[0069]在步骤S21中,根据哈希算法依此计算所述文件的哈希值;
[0070]在步骤S22中,根据所述哈希值将所述文件匹配到相对应的所述分表。
[0071]在一个实施例中,在服务器端,接收由用户端发送过来的文件。总表可以分为至少一个分表,该些分表可以分布在至少一个服务器中。对服务器而言,一个服务器上可有至少一个分表。以服务器为例,文件以视频的描述描述文件为例,在有限的时间内,服务器来不及对所有视频描述文件进行处理,先将所有的视频描述文件保存下来,依此记录在队列中,在保存下来的同时,服务器向客户端回复该客户端的操作成功。如果数据库中只存在一个表,那么就无需考虑该文件与表的对应关系。在分表数量等于或多余两个的情况下,当每个分表所对应的文件数量相同时,可以使数据库系统中资源配置达到最优。通过使用哈希算法来依次计算队列记录文件的哈希值,根据哈希算法的特性,可以使得生成的哈希值在哈希值整个取值区间上均匀的分布,并建立各个分表与各个哈希值的取值区间的一一对应关系O
[0072]本公开的实施例提供的技术方案可以包括以下有益效果:文件的哈希值与分表的对应关系为一一对应关系,且所有文件的哈希值均匀的分布在整个哈希值的取值范围内。
[0073]在一个实施例中,如图3所示,还包括步骤S31-S32:
[0074]在步骤S31中,将所述哈希值的整个取值范围均等的划分为多个数值区间,所述多个数值区间的数量和所有所述分表的数量相同,且所述数值区间与所述分表一一对应;
[0075]在步骤S32中,将所述文件的哈希值在某一个数值区间段内的所有所述文件,匹配到同一个所述分表。
[0076]在一个实施例中,一个数据库中拥有分表的数量与划分的哈希数值区间的数量相同,且整个哈希值的数值区间是均匀划分的,即各个哈希值的取值区间的范围是一致的,根据哈希算法的特性,可使生成的哈希值在哈希值整个取值区间上均勾的分布,建立各个哈希值的取值区间与各个分表的一一对应关系。将文件的哈希值落在特定的哈希值取值区间的所有文件匹配到同一个分表。
[0077]本公开的实施例提供的技术方案可以包括以下有益效果:可以将所有文件均匀的匹配到各个分表中,避免出现某些分表对应的索引文档特别多,而另一些分表对应的索引文档比较少的情况出现。使得分表的所对应的文件数量均衡,进而使各个服务器的负载也均衡。
[0078]在一个实施例中,如图4所示,包括如下步骤S41:
[0079]在步骤S41中,每个所述分表都拥有各自独立的所述循环处理的次数。
[0080]在一个实施例中,在各个分表生成索引文档ID的过程中,各个分表中各自拥有独立循环处理的次数idxld,彼此之间的循环处理的次数idxld的数值只在本分表内有效。例如,一个分表的序号为39的分表,该分表的循环处理的次数idxid为13456。另一个序号为40的分表,其循环处理的次数idxld可能为12344。再一个序号为41的分表,其循环处理的次数idxld可能是14321。即各个分表中的循环处理的次数idxld是之间没有必然的联系。当序号为39的分表中的循环处理的次数idxld自增I之后,序号为40的分表中的循环处理的次数idxld并不会因为序号为39的分表中的循环处理的次数id xld的变化而变化。即序号为40的分表和序号为39的分表的循环处理的次数idxid彼此之间是独立的。
[0081]本公开的实施例提供的技术方案可以包括以下有益效果:各个分表中的循环处理的次数idxld彼此独立,可以避免在生成索引文档ID时,各个分表中的循环处理的次数idxld之间相互影响,导致索引文档ID的数值不连续或者生成重复的索引文档ID。
[0082]在一个实施例中,图5是根据一示例性实施例示出的一种生成索引文档ID的装置框图。如图5示,该装置包括接收模块51、存储模块52、获取模块53、第一计算模块54。
[0083]该接收模块51,用于接收由客户端发送
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1