一种数据索引的管理方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据索引的管理方法及装置。
背景技术
随着计算机技术的发展,需要实时处理的数据量剧增,为了提高数据查询和计算的效率,对于海量数据主要采用建立索引的方式来优化查询和访问的机制。而目前创建索引的方式主要有两种,其一是通过分布式应用创建索引;其二是依赖hadoop平台,基于分布式方案自身的的hash分片规则,通过map-reduce任务创建索引。
但是,采用目前的方案在创建大量数据的索引时,所需的计算资源与数据量呈正相关,且创建索引所需的时间比较长,尤其是在对索引数据进行加工合并时,数据库中的数据需要经过多次通信中转,才能完成创建过程,且数据库的集群规模越大则通信中转的次数越多,而在涉及大数据的行业中,数据库的集群规模不断扩充已成必然趋势,因此通常会在前期准备过程中分配很多硬件资源以供索引创建流程占用,这就导致了创建索引的过程占用计算资源较多且耗时长,系统效率较低。
发明内容
本发明的实施例提供一种数据索引的管理方法及装置,能够减少创建索引过程中访问各集群节点获取数据的过程,提高索引创建速度。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明的实施例提供的方法,包括:
从数据源抽取原始数据,并将所述原始数据推送至数据仓库工具列表;
根据预设的分片规则,将所述数据仓库工具列表中的数据分解成指定数量的数据片,并将对应了相同标识信息的数据分配至同一数据片中;
针对每一个数据片分别建立索引创建任务,并将各数据片导入对应的索引分片。
结合第一方面,在第一方面的第一种可能的实现方式中,所述从数据源抽取原始数据包括:
建立抽取任务,所建立的抽取任务对应所述数据源中的业务数据,所述业务数据包括至少两个表数据;
针对每一个表数据配置对应的抽取任务,并通过hadoop平台并发执行所配置的抽取任务。
结合第一方面,在第一方面的第二种可能的实现方式中,所述根据预设的分片规则,将所述数据仓库工具列表中的数据分解成指定数量的数据片,包括:
从所述数据源获取至少两个业务字段,所述业务字段包括供应商编码;
确定对应不同业务字段的数据,并将各业务字段对应的数据分配至业务字段对应的数据片。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述将各业务字段对应的数据分配至业务字段对应的数据片包括:
确定对应同一个业务字段的数据的数据类型;
将不同类型的数据分配至不同的数据片。
结合第一方面的第二种可能的实现方式,在第四种可能的实现方式中,所述针对每一个数据片分别建立索引创建任务,并将各数据片导入对应的索引分片,包括:
针对对应了同一个业务字段的各数据片,通过所述hadoop平台分别建立索引创建任务;
将对应了同一个业务字段的各数据片,导入对应了同一个业务字段的索引分片。
结合第一方面,在第一方面的第五种可能的实现方式中,还包括:
将导入了同一个索引分片的数据片,存储至相同的集群节点。
结合第一方面或第一方面的第一至五种可能的实现方式,在第六种可能的实现方式中,还包括:
接收用户设备发送的搜索请求,并确定所述搜索请求指向的业务字段;
根据所述搜索请求指向的业务字段查询得到所述搜索请求指向的索引分片;
根据查询得到的索引分片生成搜索结果并向所述用户设备发送。
第二方面,本发明的实施例提供的管理装置,包括:
数据提取模块,用于从数据源抽取原始数据,并将所述原始数据推送至数据仓库工具列表;
预处理模块,用于根据预设的分片规则,将所述数据仓库工具列表中的数据分解成指定数量的数据片,并将对应了相同标识信息的数据分配至同一数据片中;
索引创建模块,用于针对每一个数据片分别建立索引创建任务,并将各数据片导入对应的索引分片。
结合第二方面,在第二方面的第一种可能的实现方式中,所述数据提取模块,具体用于建立抽取任务,所建立的抽取任务对应所述数据源中的业务数据,所述业务数据包括至少两个表数据;并针对每一个表数据配置对应的抽取任务,并通过hadoop平台并发执行所配置的抽取任务;
所述预处理模块,具体用于从所述数据源获取至少两个业务字段,所述业务字段包括供应商编码;并确定对应不同业务字段的数据,并确定对应同一个业务字段的数据的数据类型,将不同类型的数据分配至不同的数据片;
所述索引创建模块,具体用于针对对应了同一个业务字段的各数据片,通过所述hadoop平台分别建立索引创建任务;并将对应了同一个业务字段的各数据片,导入对应了同一个业务字段的索引分片。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
查询模块,用于接收用户设备发送的搜索请求,并确定所述搜索请求指向的业务字段;并根据所述搜索请求指向的业务字段查询得到所述搜索请求指向的索引分片;再根据查询得到的索引分片生成搜索结果并向所述用户设备发送。
本发明实施例提供的数据索引的管理方法及装置,通过运算设备一次性从数据源头抽取完整的原始数据到hive,从而减少数据加工时多次与数据源交互次数,并且确定对应不同业务字段的数据,并将各业务字段对应的数据分配至业务字段对应的数据片,从而在创建索引时,可以直接基于数据片创建索引。相对于现有技术中基于分布式方案自身的hash分片规则,数据随机分配到每个索引分片,再从每个分片查询数据然后合并处理的方案,减少了创建索引过程中访问各集群节点获取数据的过程,提高索引创建速度,并且节约了通信接口资源,从而解决了创建索引的过程占用计算资源较多且耗时长、系统效率较低的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的系统架构示意图;
图2为本发明实施例提供的数据索引的管理方法的流程示意图;
图3为本发明实施例提供的一种具体实例的示意图;
图4为、图5为本发明实施例提供的数据索引的管理装置的结构示意图。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。下文中将详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
本实施例所揭示的数据索引的管理方法流程,可以由作为执行主体的运算设备,该运算设备可以设置在如图1所示的系统中,组成该系统的设备具体可以包括:用户设备、数据库系统和运算设备。
其中,运算设备具体可以采用服务器、工作站、超级计算机等设备;用户设备具体可以是个人电脑、移动终端等终端设备。数据库系统作为数据源的硬件载体,用于存储原始数据,数据库系统具体可以是一种由多个服务器设备和存储设备等硬件设备组成的设备集群,其中的集群节点可以理解为设备集群中的一台硬件设备,或者多个集群节点可以集成在同一个硬件设备中。
本实施例提供一种数据索引的管理方法,如图2所示,包括:
S1、从数据源抽取原始数据,并将所述原始数据推送至数据仓库工具列表。
其中,数据仓库工具列表即hive列表,是一种底层封装了Hadoop(一种由Apache基金会所开发的能够对大量数据进行分布式处理的软件框架)的数据仓库处理工具,使用类SQL((Structured Query Language,结构化查询语言)的HiveQL语言实现数据查询,其中,所有Hive的数据都存储在Hadoop兼容的文件系统(例如:Amazon S3、HDFS等)中。在本实施例中,数据源可以理解为用于管理原始数据的数据库、文件等,原始数据可以是业务数据。
在本实施例中,可以通过运算设备一次性从数据源头抽取完整的原始数据到hive,从而减少数据加工时多次与数据源交互次数,例如:完整的原始数据包括指定时间周期内的所有业务数据,比如:包括了指定时间周期内的供应商的订单数据、物流数据、经营数据、业务告警数据、评价数据等业务数据。在业务系统运行时,生成业务数据并存储至数据库系统中,需要说明的是,业务系统与数据库系统可以是两个不同的系统,也可以是集成在同一个设备集群中的系统,例如:在线购物平台的后端系统往往同时兼具业务系统与数据库系统的功能。
S2、根据预设的分片规则,将所述数据仓库工具列表中的数据分解成指定数量的数据片,并将对应了相同标识信息的数据分配至同一数据片中。
其中,自定义分片规则,按照一定的业务字段或者规则对数据划分,拆解分成N份数据片,每份数据片对应一个索引分片。在本实施例中,所述根据预设的分片规则,将所述数据仓库工具列表中的数据分解成指定数量的数据片,具体包括:从所述数据源获取至少两个业务字段,所述业务字段包括供应商编码。确定对应不同业务字段的数据,并将各业务字段对应的数据分配至业务字段对应的数据片。
例如:如图3所示的,将通过hive提取的数据重新组合和分配,以供应商编码区间为分片规则,分解成N份数据片,将标记了不同供应商编码的数据分别到不同的数据片,一个数据片中所分配的数据具有相同的供应商编码,即数据片对应一个供应商编码,从而在创建索引时,可以直接基于数据片创建索引,减少了创建索引过程中访问各集群节点获取数据的过程,提高索引创建速度,并且节约了通信接口资源。
S3、针对每一个数据片分别建立索引创建任务,并将各数据片导入对应的索引分片。
在本实施例中,可以通过hadoop平台多任务高并发抽取数据,从而提高数据抽取效率。具体的,所述从数据源抽取原始数据包括:
建立抽取任务,所建立的抽取任务对应所述数据源中的业务数据,所述业务数据包括至少两个表数据。并针对每一个表数据配置对应的抽取任务,并通过hadoop平台并发执行所配置的抽取任务。例如:如图3所示的,包括多个表的业务数据,且表数据为业务数据实体的独立属性,其中,每个表数据可以对应一个抽取任务,以便通过每个抽取任务抽取单个表数据。
本发明实施例提供的数据索引的管理方法,通过运算设备一次性从数据源头抽取完整的原始数据到h i ve,从而减少数据加工时多次与数据源交互次数,并且确定对应不同业务字段的数据,并将各业务字段对应的数据分配至业务字段对应的数据片,从而在创建索引时,可以直接基于数据片创建索引。相对于现有技术中基于分布式方案自身的hash分片规则,数据随机分配到每个索引分片,再从每个分片查询数据然后合并处理的方案,减少了创建索引过程中访问各集群节点获取数据的过程,提高索引创建速度,并且节约了通信接口资源,从而解决了创建索引的过程占用计算资源较多且耗时长、系统效率较低的问题。
并且,本实施例中还可以通过hadoop平台多任务高并发抽取数据,从而提高数据抽取效率。并进一步的将将导入了同一个索引分片的数据片,存储至相同的集群节点。使得通过索引分片提取相应的数据片时,仅访问一个集群节点即可完成数据读取,从而进一步减少了集群节点之间的通信过程,提高了查询索引的反应速度。
在本实施例中,将各业务字段对应的数据分配至业务字段对应的数据片包括:确定对应同一个业务字段的数据的数据类型。并将不同类型的数据分配至不同的数据片。
具体的,运算设备针对对应了同一个业务字段的各数据片,可以通过所述hadoop平台分别建立索引创建任务。并将对应了同一个业务字段的各数据片,通过Sqoop(一种开源的工具,主要用于在Hadoop(Hive)与传统的数据库系统间进行数据的传递)导入对应了同一个业务字段的数据片。
在本实施例中,对于不同类型的业务数据,比如文件夹数据、资质图片信息和图片数据等,可以采用不同的业务表进行处理,比如文件夹信息表,资质图片表、图片信息表等。并采用基于hadoop的分布式任务,针对每一个数据片分别建立索引创建任务,并行处理不同类型的业务数据的数据片,并在处理完成后最终归于同一个索引分片,其中,每份数据片对应搜索集群的一个索引分片,搜索集群的一个索引分片可以对应其中多份数据片,进而提高创建索引的速度。
在本实施例中,还提供一种基于经上述流程所生成的索引分片的数据搜索所称,其中包括:
接收用户设备发送的搜索请求,并确定所述搜索请求指向的业务字段。并根据所述搜索请求指向的业务字段查询得到所述搜索请求指向的索引分片。再根据查询得到的索引分片生成搜索结果并向所述用户设备发送。
其中,在查询索引时,根据索引分片直接查询得到数据片即可向用户返回查询结果,避免从所有集群节点依次查询数据并汇总的过程。
进一步的,本实施例中还可以将导入了同一个索引分片的数据片,存储至相同的集群节点。使得通过索引分片提取相应的数据片时,仅访问一个集群节点即可完成数据读取,从而进一步减少了集群节点之间的通信过程,提高了查询索引的反应速度。需要说明的是,也可以将导入了同一个索引分片的数据片,存储至设置在相同的位置的多个集群节点,比如处于同一机房中的相互之间通过有线连接的服务器设备;或者将导入了同一个索引分片的数据片,存储至相互之间建立了高速传输通道的多个服务器设备。例如:在索引分为6个索引分片的场景中,集群节点具体为1主1从的架构,服务器设备配置为8C16G,且共六台服务器设备,每台服务器设备对应处理两个索引分片,原始数据量为1.5亿比特。若采用传统的多线程创建索引且随机分配分片的分片规则,比如:分布式的hash算法,处理耗时需要10个小时;而通过本实施例中数据索引的管理方法,将对应一个索引分片的数据集中在一个或几个集群节点中,减少数据加工时多次与数据源交互次数,处理耗时减少至4个小时;并且相较于采用传统的多线程创建索引分片的方式,查询索引的反应速度提升2倍以上。
本发明实施例提供的数据索引的管理方法,通过运算设备一次性从数据源头抽取完整的原始数据到hive,从而减少数据加工时多次与数据源交互次数,并且确定对应不同业务字段的数据,并将各业务字段对应的数据分配至业务字段对应的数据片,从而在创建索引时,可以直接基于数据片创建索引。相对于现有技术中基于分布式方案自身的hash分片规则,数据随机分配到每个索引分片,再从每个分片查询数据然后合并处理的方案,减少了创建索引过程中访问各集群节点获取数据的过程,提高索引创建速度,并且节约了通信接口资源。并且,本实施例中还可以通过hadoop平台多任务高并发抽取数据,从而提高数据抽取效率。并进一步的将将导入了同一个索引分片的数据片,存储至相同的集群节点。使得通过索引分片提取相应的数据片时,仅访问一个集群节点即可完成数据读取,从而进一步减少了集群节点之间的通信过程,提高了查询索引的反应速度。
本发明实施例还提供一种数据索引的管理装置,如图4所示,包括:
数据提取模块,用于从数据源抽取原始数据,并将所述原始数据推送至数据仓库工具列表。
预处理模块,用于根据预设的分片规则,将所述数据仓库工具列表中的数据分解成指定数量的数据片,并将对应了相同标识信息的数据分配至同一数据片中。
索引创建模块,用于针对每一个数据片分别建立索引创建任务,并将各数据片导入对应的索引分片。
其中,所述数据提取模块,具体用于建立抽取任务,所建立的抽取任务对应所述数据源中的业务数据,所述业务数据包括至少两个表数据。并针对每一个表数据配置对应的抽取任务,并通过hadoop平台并发执行所配置的抽取任务。
所述预处理模块,具体用于从所述数据源获取至少两个业务字段,所述业务字段包括供应商编码。并确定对应不同业务字段的数据,并确定对应同一个业务字段的数据的数据类型,将不同类型的数据分配至不同的数据片。
所述索引创建模块,具体用于针对对应了同一个业务字段的各数据片,通过所述hadoop平台分别建立索引创建任务。并将对应了同一个业务字段的各数据片,导入对应了同一个业务字段的索引分片。
进一步的,如图5所示的,该管理装置还包括:查询模块,用于接收用户设备发送的搜索请求,并确定所述搜索请求指向的业务字段。并根据所述搜索请求指向的业务字段查询得到所述搜索请求指向的索引分片。再根据查询得到的索引分片生成搜索结果并向所述用户设备发送。
本发明实施例提供的数据索引的管理装置,通过运算设备一次性从数据源头抽取完整的原始数据到hive,从而减少数据加工时多次与数据源交互次数,并且确定对应不同业务字段的数据,并将各业务字段对应的数据分配至业务字段对应的数据片,从而在创建索引时,可以直接基于数据片创建索引。相对于现有技术中基于分布式方案自身的hash分片规则,数据随机分配到每个索引分片,再从每个分片查询数据然后合并处理的方案,减少了创建索引过程中访问各集群节点获取数据的过程,提高索引创建速度,并且节约了通信接口资源。并且,本实施例中还可以通过hadoop平台多任务高并发抽取数据,从而提高数据抽取效率。并进一步的将将导入了同一个索引分片的数据片,存储至相同的集群节点。使得通过索引分片提取相应的数据片时,仅访问一个集群节点即可完成数据读取,从而进一步减少了集群节点之间的通信过程,提高了查询索引的反应速度。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。