CN108009270A - 一种基于分布式内存计算的文本检索方法 - Google Patents
一种基于分布式内存计算的文本检索方法 Download PDFInfo
- Publication number
- CN108009270A CN108009270A CN201711361106.4A CN201711361106A CN108009270A CN 108009270 A CN108009270 A CN 108009270A CN 201711361106 A CN201711361106 A CN 201711361106A CN 108009270 A CN108009270 A CN 108009270A
- Authority
- CN
- China
- Prior art keywords
- index
- data
- model
- storage
- full
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
发明涉及一种基于分布式内存计算的文本检索方法。全文检索文法和全文检索查询语言到检索模型的翻译转换;检索模型的并行化,包括数据的并行化、索引建立和查询计算的并行化、索引多作业间的共享、全局结果聚合;存储模型与检索优化,在建立索引阶段,两类存储模型即拥有高查询性能的全量存储模型和极低索引存储量的索引指定列存储模型;在查询阶段,基于索引指定列存储模型,能够将查询结果与原表数据进行连接、具有O(n)复杂度的分区对齐连接算法;基于两类存储模型提出了谓词下推以及列裁剪优化策略。
Description
技术领域
本发明涉及一种基于分布式内存计算的文本检索方法,属于软件技术领域。
背景技术
全文检索有效弥补了数据库查询效率低以及检索方式单一的不足,在关系型数据库中,全文检索是衡量数据库易用性和功能完备性的重要指标。当前,全文检索功能作为组件集成在很多传统关系型数据库中。在数据量较少的情况下,数据库能够在较短时间内完成全文检索操作,然而,在大数据情况下,全文检索与关系型数据库管理系统集成的性能以及可扩展性难以满足对快速增长的数据进行检索的业务需求。除了对于传统全文检索的需求,为了更好地发掘海量文本数据中的潜在价值,面向文本的应用需要功能丰富、满足交互式分析需求的海量数据处理系统,但是目前并没有能将两者有效结合的解决方案。
Spark SQL提供了以SQL形式对海量数据进行处理和分析的能力,提供了与RDBMS相似的SQL文法以及关系型查询操作,方便业务人员快速进行大数据分析,是传统RDBMS在海量数据下进行分析的替代系统,能够有效满足用户对于海量数据关系型查询和交互式分析的需求。但是目前Spark SQL并不支持全文检索,主要存在以下三个问题:
(1) 不支持全文检索SQL语句,并且翻译器缺乏将全文检索文法转换为物理计划的机制。SQL语句是数据分析的接口,在Spark SQL中,SQL语句经过翻译器转换为计划树,计划树经过优化器以及物理计划生成器转换为物理计划树,物理计划树包含了一系列RDD以及相互之间的关联操作,进而提交给Spark Core进行作业规划、调度、执行。Spark SQL目前仅支持简单的查找如LIKE、BETWEEN等关键字,检索形式单一,检索结果对于关键词匹配程度的评价简单,缺乏每行数据在全局范围内与关键词匹配程度计算方法以及进行更复杂查找的功能,无法满足用户的数据检索需求。
(2) 缺乏全文检索的并行化方法。全文检索包括建立索引和基于索引进行查询两个过程。Spark SQL缺乏将这两个过程应用于分布式计算引擎上的方法,用户只能依赖外部系统如Solr或ElasticSearch才能提供的分布式全文检索功能。现有分布式全文检索引擎如Solr和ElasticSearch虽然提供了Hive和Spark的连接器,但不支持全文检索SQL文法,这样的外部系统无法很好地利用Spark引擎和数据特性,而且,实现全文检索功能需要复杂的数据转换,无法满足边查询边分析计算的需求,部署的复杂性和学习成本使其难以使用。
(3) 缺乏底层索引文件的支持以及检索的优化方案。Spark目前并不支持索引,索引的缺乏使得查询时需要扫描全表数据,导致查询速度缓慢。检索优化方案通常包括索引存储模型、检索并行度与缓存等优化技术。Spark目前并未有此类方案。虽然Solr和ElasticSearch提供了索引支持和检索优化方案,但是由于底层数据存储和执行引擎的不同,二者无法根据Spark本身特性对存储模型和查询方案进一步优化。
上述问题导致用户无法利用SQL语句进行全文检索的操作,在如数据查找和分析等相关应用上,全文检索功能的缺失使得Spark SQL难以满足某些特定业务的需求。
发明内容
本发明的目的:在解释器、分析器以及物理计划生成器中增加了对于全文检索文法的识别和转换规则,并与索引数据源进行了对接,提供了完整的翻译转换以及完整的检索模型并行化方案。
本发明的原理:提出了查询语言到检索模型的翻译转换方法,包括全文检索SQL文法以及SQL翻译为检索模型的方法;其次,提出了全文检索模型的并行化方法,包括索引构建和基于索引查询的并行化;最后,在索引建立阶段,提出了两种存储模型;在查询阶段,提出了原表数据恢复策略、谓词下推以及列裁剪的策略。
本发明技术解决方案:一种基于分布式内存计算的文本检索方法,其特点在于实现步骤如下:
框架包含四个层次:SQL翻译层、数据源管理层、并行计算层、分布式存储层。SQL翻译层,用于将用户输入的全文检索SQL语句转化为语法树进而转化为计划树,并将计划树的结构进行优化和改变,最终转换为对数据源管理层的索引数据源的接口调用;数据源管理层,接收SQL翻译层的数据处理算子,对算子中索引存储过程和查询过程进行优化,之后转化为并行计算层索引建立或查询的作业;并行计算层接收数据源管理层的作业,将作业转化为实际运行的并行任务;分布式存储层接收并行计算层对索引文件的读写请求,以及存储全文检索的查询结果。
SQL翻译层接收用户输入的全文检索SQL语句,翻译转换为对索引数据源的接口调用。文法解析模块首先对输入的全文检索SQL语句进行切分,去掉空格形成词序数组,词序数组之后根据定义的全文检索文法规则形成一棵语法树,语法树的各节点为一个词,之后,对语法树进行遍历,在索引建立过程中,生成索引数据源计划树节点,该计划树节点包含了建立索引的原表名称,建立索引的列名、使用的存储模型等信息;在查询过程中,将查询条件以及映射条件节点转换为具有相同语义的计划树节点,形成逻辑计划树。元数据绑定和校验模块对文法解析模块生成的逻辑计划树中实际类型为表、列、视图的节点与元数据仓库关联,校验成功的同时将这些节点替换为数据源节点。计划树优化模块仅对索引查询过程的计划树进行优化,该模块将查询条件节点利用过滤下推技术下推到索引数据源节点并去掉计划树中的查询条件节点,同时,将列裁剪下推到数据源节点并去掉计划树中的映射节点。物理计划生成模块将索引建立计划树节点或索引查询节点转化为包含索引数据源处理逻辑的物理计划树节点,生成物理计划树。物理计划执行模块将物理计划树中对索引数据源的数据处理逻辑转化为对索引数据源的接口调用。
数据源管理层接收SQL翻译层对索引数据源的接口调用,转化为索引建立或查询作业。数据源管理模块管理底层数据源,根据SQL翻译层的索引数据源调用,实例化索引数据源,将实例化的索引数据源传入检索优化模块,检索优化模块根据SQL翻译层的接口调用参数中的数据处理逻辑对索引建立阶段的存储模型以及查询策略进行优化,生成索引建立或查询作业,作业中包含了每个并行任务的数据处理逻辑。
并行计算层接收数据源管理层的作业,对作业进行规划,分配集群资源,将作业执行逻辑分发到每个物理机器上,之后,各物理机器上并行执行作业。
分布式存储层接收并行计算层对于文件读写的接口调用,采用分布式读写的方式进行索引的建立以及基于索引的查询,查询结果存储在分布式索引层,并最终返回给用户。
框架在查询语言到检索模型的翻译转换、检索模型并行化以及索引读写和查询优化上进行设计与实现。
(1)查询语言到检索模型的翻译转换
翻译器是将SQL转换成底层分布式计算引擎能够认知的任务的重要步骤。
传统关系型数据库的执行过程为,首先将SQL语句进行语法分析(Parse),找出其中的关键词(如SELECT、FROM等)、表达式、映射、数据源等,生成语法树(计划树),接着对语法树进行规范校验,之后将语法树中的特定结构与数据库的数据字典(表、视图、列)进行绑定,如数据源节点等,接下来对计划树结构进行优化(Optimize),并从多个执行计划中选择最优的计划,之后将执行计划转换为对数据处理的有向无环图DAG,DAG包含了数据的处理流程和处理逻辑,DAG交给执行引擎作为作业生成、调度和执行的依据,最终返回结果。
因此,实现查询语言和查询语言到检索模型的翻译转换需要从三个方面进行设计:文法设计;语法树的翻译转换;执行计划树到数据处理DAG的转换,其中DAG包含了检索模型的并行化方法。
(2)全文检索模型的并行化
全文检索模型描述了从数据源进行信息抽取,根据用户输入的查询语句返回符合条件的结果列表的一系列步骤,通常包括数据源读取、数据格式的规范化、分词和索引、索引写入文件、读取索引、查询、返回结果。
不同于单机下的全文检索过程,分布式环境下数据的全文检索具有三个特性:分片特性;数据在本地磁盘的写入具有易失性;分区内执行过程和检索结果的隔离性。分片特性导致数据在多节点并行处理,易失性使得索引建立和查询作业中的任务并不总是对应相同的物理节点;隔离性导致得出的结果并不是全局得分最高的Top K的结果。
基于以上三个特性带来的影响,全文检索模型的并行化主要包括四个方面:数据的并行化,分布式环境下数据由多个分片构成;索引建立和查询计算的并行化,索引建立和查询操作都为窄依赖操作,可以并行,互不影响;索引共享,不同作业间能够共享索引;全局结果聚合,将各分区得到的查询结果根据得分进行聚合。目前Spark并不支持全文检索的并行化。本文将单机下的检索模型迁移到分布式计算引擎Spark中,通过原始数据的分片、索引的分片、索引读写逻辑在多节点多线程的并行化、索引在作业间的共享、对检索结果的全局聚合,设计和实现了完整的检索模型并行化方案。
(3)存储模型与检索优化
在海量数据的全文检索中,除了提高数据处理的并行度,合理的存储模型设计和检索优化方案对于减少索引数据的存储量、提升海量数据的查询性能至关重要。
全文检索包含两个过程:建立索引和基于索引进行查询。
在建立索引阶段,提出两类存储模型即拥有高查询性能的全量索引存储模型和极低索引存储量的索引指定列存储模型。
在查询阶段,基于索引指定列存储模型,提出了能够将查询结果与原表数据进行连接、具有O(n)复杂度的分区对齐连接算法;同时,基于两类存储模型提出了对索引数据进行查询时的列裁剪以及谓词下推策略,其中,谓词下推优化技术将过滤条件下推至索引的查询阶段,列裁剪应用于查询结果的数据裁剪阶段,这两类优化技术有效减少了作业执行的资源占有量,降低了CPU、I/O和网络负载。
本发明与现有技术相比具有如下优点:
(1) 提供了索引建立和查询的SQL接口;
(2) 完整的查询语言到并行任务的翻译转换流程,良好的层次结构以及清晰的树型转换框架能够为以后针对全文检索执行树的优化提供良好的可扩展性;
(3) 检索模型的并行化使得用户可以通过横向扩展物理集群避免存储和查询瓶颈;
(4) 拥有高性能的全量存储模型和低索引存储量的索引指定列模型及其分区对齐连接算法,能够有效满足用户对不同场景下的需求;
(5) 查询优化上实现了过滤下推和列裁剪。
附图说明
图1为Spark SQL分布式全文检索架构。
具体实施方式
以下结合具体实施例和附图对本发明进行详细说明,如图1所示,本发明实施例方法流程:
最上层SQL客户端接受用户的SQL查询,将SQL提交给翻译引擎翻译,接收执行结果并将执行结果以结构良好的形式展示给用户。
SQL经过翻译引擎的语法分析、元数据绑定、计划优化、物理计划生成等模块,最终转换为对RDD的操作。索引建立和基于索引查询的文法在解析器阶段识别为语法树结构并转换为Catalyst中相同语义的计划树节点,之后,计划优化器模块将过滤和映射下推到底层数据源实现过滤下推和列裁剪的优化技术,最后物理计划生成器利用全文检索的转换策略识别和转换具有全文检索语义的计划树节点,生成对索引数据源进行操作的物理计划,物理计划包含了对于SearchRDD的调用和执行结果的处理逻辑。
执行引擎是将任务并行执行的环境,通过接收上层提交的任务,在基于底层物理资源的基础上并行运行作业。在全文检索中,Spark通过执行SearchRDD中各分区任务的数据处理逻辑,实现分区独立的索引读写和查询。
分布式存储系统中索引的读写基于HDFS并行的,每个分区都会形成一块索引。索引的写入和查询基于拥有高性能的全量存储模型或低索引存储量的索引指定列存储模型及其相应的检索优化方案。
(1)查询语言到检索模型的翻译转换
本文扩展了SQL解释器,包括:全文检索文法;分析器全文检索文法识别;增加了物理计划转换规则,支持查询操作下推到数据源;实现了SearchRDD,包含了索引建立和查询过程的并行化、存储模型和检索优化方案的实现。
(2)检索模型并行化实现
检索模型的并行化包含四个方面:数据的并行化;索引建立和查询计算的并行化;索引共享;全局结果聚合。数据并行化的抽象结构表示为RDD,即RDD对应散布在分布式存储系统中的各分片数据;索引建立的并行化是指对原始RDD的分区数据建立分布式Lucene索引的过程,查询的并行化是指每个索引块为一个分区,并且,每个分区执行一个查询任务得到各分区的查询结果;索引共享指的是索引建立任务和查询任务之间共享具有相同物理分布的索引;全局聚合指的是对各分区检索的结果按照得分进行聚合选出全局得分Top K的过程。
(3)存储设计与检索优化
海量数据的分布式全文检索由于数据量巨大,不合理的优化策略可能对CPU、I/O、网络造成一定的压力,从而产生严重的性能问题。SearchRDD实现了全量存储模型和索引指定列存储模型。在查询方面,实现了谓词下推和列裁剪优化技术,谓词下推使得将查询Filter提前至底层数据源进行过滤,针对于全量存储模型,实现了六阶段两步裁剪,而对于索引指定列存储模型,则实现了六阶段两步裁剪。
Claims (1)
1.方法特征在于实现步骤如下:
(1)查询语言到检索模型的翻译转换:首先将SQL语句进行语法分析,找出其中的关键词、表达式、映射、数据源等,生成语法树,接着对语法树进行规范校验,之后将语法树中的特定结构与数据库的数据字典进行绑定,如数据源节点等,接下来对计划树结构进行优化,并从多个执行计划中选择最优的计划,之后将执行计划转换为对数据处理的有向无环图DAG,DAG包含了数据的处理流程和处理逻辑,DAG交给执行引擎作为作业生成、调度和执行的依据,最终返回结果;
(2)全文检索模型的并行化:全文检索模型描述了从数据源进行信息抽取,根据用户输入的查询语句返回符合条件的结果列表的一系列步骤,通常包括数据源读取、数据格式的规范化、分词和索引、索引写入文件、读取索引、查询、返回结果;
(3)存储模型与检索优化:在建立索引阶段,提出两类存储模型即拥有高查询性能的全量索引存储模型和极低索引存储量的索引指定列存储模型;在查询阶段,基于索引指定列存储模型,提出了能够将查询结果与原表数据进行连接;基于两类存储模型提出了对索引数据进行查询时的列裁剪以及谓词下推策略,其中,谓词下推优化技术将过滤条件下推至索引的查询阶段,列裁剪应用于查询结果的数据裁剪阶段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711361106.4A CN108009270A (zh) | 2017-12-18 | 2017-12-18 | 一种基于分布式内存计算的文本检索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711361106.4A CN108009270A (zh) | 2017-12-18 | 2017-12-18 | 一种基于分布式内存计算的文本检索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108009270A true CN108009270A (zh) | 2018-05-08 |
Family
ID=62059650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711361106.4A Pending CN108009270A (zh) | 2017-12-18 | 2017-12-18 | 一种基于分布式内存计算的文本检索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108009270A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737667A (zh) * | 2019-10-26 | 2020-01-31 | 南京录信软件技术有限公司 | 一种基于Spark的索引方法 |
CN111078705A (zh) * | 2019-12-20 | 2020-04-28 | 南京聚力云成电子科技有限公司 | 基于Spark平台建立数据索引方法及数据查询方法 |
CN111428140A (zh) * | 2020-04-13 | 2020-07-17 | 上海东普信息科技有限公司 | 高并发数据检索方法、装置、设备及存储介质 |
CN112001500A (zh) * | 2020-08-13 | 2020-11-27 | 星环信息科技(上海)有限公司 | 基于纵向联邦学习系统的模型训练方法、设备及存储介质 |
CN113568930A (zh) * | 2021-08-12 | 2021-10-29 | 威讯柏睿数据科技(北京)有限公司 | 一种分布式内存数据查询优化的方法和设备 |
CN113704296A (zh) * | 2021-08-03 | 2021-11-26 | 浪潮云信息技术股份公司 | 一种基于Spark SQL的计算下推查询优化方法 |
-
2017
- 2017-12-18 CN CN201711361106.4A patent/CN108009270A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110737667A (zh) * | 2019-10-26 | 2020-01-31 | 南京录信软件技术有限公司 | 一种基于Spark的索引方法 |
CN111078705A (zh) * | 2019-12-20 | 2020-04-28 | 南京聚力云成电子科技有限公司 | 基于Spark平台建立数据索引方法及数据查询方法 |
CN111428140A (zh) * | 2020-04-13 | 2020-07-17 | 上海东普信息科技有限公司 | 高并发数据检索方法、装置、设备及存储介质 |
CN111428140B (zh) * | 2020-04-13 | 2023-06-09 | 上海东普信息科技有限公司 | 高并发数据检索方法、装置、设备及存储介质 |
CN112001500A (zh) * | 2020-08-13 | 2020-11-27 | 星环信息科技(上海)有限公司 | 基于纵向联邦学习系统的模型训练方法、设备及存储介质 |
CN113704296A (zh) * | 2021-08-03 | 2021-11-26 | 浪潮云信息技术股份公司 | 一种基于Spark SQL的计算下推查询优化方法 |
CN113568930A (zh) * | 2021-08-12 | 2021-10-29 | 威讯柏睿数据科技(北京)有限公司 | 一种分布式内存数据查询优化的方法和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108009270A (zh) | 一种基于分布式内存计算的文本检索方法 | |
Tan et al. | Enabling query processing across heterogeneous data models: A survey | |
CN107122443B (zh) | 一种基于Spark SQL的分布式全文检索系统及方法 | |
EP2608074B1 (en) | Systems and methods for merging source records in accordance with survivorship rules | |
CN101021874B (zh) | 一种对查询sql请求进行优化的方法及装置 | |
CN103246749B (zh) | 面向分布式计算的矩阵数据库系统及其查询方法 | |
CN102609451A (zh) | 面向流式数据处理的sql查询计划生成方法 | |
CN106372114A (zh) | 一种基于大数据的联机分析处理系统和方法 | |
US9418092B2 (en) | Index selection in a multi-system database management system | |
US20140280159A1 (en) | Database search | |
CN111078961B (zh) | 多数据源查询驱动系统、方法、装置和存储介质 | |
Giannakouris et al. | MuSQLE: Distributed SQL query execution over multiple engine environments | |
CN103970902A (zh) | 一种大量数据情况下的可靠即时检索方法及系统 | |
WO2013057937A1 (en) | Transformation of complex data source result sets to normalized sets for manipulation and presentation | |
CN108536692A (zh) | 一种执行计划的生成方法、装置及数据库服务器 | |
CN102270232A (zh) | 一种存储优化的语义数据查询系统 | |
CN107943952A (zh) | 一种基于Spark框架进行全文检索的实现方法 | |
CN110909077A (zh) | 一种分布式存储方法 | |
US11809468B2 (en) | Phrase indexing | |
Aluko et al. | Big SQL systems: an experimental evaluation | |
CN107818181A (zh) | 基于Plcient交互式引擎的索引方法及其系统 | |
Azevedo et al. | Modern Federated Database Systems: An Overview. | |
CN110008448A (zh) | 将SQL代码自动转换为Java代码的方法和装置 | |
CN108804580A (zh) | 一种在联邦型rdf数据库中查询关键字的方法 | |
Kruse et al. | RHEEMix in the Data Jungle–A Cross-Platform ery Optimizer– |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180508 |