一种数据查询方法和服务器技术

技术编号:19934147 阅读:29 留言:0更新日期:2018-12-29 04:31
本申请提供一种数据查询方法和服务器,该方法包括:查询器向连接器发送SparkSQL查询指令;SparkSQL查询指令携带HBase表的表标识、HBase表的元数据、与所述元数据对应的属性值;连接器在接收到SparkSQL查询指令后,若存储器存在所述表标识、所述元数据对应的索引表,生成第一Phoenix查询指令,并发送给存储器;第一Phoenix查询指令携带所述表标识、所述元数据、所述属性值;存储器在接收到第一Phoenix查询指令后,从所述表标识、所述元数据对应的索引表中,获取所述属性值对应的行键,从所述表标识对应的HBase表中,获取所述行键对应的行数据,将所述行数据返回给连接器;连接器在接收到行数据后,将所述行数据返回给查询器。通过本申请的技术方案,不用对HBase表进行全表扫描,提升查询性能。

【技术实现步骤摘要】
一种数据查询方法和服务器
本申请涉及通信
,尤其涉及一种数据查询方法和服务器。
技术介绍
HBase数据库是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,用于提供对大型数据集的随机、实时读写访问服务。其中,该HBase数据库以数据表(本文中称为HBase表)的形式存储数据,HBase表可以由行和列族组成,如表1所示,为HBase表的示例。行键(RowKey)是HBase表的索引,当接收到查询请求时,若查询请求携带的RowKey是001,则从HBase表中查询到的内容是第一行数据,因此,返回第一行数据。此外,列族(ColumnFamily)可以由一个或者多个列组成,表1中姓名、地址、年龄、手机号、邮箱等为元数据,每个元数据对应多个属性值,例如姓名对应的属性值有张三、李四。表1在上述方式下,若查询请求未携带RowKey,而是携带某个元数据(如地址)的属性值,如北京,则无法通过RowKey快速查询到行数据,而是需要对整个HBase表进行全表扫描,以查询到具有“北京”的行数据,查询性能很低。
技术实现思路
本申请提供一种数据查询方法,所述方法包括:查询器向连接器发送SparkSQL查询指令;所述SparkSQL查询指令携带HBase表的表标识、所述HBase表的元数据、与所述元数据对应的属性值;所述连接器在接收到SparkSQL查询指令后,若存储器存在所述表标识、所述元数据对应的索引表,则生成第一Phoenix查询指令,并发送给所述存储器;所述第一Phoenix查询指令携带所述表标识、所述元数据、所述属性值;所述存储器在接收到第一Phoenix查询指令后,从所述表标识、所述元数据对应的索引表中,获取所述属性值对应的行键,从所述表标识对应的HBase表中,获取所述行键对应的行数据,将所述行数据返回给所述连接器;其中,索引表用于记录HBase表的元数据的属性值、HBase表的行键的对应关系;所述连接器在接收到所述行数据后,将所述行数据返回给所述查询器。本申请提供一种服务器,包括:查询器、连接器和存储器;所述查询器,用于向连接器发送SparkSQL查询指令;SparkSQL查询指令携带HBase表的表标识、所述HBase表的元数据、所述元数据对应的属性值;所述连接器,用于在接收到SparkSQL查询指令后,若存储器存在所述表标识、所述元数据对应的索引表,生成第一Phoenix查询指令,并发送给所述存储器;所述第一Phoenix查询指令携带所述表标识、所述元数据、所述属性值;所述存储器,用于在接收到第一Phoenix查询指令后,从所述表标识、所述元数据对应的索引表中,获取所述属性值对应的行键,从所述表标识对应的HBase表中,获取所述行键对应的行数据,将所述行数据返回给所述连接器;索引表用于记录HBase表的元数据的属性值、HBase表的行键的对应关系;所述连接器,还用于在收到所述行数据后,将所述行数据返回给查询器。基于上述技术方案,本申请实施例中,通过创建索引表,并在索引表中记录HBase表的元数据的属性值、HBase表的行键的对应关系,这样,在接收到Phoenix查询指令后,即使在Phoenix查询指令中未携带HBase表的行键,而是携带HBase表的元数据对应的属性值,则可以通过该属性值查询索引表,得到该HBase表的行键,然后使用HBase表的行键查询该HBase表,从而得到对应的行数据。上述方式不用对整个HBase表进行全表扫描,可以提升查询性能。附图说明为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。图1A和图1B是本申请一种实施方式中的服务器的结构图;图2A是本申请一种实施方式中的索引表的创建方法的流程图;图2B是本申请一种实施方式中的数据查询方法的流程图;图2C是本申请一种实施方式中的数据存储方法的流程图;图2D是本申请另一种实施方式中的数据查询方法的流程图。具体实施方式在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。本申请实施例提出一种数据查询方法,可以应用于包括存储器、查询器和连接器的系统,查询器、存储器和连接器可以部署在同一个服务器,也可以部署在不同服务器。若查询器、存储器和连接器部署在同一个服务器,则查询器、存储器和连接器是该服务器的三个功能模块,例如,查询器可以是实现数据查询功能的SQL(StructuredQueryLanguage,结构化查询语言)引擎,存储器可以是实现数据存储功能的数据库,连接器可以是实现连接功能的中间件。若查询器、存储器和连接器部署在不同服务器,则查询器、存储器和连接器是三个独立服务器。为方便描述,后续以查询器、存储器和连接器部署在同一个服务器为例。参见图1A所示,为服务器的结构示意图,存储器用于实现数据存储功能,且存储器可以采用Phoenix组件实现数据的存储。查询器用于实现数据查询功能,且查询器可以采用SparkSQL(一种基于Spark的分布式SQL引擎)实现数据的查询。连接器可以实现Phoenix指令与SparkSQL指令的转换。其中,存储器在通过HBase数据库存储数据时,可以采用Phoenix组件实现数据的存储,而Phoenix组件用于提供对HBase数据库的SQL支持,这样,存储器在接收到SQL请求时,可以根据SQL请求对HBase数据库中的数据进行操作。查询器可以采用SparkSQL引擎实现数据的查询,该SparkSQL引擎可以开放多个接入外部数据源(DataSource)的接口,例如,JDBC(JavaDataBaseConnectivity,java数据库连接)、ODBC(OpenDatabaseConnectivity,开放数据库连接)、API(ApplicationProgrammingInterface,应用程序编程接口)等接口。SparkSQL引擎还可以支持更多格式的数据源,例如,JSON(JavaScriptObjectNotation,Java脚本对象标记)、Parquet(列式存储格式)、avro(数据序列化的系统)、CSV(CommaSeparatedValues,逗号分隔值文)等格式。其中,由于存储器采用Phoenix组件实现数据的存储,查询器采用SparkSQL引擎实现数据的查询,也就是说,查询器能够处理SparkSQL指令,而存储器本文档来自技高网...

