面向全文检索的分级存储方法及装置与流程

文档序号:17926509发布日期:2019-06-15 00:27阅读:190来源:国知局
面向全文检索的分级存储方法及装置与流程

本发明涉及大数据处理nosql领域,尤其涉及一种面向全文检索的分级存储方法及装置。



背景技术:

随着互联网技术的不断发展和信息化程度的不断提高,数据量迅速增长,支持海量数据存储及应用也随之蓬勃发展。其中,在面向文档检索的领域,开源项目elasticsearch获得了广泛的关注与应用。elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理pb级别的数据。在互联网,企业应用中,倒排检索应用范围非常广,如日志监控,网页搜索,热点搜索,实体特征标签检索,这些需求对应到全文检索引擎elasticsearch就是由各类索引提供服务,因硬件性能有限,当数据量级,索引个数较大时,通常产生搜索性能下降的结果。因此,对硬件资源的合理利用是业务需要重点考虑的问题。

在很多业务场景,可能存在类似如下需求:

1)近期数据检索频率较高,旧数据检索频率低;

2)a类业务数据检索频率高,b类业务检索频率低;

对于类似的需求,一般可以采取的措施如数据双写,近期数据写入单独集群,定期迁移到旧数据集群;或者将业务拆分成多个集群,对性能要求高的业务使用更多的资源,更高速的资源;以此达到更快的检索速度。由此带来了新的问题如资源利用率低,资源浪费,需要额外的人工维护,使用不便等。



技术实现要素:

本发明实施例提供一种面向全文检索的分级存储方法及装置,用以解决现有技术中的上述问题。

本发明实施例提供一种面向全文检索的分级存储方法,包括:

获取用户按照规定的语法输入创建或者修改全文检索相关的sql语句,创建全文检索表,所述全文检索表中包含有分级存储策略的元数据,并将所述全文检索表持久化到zookeeper中;

配置elasticsearch集群中一部分节点使用ssd盘,另一部分节点使用sata盘,并在每个节点上安装自定义的elasticsearch插件;

数据加载工具通过elasticsearch集群的调用接口api将文档数据加载到elasticsearch集群中,通过所述elasticsearch插件对请求进行过滤,并使用预先存储的全文检索表中的元数据进行索引创建;

通过所述elasticsearch插件运行监听策略,监听zookeeper中表的元数据信息的变化,并应用分级存储策略,执行定时回滚策略,将回滚任务下发给elasticsearch集群。

优选地,获取用户按照规定的语法输入创建或者修改全文检索相关的sql语句,创建全文检索表,所述全文检索表中包含有分级存储策略的元数据,并将所述全文检索表持久化到zookeeper中具体包括:

在sqlcli中设置或者修改分级存储策略,并将分级存储策略的元数据持久化到zookeeper中。

优选地,数据加载工具通过elasticsearch集群的调用接口api将文档数据加载到elasticsearch集群中,通过所述elasticsearch插件对请求进行过滤,并使用全文检索表中的元数据来进行索引创建具体包括:

步骤1,通过所述elasticsearch插件拦截加载程序的请求,对于入数据不做任何处理,拦截创建索引的请求;

步骤2,通过所述elasticsearch插件对是否创建索引的请求进行判断,如果判断为是,执行步骤3,否则,不创建索引;

步骤3,通过所述elasticsearch插件启动对元数据进行监听的服务;

步骤4,通过所述elasticsearch插件判断创建该索引所对应的表是否有分级存储策略;如果创建该索引所对应的表有分级存储策略,那么在创建索引的请求中加上指定的标签,继续执行请求过程;如果没有,则确定新索引不存在分级存储策略。

优选地,通过所述elasticsearch插件执行定时回滚策略,将回滚任务下发给elasticsearch集群具体包括:

步骤1,通过所述elasticsearch插件启动服务,对zookeeper进行元数据的监听;

步骤2,通过所述服务获取zookeeper中的表,遍历各个表,读取分级存储策略;

步骤3,在获取的数据表列表中选择一张表,判断该表是否是周期型存储表,如果判断为是,则确定该表是周期型存储表,获取该表的各个日期的分区索引,判断是否满足分级策略,对不符合分级策略的日期分区进行迁移,遍历完成后,服务进入睡眠时间,等待下一次执行。

优选地,所述方法进一步包括:

将索引的标签设置为数个机架,将索引分配到相应的数个机架中。

本发明实施例还提供一种面向全文检索的分级存储装置,包括:

sqlcli模块,用于为用户提供检索sql语句和创建全文检索表;

数据库,用于存放全文检索表的元数据,其中,所述元数据包括分级存储策略;

