首页> 中国专利> 一种猪的基因库数据检索方法及系统、存储介质

一种猪的基因库数据检索方法及系统、存储介质

摘要

本发明提供了一种猪的基因库数据检索方法及系统、存储介质,在满足预设条件时触发对猪的基因库查询记录的统计分析,得到查询请求对应的猪的基因库的热点信息,构建热点字段的索引树;根据热点联合字段中字段出现次数确定联合索引中字段的顺序,根据顺序构建B+树作为所述热点字段的索引树,当用户查询猪的基因库时,根据查询请求对应的SQL语句确定是否通过索引树查询,若是,则通过索引树查询,否则进行全表扫描查询。本发明能够在满足预设条件时自动构建基因库的索引,而且通过对热点信息的判断构建两种不同的索引树,提高查找索引的效率,进而提升了对猪的基因库的查询速度。

著录项

  • 公开/公告号CN114896458A

    专利类型发明专利

  • 公开/公告日2022-08-12

    原文格式PDF

  • 申请/专利权人 河南创源生物技术有限公司;

    申请/专利号CN202210520383.X

  • 申请日2022-05-12

  • 分类号G06F16/901(2019.01);G06F16/9032(2019.01);

  • 代理机构郑州意创知识产权代理事务所(特殊普通合伙) 41138;郑州意创知识产权代理事务所(特殊普通合伙) 41138;

  • 代理人张江森;张燕红

  • 地址 451162 河南省郑州市航空港区四港联动大道与省道S102交汇处西南方台湾科技园A区A2-4-402号

  • 入库时间 2023-06-19 16:22:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-08-30

    实质审查的生效 IPC(主分类):G06F16/901 专利申请号:202210520383X 申请日:20220512

    实质审查的生效

说明书

技术领域

本发明涉及数据库检索领域,尤其涉及猪的基因库数据检索方法、系统及存储介质。

背景技术

我国是世界主要猪肉消费国和猪肉生产国,根据联合国粮农组织发布的2020年统计年鉴,我国的生猪存栏量位居世界第一。猪的养殖离不开种猪的育种及繁育,根据农业部发布的《中国畜禽遗传资源志·猪志》,我国有地方品种104个,培育品种有18个,引进品种有6个。猪品种虽然多,但是由于很多品种的猪生长周期长,商业化的养殖场养殖的猪的大部分为引进品种,例如大白、杜洛克、长白等。我国的本地猪的养殖数量不断下降,有些品种处于濒危状态,作为宝贵的生物资源,本地猪在育种、选育中以及生物多样性中仍然具有十分重要的地位。

建立猪的基因库是保护地方品种一个关键的措施,现在的猪基因库只是将猪的组织样本或者精卵细胞等低温保存,用户缺乏对猪品种的直观感受,无法直接比较不同品种猪的区别,非常不方便用户或者研究人员的查阅。给用户或者研究人员很直观的显示,是提高猪的基因库应用的重要方面,例如在选育某一品种的猪时,只需要在猪的基因库系统即可查看不同品种的猪的相关信息,猪的相关信息不限于猪的品种、全基因序列以及基因样本的存放位置、该品种猪的视频等,甚至用户可以直接在网上下单,然后通过克隆等方式繁育用户选择的品种猪后,交付给用户。

在用户查询基因库的相关内容时,会有卡顿或者反应慢的情况,通过索引能够提高数据库查询速度,以往构建数据库的索引都是研发人员手工添加,在设置数据库时人为判断数据库可能被经常访问的字段,然后通过SQL语言(结构化查询语言,StructuredQuery Language)建立索引,例如以CREATE INDEX语句创建索引。但是人为判断存在很大的主观性,在数据库运行中无法自动调整索引,而且通过索引无法提高热点数据的检索速度,例如在某一段时间用户经常查询杜洛克品种猪的基因,在另外一段时间用户又经常查询本地土猪金华猪,如果构建的是B+tree索引树,就需要按照树的层级依次查找杜洛克和金华猪对应的索引。虽然能够将经常访问的数据添加到缓存中,通过缓存机制提高基因库查询效率,但是缓存大小有限,无法完全解决基因库查询速度慢的问题,而索引的建立是人工建立的,只有在增加、删除时,数据库引擎才会维护索引,仅仅依靠查询操作无法动态调整索引,现有的B+树索引效率不高。

