System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据库,特别是涉及一种创建索引的方法、装置、计算机设备、存储介质和计算机程序产品。
技术介绍
1、随着计算机技术技术的发展,在各种各样的场景中,需要将产生的数据存储下来以便于查询,例如客户数据、产品数据、订单数据等等,随着数据量越来越大,海量数据的查询耗时也日益增长。
2、目前,文档型数据库,使用一种名为索引的数据结构存储海量数据,这一结构的设计可以允许十分快速地进行全文本查询,可以改善对海量数据查询效率低下的问题。文档型数据库将每条数据看作一个文档,索引即海量相似文档的集合,如海量订单数据的索引、海量产品数据的索引等,通过这种索引可以提高数据查询效率。在大数据时代,一个索引所包含的数据可能远远超过单机的资源能力,为此,通常将一个索引的数据切分为多个索引分片,分布到分布式集群的多个节点上,为了提高整个分布式集群的可靠性与检索数据的效率,还可以为每个索引分片设置主分片与副本分片。
3、然而,目前主分片与副本分片之间数据同步的方式是在主分片所在节点上处理完一个文档后得到该文档相关数据如关键词后,再将该文档发送至相应的副本分片所在节点,副本分片所在节点需要再次对该文档进行类似的处理,主分片与副本分片两侧对同一个文档的处理是独立的。而通常对文档的处理会涉及到大量的cpu资源,而同一个文档的处理,既在主分片侧执行,又在每一个副本分片侧执行,这种冗余处理导致了整个分布式集群的cpu资源浪费,影响分布式集群整体上的处理性能。
技术实现思路
1、基于此,有必要针对
2、本申请提供了一种索引处理方法,所述索引包括至少一个索引分片,每个索引分片包含主分片与副本分片,对应同一个索引分片的主分片与副本分片分布在不同的节点上,每个索引分片包括至少一个索引段,每个索引段是所述索引的最小可检索数据单元;所述方法包括:
3、每当目标索引分片的主分片所在的节点接收到待加入所述索引的文档时,处理所述文档,得到与所述文档关联的检索数据,将所述检索数据写入所述目标索引分片的主分片的段缓存中;
4、当所述段缓存满足索引段生成条件时,读出所述段缓存中的检索数据以生成一个索引段,将所述一个索引段加入所述目标索引分片的主分片;
5、将所述索引段复制到所述目标索引分片的副本分片。
6、本申请还提供了一种索引处理装置,所述索引包括至少一个索引分片,每个索引分片包含主分片与副本分片,对应同一个索引分片的主分片与副本分片分布在不同的节点上,每个索引分片包括至少一个索引段,每个索引段是所述索引的最小可检索数据单元;所述装置包括:
7、缓存模块,每当目标索引分片的主分片所在的节点接收到待加入所述索引的文档时,处理所述文档,得到与所述文档关联的检索数据,将所述检索数据写入所述目标索引分片的主分片的段缓存中;
8、索引段生成模块,用于当所述段缓存满足索引段生成条件时,读出所述段缓存中的检索数据以生成一个索引段,将所述一个索引段加入所述目标索引分片的主分片;
9、复制模块,用于将所述索引段复制到所述目标索引分片的副本分片。
10、在一个实施例中,所述装置还包括:
11、日志记录模块,用于将所述文档写入所述目标索引分片的主分片的日志文件中;
12、文档传输模块,用于将所述文档发送至所述目标索引分片的副本分片所在的节点,以使所述目标索引分片的副本分片所在的节点,将所述文档写入所述目标索引分片的副本分片的日志文件中。
13、在一个实施例中,所述复制模块,还用于将所述索引段发送至所述目标索引分片的副本分片所在的节点,以使所述目标索引分片的副本分片所在的节点,将所述索引段加入所述目标索引分片的副本分片。
14、在一个实施例中,所述复制模块,还用于根据所述索引段的文件大小,确定将所述索引段复制到所述目标索引分片的副本分片的方式,根据确定的方式,将所述索引段分发至所述目标索引分片的副本分片所在的节点。
15、在一个实施例中,所述复制模块,还用于当所述索引段的文件大小小于或等于预设阈值时,将所述索引段发送至所述目标索引分片的副本分片所在的节点;当所述索引段的文件大小大于所述预设阈值时,将所述索引段拆分为多个数据块,将拆分得到的多个数据块依次发送至所述目标索引分片的副本分片所在的节点,其中,每个数据块的大小小于所述预设阈值。
16、在一个实施例中,所述复制模块,还用于根据所述索引段中的多个小文件生成一个数据块,所述多个小文件的总文件大小小于或等于所述预设阈值;将所述索引段中的大文件拆分为多个数据块,所述大文件的文件大小大于所述预设阈值;将每个数据块依次发送至所述目标索引分片的副本分片所在的节点。
17、在一个实施例中,所述索引段生成模块,还用于从所述段缓存中,读取多个文档各自关联的检索数据;根据所述检索数据,生成一个索引段,所述索引段包括一组文件,所述一组文件用于查询所述多个文档中每个文档;将所述索引段刷新到所述目标索引分片的主分片的文件系统缓存中;当触发持久化指令时,将所述文件系统缓存中的至少一个索引段持久化至所述目标索引分片的主分片中。
18、在一个实施例中,所述装置还包括:
19、索引视图文件更新模块,用于更新关于所述目标索引分片的主分片的索引视图文件,更新的索引视图文件用于指示所有持久化至所述目标索引分片的主分片中的索引段;
20、索引视图文件复制模块,用于将所述更新的索引视图文件,发送至所述目标索引分片的副本分片所在的节点,以使所述目标索引分片的副本分片所在的节点,在所述更新的索引视图文件中包含复制的所述索引段的段标识时,将复制的所述索引段加入所述目标索引分片的副本分片,并将接收的所述更新的索引视图文件作为所述目标索引分片的副本分片的索引视图文件。
21、在一个实施例中,所述装置还包括:
22、合并模块,用于每当对持久化至所述目标索引分片的主分片中的多个索引段进行合并,得到合并索引段时,将所述合并索引段加入所述目标索引分片的主分片;从所述目标索引分片的主分片中删除所述多个索引段;
23、合并索引段复制模块,用于将所述合并索引段复制到所述目标索引分片的副本分片。
24、在一个实施例中,所述装置还包括:
25、索引视图文件更新模块,用于根据更新后的所述目标索引分片的主分片中的索引段,更新关于所述目标索引分片的主分片的索引视图文件;更新的索引视图文件用于指示持久化至所述目标索引分片的主分片中的有效索引段;
26、索引视图文件复制模块,用于将所述更新的索引视图文件,发送至所述目标索引分片的副本分片所在的节点,以使所述目标索引分片的副本分片所在的节点,将更新前的索引视图文件与所述更新后的本文档来自技高网...
【技术保护点】
1.一种索引处理方法,其特征在于,所述索引包括至少一个索引分片,每个索引分片包含主分片与副本分片,对应同一个索引分片的主分片与副本分片分布在不同的节点上,每个索引分片包括至少一个索引段,每个索引段是所述索引的最小可检索数据单元;所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述将所述检索数据写入所述主分片的段缓存中之后,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述将所述索引段复制到所述目标索引分片的副本分片,包括:
4.根据权利要求1所述的方法,其特征在于,所述将所述索引段复制到所述目标索引分片的副本分片,包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述索引段的文件大小,确定将所述索引段复制到所述目标索引分片的副本分片的方式,根据确定的方式,将所述索引段分发至所述目标索引分片的副本分片所在的节点,包括:
6.根据权利要求5所述的方法,其特征在于,所述将所述索引段拆分为多个数据块,将拆分得到的多个数据块依次发送至所述目标索引分片的副本分片所在的节点,包括:
7.根据
8.根据权利要求1所述的方法,其特征在于,在所述将所述一个索引段加入所述目标索引分片的主分片之后,所述方法还包括:
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
11.一种索引处理方法,其特征在于,所述索引包括至少一个索引分片,每个索引分片包含主分片与副本分片,对应同一个索引分片的主分片与副本分片分布在不同的节点上,每个索引分片包括至少一个索引段,每个索引段是所述索引的最小可检索数据单元;所述方法包括:
12.根据权利要求11所述的方法,其特征在于,所述接收目标索引分片的主分片所在的节点复制的索引段,包括:
13.根据权利要求12所述的方法,其特征在于,所述接收所述主分片所在的节点复制的索引视图文件,包括:
14.根据权利要求11所述的方法,其特征在于,所述方法还包括:
15.一种索引处理装置,其特征在于,所述索引包括至少一个索引分片,每个索引分片包含主分片与副本分片,对应同一个索引分片的主分片与副本分片分布在不同的节点上,每个索引分片包括至少一个索引段,每个索引段是所述索引的最小可检索数据单元;所述装置包括:
16.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至14中任一项所述的方法的步骤。
17.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至14中任一项所述的方法的步骤。
18.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至14中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种索引处理方法,其特征在于,所述索引包括至少一个索引分片,每个索引分片包含主分片与副本分片,对应同一个索引分片的主分片与副本分片分布在不同的节点上,每个索引分片包括至少一个索引段,每个索引段是所述索引的最小可检索数据单元;所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述将所述检索数据写入所述主分片的段缓存中之后,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述将所述索引段复制到所述目标索引分片的副本分片,包括:
4.根据权利要求1所述的方法,其特征在于,所述将所述索引段复制到所述目标索引分片的副本分片,包括:
5.根据权利要求4所述的方法,其特征在于,所述根据所述索引段的文件大小,确定将所述索引段复制到所述目标索引分片的副本分片的方式,根据确定的方式,将所述索引段分发至所述目标索引分片的副本分片所在的节点,包括:
6.根据权利要求5所述的方法,其特征在于,所述将所述索引段拆分为多个数据块,将拆分得到的多个数据块依次发送至所述目标索引分片的副本分片所在的节点,包括:
7.根据权利要求1所述的方法,其特征在于,所述读出所述段缓存中的检索数据以生成一个索引段,将所述一个索引段加入所述目标索引分片的主分片,包括:
8.根据权利要求1所述的方法,其特征在于,在所述将所述一个索引段加入所述目标索引分片的主分片之后,所述方法还包括:
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
10...
【专利技术属性】
技术研发人员:毕杰山,刘蕊,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。