数据加载模块,用于通过使用elasticsearchapi进行文档数据加载;

定制elasticsearch集群,用于进行全文数据存储和检索,其中,所述定制的elasticsearch集群整体上有ssd和sata两种资源,少数节点直接使用ssd资源,ssd资源用于存储近期的或者检索频率高的数据,所有节点安装有自定义的elasticsearch插件,通过该elasticsearch插件进行监听策略、拦截建索引、应用策略、定时回滚。

优选地,sqlcli模块具体用于:

设置或者修改分级存储策略,并将分级存储策略的元数据持久化到zookeeper中。

优选地,所述elasticsearch插件具体用于:

拦截加载程序的请求,对于入数据不做任何处理,拦截创建索引的请求;

对是否创建索引的请求进行判断,如果判断为是,启动对元数据进行监听的服务,否则,不创建索引;

判断创建该索引所对应的表是否有分级存储策略;如果创建该索引所对应的表有分级存储策略,那么在创建索引的请求中加上指定的标签,继续执行请求过程;如果没有,则确定新索引不存在分级存储策略。

优选地,所述elasticsearch插件具体用于:

启动服务,对zookeeper进行元数据的监听;

通过所述服务获取zookeeper中的表,遍历各个表,读取分级存储策略;

在获取的数据表列表中选择一张表,判断该表是否是周期型存储表,如果判断为是,则确定该表是周期型存储表,获取该表的各个日期的分区索引,判断是否满足分级策略,对不符合分级策略的日期分区进行迁移,遍历完成后,服务进入睡眠时间,等待下一次执行。

优选地,所述elasticsearch插件进一步用于:

将索引的标签设置为数个机架,将索引分配到相应的数个机架中。

采用本发明实施例,可以有效的对elasticsearch全文检索集群进行索引存储的管理与分级存储控制,达到优化检索性能,提升综合查询速度的效果。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1是本发明实施例中elasticsearch分级存储实现框架示意图;

图2是本发明实施例中分级策略元数据的设置和监听流程图;

图3是本发明实施例中创建索引时分级策略的作用流程图;

图4是本发明实施例中周期型的分级策略定时自动回滚流程图。

具体实施方式

本发明实施例提供一种针对全文检索场景的磁盘分级存储的方法与具体实现。包括分级存储策略的格式定义与元数据存储,加载引擎的自动计算分区与按分级策略映射的方法,分级存储的控制实现方法。所谓分级存储是指同一集群中对不同数据使用不同性能的存储资源如sata磁盘,ssd磁盘。对于一个大集群,我们可以根据不同数据的检索频率和性能需求制定存储策略,放到不同的磁盘存储,同时实现了自动管理,自动迁移,使集群资源得到合理的利用,具有广泛的应用场景。随着信息化水平的不断提高,大数据应用越来越广泛。分布式全文检索引擎elasticsearch在很多搜索场景存在广泛使用,其处理效率直接影响了业务应用与用户体验。本发明的目的就是提供一种面向elasticsearch全文检索的分级存储方法与实现,对用户提供透明简单的使用方式,能自动化控制索引的存储策略与管理,提升elasticsearch集群的综合检索性能。使用本方法可以有效的对elasticsearch全文检索集群进行索引存储的管理与分级存储控制,达到优化检索性能,提升综合查询速度的效果。

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明核心点是存在不同性能的存储资源(如ssd,sata磁盘)的elasticsearch集群中,为不同的索引制定自动化的分级存储管理策略。

为实现上述目的,本发明的第一部分,首先给出了总体框架图,对涉及的主要组件一一说明。图1给出了分级存储实现框架的示意图。该架构的组件依次为:为用户提供检索sql语句和创建全文检索表的用户sqlcli、存放全文检索表元数据(包含分级存储策略等)的库、通过使用elasticsearchapi进行文档数据加载的工具、用于进行全文数据存储和检索的定制elasticsearch集群。定制的elasticsearch集群整体上有ssd和sata两种资源,少数节点直接使用ssd资源,用于存储近期的或者检索频率高的数据,同时所有节点都安装了开发的自定义的elasticsearch插件。该自定义插件包括了监听策略、拦截建索引、应用策略、定时回滚等基本功能。通过上述的组件实现了elasticsearch的索引的自动化存储与分级管理。

在这一实现实例中,具体架构如下:

用户按照规定的语法输入创建或者修改全文检索相关的sql语句,其中包含了分级存储策略的元数据信息,如果sql语句正确,结果将会持久化到数据库中。在elasticsearch集群中部分节点使用ssd盘,部分使用sata盘,每个节点都安装有自定义的elasticsearch插件。数据加载工具使用elasticsearchapi将文档数据加载到集群中,该加载工具会使用全文检索表中的元数据来进行索引创建,请求会被插件过滤。该插件会运行监听策略,监听zookeeper中表的元数据的变化,并应用策略。同时能执行定时回滚策略,将回滚任务下发给集群。

本发明的第二部分,给出了分级策略元数据的设置和监听流程。该部分需要使用规定的全文检索的语法,定义表的元数据,其中包含了分级存储管理策略。如果语法正确,该表将会被持久化,用于后续的分级存储策略的执行。

图2给出了分级策略元数据的设置与监听流程。

在这一实现实例中,具体步骤如下:

步骤201:在sqlcli中设置或者修改分级策略。

步骤202:将涉及到分级策略的元数据持久化到zookeeper中。

步骤203:elasticsearch节点上的自定义插件会监听zookeeper,获取分级策略。

本发明的第三部分,给出了创建索引时分级策略的作用。分级策略实际上是使用标签功能进行分级存储。集群中不同的资源可以使用不同的划分,适应不同的业务场景,以达到高效使用资源的目的,例如可以根据机架、磁盘类型、机器性能、内存大小等来进行划分。创建索引时将索引分配到指定的资源上便于后续进行自动化管理,保证该索引能正常加载数据,检索期间能使用到最优的资源。这个部分是比较重要的,是元数据在实际数据之上的体现,热数据将会存储在这些索引中,以适应不同的业务场景。

图3给出了创建索引时分级策略的作用流程。

在这一实现实例中,具体步骤如下:

步骤301:加载程序的请求被插件拦截到,对于入数据则不做任何处理,拦截创建索引的请求。

步骤302:插件内部对创建索引的请求进行判断

步骤303:插件内部启动对元数据进行监听的服务

步骤304:判断创建该索引所对应的表是否有分级存储策略

步骤305:如果创建该索引所对应的表有分级存储策略,那么在创建索引的请求中加上指定的标签

步骤306:步骤302判断为否,即不创建索引,步骤304判断为否,即新索引不存在分级存储策略,或者步骤305完成,即对指定索引添加完标签后,继续执行请求过程。

本发明的第四部分,给出了周期型的分级策略定时自动回滚流程。例如对于某业务,大部分查询都只会使用最近7天的数据,那么这7天的数据就可以使用ssd盘节点存储,7天之前的数据就会存入sata盘节点。每过一天,就会有数据过期,系统会定时地将过期数据移动到sata盘节点存储,这就是周期型的定时自动回滚。部分会定时地扫描各个表,读取其中的元数据。对于其中属于周期型的存储表,会获取属于该表的所有索引,对于这些索引来说,如果不满足该表的分级策略,那么就会将该数据归纳为冷数据,存放到分级策略中规定该存放冷数据的地方,通常这些地方的磁盘性能会略低。这样能够保证较旧或者查询频率低的数据使用性能较低的资源,将性能高的资源提供给热数据使用。这个部分是非常重要的,通过定期执行存储策略来将某些数据转储,合理地利用了集群的资源。同时,不同的业务也可以分配不同的存储资源,便于管理。

图4给出了周期型的分级策略定时自动回滚流程。

在这一实现实例中,具体步骤如下:

步骤401:插件启动服务,对zookeeper进行元数据的监听。

步骤402:服务获取表,遍历各个表,读取分级存储策略。

步骤403:在获取的数据表列表中选择一张表,判断该表是否是周期型存储表。

步骤404:若403判断为是,即该表是周期型存储表,获取该表的各个日期的分区索引,判断是否满足分级策略。

步骤405:对不符合分级策略的日期分区进行迁移

步骤406:遍历完成后,服务进入睡眠时间,等待下一次执行。

本发明的第五部分,给出了使用标签进行分级存储管理的基本原理介绍。标签实际上是不同资源的划分方式。例如,同一个集群里面,可能有不同的机器属于不同的机架,在海量数据的检索中,io是一个不可忽视的瓶颈,通常跨机架访问会影响查询性能。所以将一个机架内的所有节点都统一划分成一个标签就很有必要了。这样,我们能将索引的标签设置为数个机架,这样,这些索引将会被分配到这数个机架中,减少检索时的网络开销。

综上所述,本发明实施例提出了一种自动化进行索引分级管理实现方案,该方案能够合理地利用集群的计算资源和io资源等,优化资源分配;实现冷热数据分离,便于数据的管理;自动化进行索引管理,能够适应不同的业务场景,有效提高了索引管理效率,具有很强的实用性。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1