发明内容

为了提高基因库查询效率,首先,本发明提供了一种猪的基因库数据检索方法,所述方法包括以下步骤:

S1,在满足预设条件时触发对猪的基因库查询记录的统计分析,得到查询请求对应的猪的基因库的热点信息,所述热点信息包括热点表、热点字段以及热点联合字段、所述热点字段的热点值;

S2,构建所述热点字段的索引树,所述索引树的根节点包括两部分,第一部分为所述热点值,第二部分为非热点值构建的B+树;根据所述热点联合字段中字段出现次数确定联合索引中字段的顺序,根据所述顺序构建B+树作为所述热点字段的索引树;

S3,当用户查询猪的基因库时,根据查询请求对应的SQL语句确定是否通过索引树查询,若是,则通过所述索引树查询,否则进行全表扫描查询。

优选地,所述预设条件为:

统计在第一预设时长内SQL查询语句的频率和执行时间的平均值,根据所述频率和所述平均值计算权重值,若权重值大于第一阈值且基因库服务器的负载小于第二阈值,则满足触发条件,否则,不满足触发条件;

所述根据所述频率和所述平均值计算权重值,具体为:根据公式

优选地,所述在满足预设条件时触发对猪的基因库查询记录的统计分析,得到查询请求对应的猪的基因库的热点信息,具体为:

获取在第二预设时长内查询记录中SQL语句,根据表名和字段名统计所述SQL语句中表名出现次数、字段出现次数、字段对应数值出现次数,并统计不同字段在一个SQL语句中出现的次数;

将表名出现次数最多的表作为热点表,热点表的字段出现次数与热点表所有字段出现次数的比值大于第三阈值的字段为热点字段,热点表的不同字段在一个SQL语句中出现的次数与所述热点表的SQL查询语句次数的比值大于第三阈值的字段为热点联合字段;若字段既是热点字段,又位于热点联合字段,则将字段作为热点联合字段的第一个字段;如果有多个热点字段同时又位于热点联合字段,则对所述多个热点字段排序,将排序最靠前的热点字段作为热点联合字段的第一个字段;所述热点联合字段至少包括两个字段。

优选地,所述根据所述热点联合字段中字段出现次数确定联合索引中字段的顺序,具体为:按照所述热点联合字段在所述热点表的查询中出现的次数由高到低排序,按照排序结果确定字段在联合索引中的位置。

优选地,所述通过所述索引树查询,具体为:

根据SQL语句的基因库的字段判断是否是联合索引查找,若是,则根据SQL语句的SQL语句的基因库的字段对应的值在所述索引树中查找;若否,则根据所述SQL语句的关键词以及字段的值确定优先从所述第一部分查找还是第二部分查找。

优选地,所述根据所述SQL语句的关键词以及字段的值确定优先从所述第一部分查找还是第二部分查找,具体为:

设置预设关键词,若所述SQL语句的关键词为预设关键词,则优先从所述第一部分查找;否则,优先从第二部分查找。

另外一方面,本发明提供了一种猪的基因库数据检索系统,所述系统包括以下模块:

热点信息统计模块,用于在满足预设条件时触发对猪的基因库查询记录的统计分析,得到查询请求对应的猪的基因库的热点信息,所述热点信息包括热点表、热点字段以及热点联合字段、所述热点字段的热点值;

索引树构建模块,用于构建所述热点字段的索引树,所述索引树的根节点包括两部分,第一部分为所述热点值,第二部分为非热点值构建的B+树;根据所述热点联合字段中字段出现次数确定联合索引中字段的顺序,根据所述顺序构建B+树作为所述热点字段的索引树;

基因库检索模块,用于当用户查询猪的基因库时,根据查询请求对应的SQL语句确定是否通过索引树查询,若是,则通过所述索引树查询,否则进行全表扫描查询。

优选地,所述预设条件为:

统计在第一预设时长内SQL查询语句的频率和执行时间的平均值,根据所述频率和所述平均值计算权重值,若权重值大于第一阈值且基因库服务器的负载小于第二阈值,则满足触发条件,否则,不满足触发条件;

所述根据所述频率和所述平均值计算权重值,具体为:根据公式

优选地,所述在满足预设条件时触发对猪的基因库查询记录的统计分析,得到查询请求对应的猪的基因库的热点信息,具体为:

