一种非结构化数据查询操作语言的解析与处理方法

文档序号:6370568阅读:230来源:国知局
专利名称:一种非结构化数据查询操作语言的解析与处理方法
技术领域
本发明涉及一种非结构化数据查询操作语言的解析与处理方法,属于计算机数据管理技术领域。
背景技术
随着互联网等新兴应用的日益丰富以及企业信息化建设的不断发展,出现了大量的非结构化数据。由于非结构化数据数据类型丰富,结构复杂,没有明确的、统一定义的数据结构约束,加之其海量的数据规模,高度动态的数据特性,多样的应用场景,统一的联合访问需求,使得非结构化数据管理面临巨大挑战。传统的关系数据库在处理海量的非结构化数据上难以提出有效的解决方案。传统数据库的数据模型都是模式优先的逻辑结构,而非结构化数据则是模式滞后的逻辑结构,这使得建立在关系代数基础上的数据管理方法在解决非结构化数据的问题上不再有效。非结构化数据的海量特性也使得传统数据库在性能和扩展性上无能为力。新兴的键值库以无模式的方式打破了传统数据库的模式优先逻辑,同时它以键值的方式保证了高速的读写。现在流行并发展迅速的键值库有!Base、MangoDB> Dynamo和Cassandra等等。他们以分布式集群方式保证了海量数据的存储与扩展性,本发明正是基于这样的键值库。然而新兴的键值库并没有完善的查询方式和查询语言。如HBase提供了 API访问, Cassandra提供了 API与一种名为CQL的类SQL语言方式访问。然而他们由于自身数据库的限制,仅能对非结构化数据进行简单的查询与更新,没有提供复杂的分析函数,也没有考虑大容量数据的语言描述方式。CouchDB与SQLite两创始人联合在试图设计键值库的统一查询语言UnQL,然而目前也仅仅只有雏形,对于非结构化数据的多特征查询这一特点也没有有效考虑。从最终用户和应用的角度,非结构化数据查询语言应该解决以下问题(I)支持面向键值库存储的非结构化数据查询;现有的非结构化数据多以存储在键值库中作为海量与高效读写的解决方案,而键值库往往没有提供易用的查询语言。(2)能有效解决不同非结构化数据的多种特征的统一查询;现有的CQL等语言只提供简单的查询功能,无法对非结构化数据进行特征检索。比如对图像数据进行直方图、颜色等特征检索,对音频进行MFCC特征检索等等。(3)如何进行有效地数据查询与分析。传统数据查询仅仅实现索引和简单的统计函数。对于海量的非结构化数据而言,很多结果需要进行数据的分析得出,因此查询语言应该尽可能的支持更多的数据分析函数
发明内容
本发明的目的是提出一种非结构化数据查询操作语言的解析与处理方法,针对非结构化数据管理领域存在的问题,用一种类似SQL语言的方式来访问底层的键值库,以达到让用户轻松操作键值库来管理非结构化数据的目的。本发明提出的非结构化数据管理查询语言的解析和处理方法,包括以下步骤(I)启动键值库中的查询模块,查询模块监听用户的查询语言请求;(2)查询模块接收用户的的查询语言请求,对语言进行解析,解析步骤如下
(2-1)用户端采用查询语言驱动方式连接查询模块,建立用户端与查询模块之间的会话,并保存会话过程中的会话信息,访问查询模块,向查询模块发送查询语言;(2-2)通过查询模块中的解析器,查询模块将用户端发送的查询语言请求转换为内部命令;(3)对上述内部命令进行判断,若该内部命令为指定本次会话的键值库表的命令,则查询模块保存该指定键值库表的名字,并在后续的命令中默认本次会话在该键值库表下执行;若查询语言中的任意位置具有一个相似关键字,则查询模块将该内部命令转交给键值库中的索引调用模块;若查询语言中的任意位置具有一个函数关键字,则查询模块将该内部命令转交给键值库中的函数调用模块;(4)键值库中的查询模块根据内部命令,调用键值库中的各功能模块执行内部命令,具体过程如下(4-1)若内部命令为结构化查询命令,则采用键值库中的服务器执行命令;(4-2)若内部命令为创建键值库索引命令,则采用键值库中的服务器执行命令;(4-3)若内部命令为创建非键值库索引命令,则构建一个索引实现库,并调用索引实现库执行命令;(4-4)若内部命令为运行数据函数分析命令,则构建一个数据函数分析模块,并调用数据函数分析模块执行命令,查询模块获取命令的执行状态和执行结果;(4-5)若内部命令为大数据传输,则使用独立的数据传输流等待与用户端连接,完成连接后,通过数据传输流进行文件传输;传输结束后,查询模块保存传输的文件,并保持用户端与查询模块之间的会话;(4-6)若内部命令是自定义创建索引、查询索引和建立函数,自定义创建索引和查询索引的执行命令,则通过一个关键字标明索引的创建参数和索引创建类型,完成索引的创建和查询;对于自定义建立函数的执行命令,查询模块根据查询语言中的函数关键字和函数的变长参数,从查询模块的配置文件中列出的函数支持类型中,选择相应的函数,完成函数的建立;(4-7)若内部命令为多种类型索引的联合查询,则查询模块对多种类型索引进行分拆,得到各个类型索引的查询子句,根据查询子句,读取查询模块的配置文件中不同索引查询的优先级,调整多个查询子句的查询顺序,进行查询;(5)查询模块向用户端返回查询结果。本发明提出的非结构化数据管理查询语言的解析和处理方法,针对非结构化数据的查询,定义了结构化的查询语言,与传统关系数据库的查询语言语法类似,该语言易扩展并可融合自定义的查询函数。本发明方法的核心是查询模块,通过设计接口使查询模块与键值库松耦合,可以方便的将现有键值库的查询模块移植到其他键值库中;本发明方法提供了多种包括自定义在内的特征检索,因此可以直接管理多种非结构化数据;本发明方法可以支持大数据(如文件)的读写操作,提供支持数据分析等分布式函数的执行操作和可以配置的查询优先级设置等特点,保证高效的管理非结构化数据。
具体实施例方式本发明提出的非结构化数据管理查询语言的解析和处理方法,包括以下步骤(I)启动键值库中的查询模块,查询模块监听用户的查询语言请求;(2)查询模块接收用户的的查询语言请求,对语言进行解析,解析步骤如下(2-1)用户端采用查询语言驱动方式连接查询模块,建立用户端与查询模块之间的会话,并保存会话过程中的会话信息,访问查询模块,向查询模块发送查询语言;(2-2)通过查询模块中的解析器,查询模块将用户端发送的查询语言请求转换为 内部命令;(3)对上述内部命令进行判断,若该内部命令为指定本次会话的键值库表的命令,则查询模块保存该指定键值库表的名字,并在后续的命令中默认本次会话在该键值库表下执行;若查询语言中的任意位置具有一个相似(like)关键字,则查询模块将该内部命令转交给键值库中的索引调用模块;若查询语言中的任意位置具有一个函数(function)关键字,则查询模块将该内部命令转交给键值库中的函数调用模块;(4)键值库中的查询模块根据内部命令,调用键值库中的各功能模块执行内部命令,具体过程如下(4-1)若内部命令为结构化查询命令,如创建表、创建列族或在列族中添加删除数据,则采用键值库中的服务器执行命令;(4-2)若内部命令为创建键值库索引命令,则采用键值库中的服务器执行命令;(4-3)若内部命令为创建非键值库索引命令,如图片的高维索引、文本的全文索弓I,则构建一个索引实现库,并调用索引实现库执行命令;(4-4)若内部命令为运行数据函数分析命令,则构建一个数据函数分析模块,并调用数据函数分析模块执行命令,查询模块获取命令的执行状态和执行结果;(4-5)若内部命令为大数据传输,则使用独立的数据传输流等待与用户端连接,完成连接后,通过数据传输流进行文件传输;传输结束后,查询模块保存传输的文件,并保持用户端与查询模块之间的会话;(4-6)若内部命令是自定义创建索引、查询索引和建立函数,本发明提出的查询语言通过半开放式关键字设置达到多种索引创建与查询、多种函数支持的效果;对于自定义创建索引和查询索引的执行命令,则通过一个关键字(例如with)标明索引的创建参数和索引创建类型,完成索引的创建和查询;对于自定义建立函数的执行命令,查询模块根据查询语言中的函数关键字和函数的变长参数,从查询模块的配置文件中列出的函数支持类型中,选择相应的函数,完成函数的建立;(4-7)若内部命令为多种类型索引的联合查询,在较为复杂的查询语句中,会同时存在键值库默认索引查询(列值或者键值的过滤)、多个自定义索引查询的联合查询;则查询模块对多种类型索引进行分拆,得到各个类型索引的查询子句,根据查询子句,读取查询模块的配置文件中不同索引查询的优先级,调整多个查询子句的查询顺序,进行查询;
(5)查询模块向用户端返回 查询结果。
权利要求
1. 一种非结构化数据管理查询语言的解析和处理方法,其特征在于该方法包括以下步骤 (1)启动键值库中的查询模块,查询模块监听用户的查询语言请求; (2)查询模块接收用户的的查询语言请求,对语言进行解析,解析步骤如下 (2-1)用户端采用查询语言驱动方式连接查询模块,建立用户端与查询模块之间的会话,并保存会话过程中的会话信息,访问查询模块,向查询模块发送查询语言; (2-2)通过查询模块中的解析器,查询模块将用户端发送的查询语言请求转换为内部命令; (3)对上述内部命令进行判断,若该内部命令为指定本次会话的键值库表的命令,则查询模块保存该指定键值库表的名字,并在后续的命令中默认本次会话在该键值库表下执行;若查询语言中的任意位置具有一个相似关键字,则查询模块将该内部命令转交给键值库中的索引调用模块;若查询语言中的任意位置具有一个函数关键字,则查询模块将该内部命令转交给键值库中的函数调用模块; (4)键值库中的查询模块根据内部命令,调用键值库中的各功能模块执行内部命令,具体过程如下 (4-1)若内部命令为结构化查询命令,则采用键值库中的服务器执行命令; (4-2)若内部命令为创建键值库索引命令,则采用键值库中的服务器执行命令; (4-3)若内部命令为创建非键值库索引命令,则构建一个索引实现库,并调用索引实现库执彳了命令; (4-4)若内部命令为运行数据函数分析命令,则构建一个数据函数分析模块,并调用数据函数分析模块执行命令,查询模块获取命令的执行状态和执行结果; (4-5)若内部命令为大数据传输,则使用独立的数据传输流等待与用户端连接,完成连接后,通过数据传输流进行文件传输;传输结束后,查询模块保存传输的文件,并保持用户端与查询模块之间的会话; (4-6)若内部命令是自定义创建索引、查询索引和建立函数,自定义创建索引和查询索引的执行命令,则通过一个关键字标明索引的创建参数和索引创建类型,完成索引的创建和查询;对于自定义建立函数的执行命令,查询模块根据查询语言中的函数关键字和函数的变长参数,从查询模块的配置文件中列出的函数支持类型中,选择相应的函数,完成函数的建立; (4-7)若内部命令为多种类型索引的联合查询,则查询模块对多种类型索引进行分拆,得到各个类型索引的查询子句,根据查询子句,读取查询模块的配置文件中不同索引查询的优先级,调整多个查询子句的查询顺序,进行查询; (5)查询模块向用户端返回查询结果。
全文摘要
本发明涉及一种非结构化数据管理查询语言的解析和处理方法,属于计算机数据管理技术领域。本发明提出的非结构化数据管理查询语言的解析和处理方法,针对非结构化数据的查询,定义了结构化的查询语言,与传统关系数据库的查询语言语法类似,该语言易扩展并可融合自定义的查询函数。本方法首先启动键值库中的查询模块,接收用户的查询语言请求,对语言进行解析并转换为内部命令;查询模块根据内部命令调用键值库中各功能模块去执行;命令执行完毕向用户返回结果。本发明方法的核心是查询模块,通过设计一种类似SQL语言的方式来访问底层的键值库,使用户通过轻松操作键值库,管理非结构化数据。
文档编号G06F17/30GK102750354SQ20121019083
公开日2012年10月24日 申请日期2012年6月11日 优先权日2012年6月11日
发明者丁贵广, 卓安, 王建民, 黄向东 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1