【技术保护点】
1.一种数据查询方法,其特征在于,所述方法包括:查询器向连接器发送SparkSQL查询指令;所述SparkSQL查询指令携带HBase表的表标识、所述HBase表的元数据、与所述元数据对应的属性值;所述连接器在接收到SparkSQL查询指令后,若存储器存在所述表标识、所述元数据对应的索引表,则生成第一Phoenix查询指令,并发送给所述存储器;所述第一Phoenix查询指令携带所述表标识、所述元数据、所述属性值;所述存储器在接收到第一Phoenix查询指令后,从所述表标识、所述元数据对应的索引表中,获取所述属性值对应的行键,从所述表标识对应的HBase表中,获取所述行键对应的行数据,将所述行数据返回给所述连接器;其中,索引表用于记录HBase表的元数据的属性值、HBase表的行键的对应关系;所述连接器在接收到所述行数据后,将所述行数据返回给所述查询器。

【技术特征摘要】
1.一种数据查询方法,其特征在于,所述方法包括:查询器向连接器发送SparkSQL查询指令;所述SparkSQL查询指令携带HBase表的表标识、所述HBase表的元数据、与所述元数据对应的属性值;所述连接器在接收到SparkSQL查询指令后,若存储器存在所述表标识、所述元数据对应的索引表,则生成第一Phoenix查询指令,并发送给所述存储器;所述第一Phoenix查询指令携带所述表标识、所述元数据、所述属性值;所述存储器在接收到第一Phoenix查询指令后,从所述表标识、所述元数据对应的索引表中,获取所述属性值对应的行键,从所述表标识对应的HBase表中,获取所述行键对应的行数据,将所述行数据返回给所述连接器;其中,索引表用于记录HBase表的元数据的属性值、HBase表的行键的对应关系;所述连接器在接收到所述行数据后,将所述行数据返回给所述查询器。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述查询器向所述连接器发送SparkSQL创建指令;其中,所述SparkSQL创建指令携带HBase表的表标识、所述HBase表的元数据;所述连接器在接收到SparkSQL创建指令后,生成Phoenix创建指令,并发送给所述存储器;所述Phoenix创建指令携带所述表标识、所述元数据;所述存储器接收到Phoenix创建指令后,从所述表标识对应的HBase表中,获取所述元数据对应的属性值、所述属性值对应的行键,创建所述表标识、所述元数据对应的索引表,在索引表中记录所述属性值与所述行键的对应关系。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:查询器向连接器发送SparkSQL存储指令,SparkSQL存储指令携带HBase表的表标识、HBase表的至少一个元数据、每个元数据对应的属性值、行键;所述连接器在接收到SparkSQL存储指令后,针对每个元数据执行如下操作:若所述存储器存在所述表标识、所述元数据对应的索引表,则生成第一Phoenix存储指令,并发送给所述存储器,所述第一Phoenix存储指令携带所述表标识、所述元数据、所述元数据对应的属性值、所述属性值对应的行键;所述存储器在接收到第一Phoenix存储指令后,在所述表标识、所述元数据对应的索引表中,记录所述属性值与所述行键的对应关系。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:所述连接器在接收到所述SparkSQL存储指令后,生成第二Phoenix存储指令,并发送给所述存储器;所述第二Phoenix存储指令携带所述表标识、所述至少一个元数据、所述每个元数据对应的属性值、所述行键;所述存储器在接收到第二Phoenix存储指令后,在所述表标识对应的HBase表中,记录所述行键与每个元数据对应的属性值的对应关系。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述查询器向所述连接器发送SparkSQL删除指令;所述连接器在接收到SparkSQL删除指令后,根据所述SparkSQL删除指令生成Phoenix删除指令,并发送给所述存储器;所述存储器在接收到Phoenix删除指令后,若所述Phoenix删除指令携带HBase表的表标识、HBase表的元数据,则删除所述表标识、所述元数据对应的索引表;若所述Phoenix删除指令携带HBase表的表标识、HBase表的元数据、所述元数据对应的属性值,则从所述表标识、所述元数据对应的索引表中删除所述属性值对应的行数据。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述查询器向所述连接器发送SparkSQL获取指令;所述连接器在接收到SparkSQL获取指令后,根据所述SparkSQL获取指令生成Phoenix获取指令,并发送给所述存储器;所述存储器在接收到Phoenix获取指令后,若所述Phoenix获取指令携带HBase表的表标识、HBase表的元数据,则通过所述连接器将所述表标识、所述元数据对应的索引表返回给所述查询器;若所述Phoenix获取指令携带HBase表的表标识、HBase表的元数据、与所述元数据对应的属性值,则从所述表标识、所述元数据对应的索引表中,获取所述属性值对应的行数据,并通过所述连接器将所述行数据返回给所述查询器。7.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述查询器向连接器发送SparkSQL关联查询指令;所述SparkSQL关联查询指令携带HBase表的第一表标识、所述HBase表对应的关联HBase表的第二表标识;所述连接器在接收到SparkSQL关联查询指令后,生成第一Phoenix关联查询指令,并发送给所述存储器;所述第一Phoenix关联查询指令携带所述第二表标识;所述存储器在接收到第一Phoenix关联查询指令后,从所述第二表标识对应的关联HBase表中,获取所有第一类行数据,并将所有第一类行数据返回给所述连接器;其中,每个第一类行数据均包括至少一个元数据对应的属性值;针对每个第一类行数据中的每个元数据执行如下操作:若所述存储器存在第一表标识、所述元数据对应的索引表,则所述连接器生成第二Phoenix关联查询指令,并发送给所述存储器;所述第二Phoenix关联查询指令携带所述第一表标识、所述元数据、所述元数据对应的属性值;所述存储器接收到第二Phoenix关联查询指令后,从所述第一表标识、所述元数据对应的索引表中,获取所述属性值对应的行键,并从所述第一表标识对应的HBase表中,获取所述行键对应的第二类行数据,并将所述第二类行数据返回给所述连接器;所述连接器将所述第一类行数据和所述第二类行数据进行关联后,返回给所述查询器。8.一种服务器,其特征在于,包括:查询器、...

【专利技术属性】
技术研发人员:丁远普李日光
申请(专利权)人:新华三大数据技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1