获取在第二预设时长内查询记录中SQL语句,根据表名和字段名统计所述SQL语句中表名出现次数、字段出现次数、字段对应数值出现次数,并统计不同字段在一个SQL语句中出现的次数;

将表名出现次数最多的表作为热点表,热点表的字段出现次数与热点表所有字段出现次数的比值大于第三阈值的字段为热点字段,热点表的不同字段在一个SQL语句中出现的次数与所述热点表的SQL查询语句次数的比值大于第三阈值的字段为热点联合字段;若字段既是热点字段,又位于热点联合字段,则将字段作为热点联合字段的第一个字段;如果有多个热点字段同时又位于热点联合字段,则对所述多个热点字段排序,将排序最靠前的热点字段作为热点联合字段的第一个字段;所述热点联合字段至少包括两个字段。

优选地,所述根据所述热点联合字段中字段出现次数确定联合索引中字段的顺序,具体为:按照所述热点联合字段在所述热点表的查询中出现的次数由高到低排序,按照排序结果确定字段在联合索引中的位置。

优选地,所述通过所述索引树查询,具体为:

根据SQL语句的基因库的字段判断是否是联合索引查找,若是,则根据SQL语句的SQL语句的基因库的字段对应的值在所述索引树中查找;若否,则根据所述SQL语句的关键词以及字段的值确定优先从所述第一部分查找还是第二部分查找。

优选地,所述根据所述SQL语句的关键词以及字段的值确定优先从所述第一部分查找还是第二部分查找,具体为:

设置预设关键词,若所述SQL语句的关键词为预设关键词,则优先从所述第一部分查找;否则,优先从第二部分查找。

最后,本发明还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现如上所述的方法。

本发明针对在对猪的基因库查询时速度慢的问题,提出了一种猪的基因库数据检索方法、系统及存储介质,设置预设条件,在满足预设条件时,找到基因库查询语句相关的热点信息,然后根据热点信息构建两种索引树,具体地,对于热点字段构建一种索引树,对于热点联合字段构建另外一种索引树,其中,热点字段对应的索引树将热点字段对应的热点值放在索引树的根节点,将非热点值放在根节点的第二部分,提高了热点字段对应热点值的检索速度;热点联合字段的索引树根据热点联合字段在查询语句中出现频率进行排序,然后构建热点联合字段对应的索引树,提高了热点联合字段的检索速度。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为实施例一的流程图;

图2为数据表结构示意图;

图3为MySQL的InnoDB引擎采用的B+树;

图4为根据热点字段建立的B+树;

图5为本发明的模块结构图。

具体实施方式

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

具体实施例一

本发明提供了一种猪的基因库数据检索方法,如图1所示,所述方法包括以下步骤:

S1,在满足预设条件时触发对猪的基因库查询记录的统计分析,得到查询请求对应的猪的基因库的热点信息,所述热点信息包括热点表、热点字段以及热点联合字段、所述热点字段的热点值;

用户查询猪的品种及相关基因信息有时间相关性,例如某一段时间对杜洛克品种的猪关注的人比较多,而另外一段时间对本地土猪金华猪关注的比较多;此外,还存在某一段时间对猪的抗病性比较关注,而另外一段时间很多用户查询廋肉率的情况。这些关注信息的改变,用户查询的基因库的字段也会有所不同,当基因库比较小或者字段比较少时,查询速度并不会明显降低,但是随着基因库数据量的增加以及字段的增加,如果对所有字段都建立索引,索引本身会占用很多空间,而且对索引的维护也很麻烦。

本发明只要在满足预设条件时才会触发对基因库查询进行统计分析,以及创建索引的操作,而且是对热点字段和热点联合字段创建索引,避免了人的主观影响,而且动态建立索引,减少了对索引的数量。

用户在查询猪的基因相关信息时,后台的程序会调用SQL语句查询基因库,基因库包括但不限于猪的品种、基因概要、猪的全序列基因的位置、冷冻组织、猪的族谱、克隆机构位置、猪的特点、母体情况等,上述信息可以位于同一个表,也可以位于不同的表,本发明对此不作具体限定,位于同一个表时,表的结构如图2所示。基因库的查询语句反映了最近一段时间用户比较关注的内容,未来一段时间,用户查询这些信息的可能性很大。通过统计分析,可以得到最近一段时间经常查询的表和表的字段信息,依此得到热点表、热点字段和热点联合字段、热点字段的热点值,其中热点联合字段是根据多个字段查询一条记录,例如,select*from piggene where pig_breed="金华猪"and clone_region="河南",则字段“pig_breed”、“clone_region”则为联合字段,也即联合字段至少包括同一个数据库表的两个字段。

S2,构建所述热点字段的索引树,所述索引树的根节点包括两部分,第一部分为所述热点值,第二部分为非热点值构建的B+树;根据所述热点联合字段中字段出现次数确定联合索引中字段的顺序,根据所述顺序构建B+树作为所述热点字段的索引树;

MySQL的InnoDB引擎采用的B+树如图3所示,在本发明中如无特殊说明,B+树是指MySQL的InnoDB引擎采用的B+树。

本发明的索引树不同于MySQL的InnoDB引擎采用的B+树,具体地,本发明采用对热点字段采用改进的B+树,假如杜洛克猪是热点字段对应的热点值,则构建的检索树如图4所示,Yorkshire位于根节点的第一部分,其他非热点值位于根节点的第二部分,第二部分为一个B+树。

联合索引又称为聚合索引,联合索引遵从最左前缀匹配原则,最左前缀匹配原则是指只有在查询条件中使用了创建索引时的第一个字段,联合索引才会被使用,否则会全表扫描查询。为了重复利用联合索引,避免由于无法满足最左前缀匹配原则导致全表扫描查询,本发明对热点联合字段的字段进行排序,然后按照排序顺序创建热点联合索引树。

S3,当用户查询猪的基因库时,根据查询请求对应的SQL语句确定是否通过索引树查询,若是,则通过所述索引树查询,否则进行全表扫描查询。

在一个实施例中,所述预设条件为:统计在第一预设时长内SQL查询语句的频率和执行时间的平均值,根据所述频率和所述平均值计算权重值,若权重值大于第一阈值且基因库服务器的负载小于第二阈值,则满足触发条件,否则,不满足触发条件;

所述根据所述频率和所述平均值计算权重值,具体为:根据公式

当创建过多的索引时,会占用存储空间,例如一个表有1万条记录,仅利用主键对所有记录建立索引都会有1万条索引项,表的记录更多的情况下,索引占用的空间也是非常可观的;而且维护索引非常麻烦、耗时。在一个具体实施例中,S1还包括:在满足预设条件时,删除除主键的索引外热点表的所有其他索引。

在一个实施例中,所述在满足预设条件时触发对猪的基因库查询记录的统计分析,得到查询请求对应的猪的基因库的热点信息,具体为:

获取在第二预设时长内查询记录中SQL语句,根据表名和字段名统计所述SQL语句中表名出现次数、字段出现次数、字段对应数值出现次数,并统计不同字段在一个SQL语句中出现的次数;

将表名出现次数最多的表作为热点表,热点表的字段出现次数与热点表所有字段出现次数的比值大于第三阈值的字段为热点字段,热点表的不同字段在一个SQL语句中出现的次数与所述热点表的SQL查询语句次数的比值大于第三阈值的字段为热点联合字段;若字段既是热点字段,又位于热点联合字段,则将字段作为热点联合字段的第一个字段;如果有多个热点字段同时又位于热点联合字段,则对所述多个热点字段排序,将排序最靠前的热点字段作为热点联合字段的第一个字段;所述热点联合字段至少包括两个字段。

所述字段是指数据库表的字段或者和数据表的字段对应的字段。所述不同字段在一个SQL语句中是指一个数据库表的至少两个字段同时在一个SQL语句中,例如select*from piggene where pig_breed="***"and clone_region="***",“pig_breed”和“clone_region”字段在同一个SQL语句中。在一个具体实施例中,第三阈值为0.3-0.5之间的任意数。

由于联合索引遵守最左前缀匹配原则,如果SQL查询语句仅仅用生成联合索引的第一个字段检索基因库,这种情况下,可以利用联合索引检索,无需单独再生成所述第一个字段的索引,仅仅作为联合索引的第一个字段即可。

为了减少联合索引最左前缀匹配原则导致无法利用联合索引的情况,在一个实施例中,所述根据所述热点联合字段中字段出现次数确定联合索引中字段的顺序,具体为:按照所述热点联合字段在所述热点表的查询中出现的次数由高到低排序,按照排序结果确定字段在联合索引中的位置。

例如联合索引的字段为:,在热点表piggene的查询中,通过select*from piggene where pig_breed="***"查询了40次;

通过select*from piggene where clone_region="***"查询了90次;

通过select*from piggene where pig_breed="***"and clone_region="***"查询了50次。

则热点表piggene的字段“pig_breed”出现了90次,“clone_region”出现了140次,对“pig_breed”和“clone_region”排序的结果为:,然后根据建立热门联合字段的联合索引。

在一个实施例中,所述通过所述索引树查询,具体为:

根据SQL语句的基因库的字段判断是否是联合索引查找,若是,则根据SQL语句的SQL语句的基因库的字段对应的值在所述索引树中查找;若否,则根据所述SQL语句的关键词以及字段的值确定优先从所述第一部分查找还是第二部分查找。

在一个实施例中,所述根据所述SQL语句的关键词以及字段的值确定优先从所述第一部分查找还是第二部分查找,具体为:

设置预设关键词,若所述SQL语句的关键词为预设关键词,则优先从所述第一部分查找;否则,优先从第二部分查找。预设关键词包括但不限于“=”。

另外一方面,本发明提供了一种猪的基因库数据检索系统,如图5所示,所述系统包括以下模块:

热点信息统计模块,用于在满足预设条件时触发对猪的基因库查询记录的统计分析,得到查询请求对应的猪的基因库的热点信息,所述热点信息包括热点表、热点字段以及热点联合字段、所述热点字段的热点值;

索引树构建模块,用于构建所述热点字段的索引树,所述索引树的根节点包括两部分,第一部分为所述热点值,第二部分为非热点值构建的B+树;根据所述热点联合字段中字段出现次数确定联合索引中字段的顺序,根据所述顺序构建B+树作为所述热点字段的索引树;

基因库检索模块,用于当用户查询猪的基因库时,根据查询请求对应的SQL语句确定是否通过索引树查询,若是,则通过所述索引树查询,否则进行全表扫描查询。

进一步地,所述预设条件为:

统计在第一预设时长内SQL查询语句的频率和执行时间的平均值,根据所述频率和所述平均值计算权重值,若权重值大于第一阈值且基因库服务器的负载小于第二阈值,则满足触发条件,否则,不满足触发条件;

所述根据所述频率和所述平均值计算权重值,具体为:根据公式

进一步地,所述在满足预设条件时触发对猪的基因库查询记录的统计分析,得到查询请求对应的猪的基因库的热点信息,具体为:

获取在第二预设时长内查询记录中SQL语句,根据表名和字段名统计所述SQL语句中表名出现次数、字段出现次数、字段对应数值出现次数,并统计不同字段在一个SQL语句中出现的次数;

将表名出现次数最多的表作为热点表,热点表的字段出现次数与热点表所有字段出现次数的比值大于第三阈值的字段为热点字段,热点表的不同字段在一个SQL语句中出现的次数与所述热点表的SQL查询语句次数的比值大于第三阈值的字段为热点联合字段;若字段既是热点字段,又位于热点联合字段,则将字段作为热点联合字段的第一个字段;如果有多个热点字段同时又位于热点联合字段,则对所述多个热点字段排序,将排序最靠前的热点字段作为热点联合字段的第一个字段;所述热点联合字段至少包括两个字段。

进一步地,所述根据所述热点联合字段中字段出现次数确定联合索引中字段的顺序,具体为:按照所述热点联合字段在所述热点表的查询中出现的次数由高到低排序,按照排序结果确定字段在联合索引中的位置。

进一步地,所述通过所述索引树查询,具体为:

根据SQL语句的基因库的字段判断是否是联合索引查找,若是,则根据SQL语句的SQL语句的基因库的字段对应的值在所述索引树中查找;若否,则根据所述SQL语句的关键词以及字段的值确定优先从所述第一部分查找还是第二部分查找。

进一步地,所述根据所述SQL语句的关键词以及字段的值确定优先从所述第一部分查找还是第二部分查找,具体为:

设置预设关键词,若所述SQL语句的关键词为预设关键词,则优先从所述第一部分查找;否则,优先从第二部分查找。

具体实施例三

本发明提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现如具体实施例一所述的方法。

以上所描述的装置实施例仅仅是示意性的,可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号