CN104636389A - 实现Hbase数据库实时查询的方法和系统 - Google Patents

实现Hbase数据库实时查询的方法和系统 Download PDF

Info

Publication number
CN104636389A
CN104636389A CN201310571306.8A CN201310571306A CN104636389A CN 104636389 A CN104636389 A CN 104636389A CN 201310571306 A CN201310571306 A CN 201310571306A CN 104636389 A CN104636389 A CN 104636389A
Authority
CN
China
Prior art keywords
checked
index
result set
hbase database
line item
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.)
Granted
Application number
CN201310571306.8A
Other languages
English (en)
Other versions
CN104636389B (zh
Inventor
刘德志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Burson Marsteller Network Game Development (shenzhen) Co Ltd
Original Assignee
Burson Marsteller Network Game Development (shenzhen) Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Burson Marsteller Network Game Development (shenzhen) Co Ltd filed Critical Burson Marsteller Network Game Development (shenzhen) Co Ltd
Priority to CN201310571306.8A priority Critical patent/CN104636389B/zh
Publication of CN104636389A publication Critical patent/CN104636389A/zh
Application granted granted Critical
Publication of CN104636389B publication Critical patent/CN104636389B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种实现Hbase数据库实时查询的方法,包括以下步骤:获取结构化查询语言文本;解析所述结构化查询语言文本得到查询元素,所述待查询元素包括第一待查询表;将所述查询元素封装成第一待查询表对应的待查询对象;根据所述待查询对象为所述第一待查询表构造第一索引;通过所述待查询对象和所述第一索引在Hbase数据库中的第一待查询表中进行数据查询得到结果集,所述结果集包括行记录,所述行记录用于保存查询数据。上述方法为Hbase数据库提供了结构化查询语言(SQL)查询功能,用户不需要关心索引的构造,甚至对Hbase数据库完全陌生的情况下也能通过结构化查询语言文本实时查询相关数据,用户可以将时间和精力集中在业务逻辑的开发上,提高了开发效率。

Description

实现Hbase数据库实时查询的方法和系统
技术领域
本发明涉及数据库查询技术,特别是涉及一种实现Hbase数据库实时查询的方法和系统。
背景技术
Hbase数据库是一个面向列存储、可伸缩高性能的分布式数据库。由于其面向列存储的特性,对海量数据的存储相比关系型数据库来说更有优势,因此广受用户亲睐。
但是Hbase数据库是一种noSQL数据库,即无法直接通过(Structured QueryLanguage,简称SQL)语言实现数据查询,只能通过rowkey(索引)来实现Hbase数据库中的数据查询。对Hbase数据库虽然可以通过Hive来建立数据仓库提供SQL数据查询,但是Hive并不能对Hbase数据库进行实时查询。
发明内容
基于此,有必要针对Hbase数据库不支持SQL语言进行实时查询的问题,提供一种支持SQL语言实时查询Hbase数据库的实现Hbase数据库实时查询的方法。
此外,还有必要提供一种支持SQL语言实时查询Hbase数据库的实现Hbase数据库实时查询的系统。
一种实现Hbase数据库实时查询的方法,所述方法包括:
获取结构化查询语言文本;
解析所述结构化查询语言文本得到查询元素,所述待查询元素包括第一待查询表;
将所述查询元素封装成第一待查询表对应的待查询对象;
根据所述待查询对象为所述第一待查询表构造第一索引;
通过所述待查询对象和所述第一索引在Hbase数据库中的第一待查询表中进行数据查询得到结果集,所述结果集包括行记录,所述行记录用于保存查询数据。
在其中一个实施例中,所述通过所述待查询对象和所述第一索引在Hbase数据库中的第一待查询表中进行数据查询得到结果集的步骤之后,所述方法还包括:
从所述查询元素中提取连接条件,根据所述连接条件得到与当前查询表连接的下一待查询表;
将所述查询元素封装成下一待查询表对应的下一待查询对象;
根据所述下一待查询对象为所述下一待查询表构造下一索引;
通过所述下一待查询对象和所述下一索引在Hbase数据库中的所述下一待查询表中进行数据查询得到行记录,并将所述行记录更新至所述结果集。
在其中一个实施例中,所述根据所述下一待查询对象为所述下一待查询表构造下一索引的步骤为:
读取所述结果集中行记录的行值,根据所述行值和所述连接条件得到下一索引构造条件;
根据所述下一索引构造条件和预置的下一索引构造规则为所述下一待查询表构造下一索引。
在其中一个实施例中,所述下一索引包括起始值和结束值;所述根据所述下一索引构造条件和预置的下一索引构造规则为所述下一待查询表构造下一索引的步骤为:
根据下一索引构造条件确定下一索引的构造范围;
根据所述下一索引的构造范围和所述预置的下一索引构造规则得到下一待查询表对应下一索引的起始值和结束值。
在其中一个实施例中,所述通过所述下一待查询对象和所述下一索引在Hbase数据库中的所述下一待查询表中进行数据查询得到行记录,并将所述行记录更新至所述结果集的步骤之后,所述方法还包括:将所述结果集嵌套展示于界面中。
一种实现Hbase数据库实时查询的系统,所述系统包括:
语句获取模块,用于获取结构化查询语言文本;
语句解析模块,用于解析所述结构化查询语言文本得到查询元素,所述待查询元素包括第一待查询表;第一对象封装模块,用于将所述查询元素封装成第一待查询表对应的待查询对象;
第一索引构造模块,用于根据所述待查询对象为所述第一待查询表构造第一索引;
第一查询模块,用于通过所述待查询对象和所述第一索引在Hbase数据库中的第一待查询表中进行数据查询得到结果集,所述结果集包括行记录,所述行记录用于保存查询数据。
在其中一个实施例中,所述系统还包括:
第二待查询表获取模块,用于从所述查询元素中提取连接条件,根据所述连接条件得到与当前查询表连接的下一待查询表;
第二对象封装模块,用于将所述查询元素封装成下一待查询表对应的下一待查询对象;
第二索引构造模块,用于根据所述下一待查询对象为所述下一待查询表构造下一索引;
第二查询模块,用于通过所述下一待查询对象和所述下一索引在Hbase数据库中的所述下一待查询表中进行数据查询得到行记录,并将所述行记录更新至所述结果集。
在其中一个实施例中,所述第二索引构造模块包括:
条件获取单元,用于根据所述行记录结果集中的行值和连接条件得到下一索引构造条件;
下一索引构造单元,用于根据所述下一索引构造条件和预置的下一索引构造规则为所述下一待查询表构造下一索引。
在其中一个实施例中,所述下一索引包括起始值和结束值;所述下一索引构造单元包括:
确定索引范围单元,用于根据下一索引构造条件确定下一索引的构造范围;
获取下一索引值单元,用于根据所述下一索引的构造范围和所述预置的下一索引构造规则得到下一待查询表对应下一索引的起始值和结束值。
在其中一个实施例中,所述系统还包括:
数据展示模块,用于将所述结果集嵌套展示于界面中。
上述实现Hbase数据库实时查询的方法和系统,通过获取SQL语言形式的结构化查询语言文本,对结构化查询语言文本进行解析得到查询元素,将查询元素封装成第一待查询表对应的待查询对象,通过待查询对象为第一待查询表构造索引,通过待查询对象和构造的索引从Hbase数据库中的第一待查询表中查询数据,实现了结构化查询语言文本对Hbase数据库进行实时查询的功能。
用户不需要关心索引的构造,甚至对Hbase数据库完全陌生的情况下也能通过结构化查询语言文本实时查询相关数据,用户可以将时间和精力集中在业务逻辑的开发上,提高了开发效率。
附图说明
图1为一个实施例中实现Hbase数据库实时查询的方法数据流程图;
图2为另一个实施例中实现Hbase数据库实时查询的方法数据流程图;
图3为一个实施例中根据下一待查询对象为下一待查询表构造索引步骤的数据流程图;
图4为一个实施例中根据索引构造条件和预置的索引构造规则为下一待查询表构造索引步骤的数据流程图;
图5为一个实施例中实现对Hbase数据库进行查询后进行数据展示的数据流程图;
图6为一个实施例中以嵌套方式展示数据查询记录的显示界面图;
图7为对Hbase数据库进行数据查询的应用示意图;
图8为一个实施例中实现Hbase数据库实时查询的系统结构示意图;
图9为另一个实施例中实现Hbase数据库实时查询的系统结构示意图;
图10为一个实施例中第二索引构造模块的结构示意图;
图11为一个实施例中索引构造单元的结构示意图;
图12为一个实施例中数据展示模块的结构示意图。
具体实施方式
如图1所示,在一个实施例中,一种实现Hbase数据库实时查询的方法,该方法包括如下步骤:
步骤S110,获取结构化查询语言文本。
本实施例中,获取用户输入的结构化查询语言(Structured Query Language,简称SQL)文本,结构化查询语言文本是对Hbase数据库进行数据查询的查询语句。
步骤S120,解析结构化查询语言文本得到查询元素,查询元素包括第一待查询表。
本实施例中,根据结构化查询语言的语法将获取到的结构化查询语言文本拆分为若干个查询元素。例如,一个结构化查询语言文本为:“select姓名,生日from table1where学号=201012323”。通过拆分可以得到列名为姓名、生日两列,第一待查询表为table1,查询条件为学号=201012323。
具体的,可以利用正则表达式对结构化查询语言文本进行拆分,通过正则表达式将结构化查询语言文本中的各个查询元素解析出来。解析出来的查询元素包括:第一待查询表、列名以及查询条件等。
进一步的,在对Hbase数据库中的多个表进行查询时,多表连接查询的结构化查询语言中的查询元素将较为复杂,例如,多个表进行连接查询时,解析得到的查询元素中,列名还包括了where条件列名、select查询列名、join条件列名。
步骤S130,将查询元素封装成第一待查询表对应的待查询对象。
本实施例中,结构化查询语言文本在当前所进行的Hbase数据库查询是单表查询,解析得到查询元素将不包括连接表名和连接条件。结构化查询语言文本对Hbase数据库进行的数据查询中,所查询的表可能是一个或者多个,其中,所查询的第一个表即为第一待查询表,该第一待查询表可为当前所进行的数据查询中查询的唯一一个表,也可以是所查询的多个表中首次查询的表。
第一待查询表是通过上述解析结构化查询语言文本确定的。每一个待查询表都对应了一个待查询对象。待查询对象中包括待查询表名、列名以及查询条件属性。同时待查询对象中还包括对第一待查询表进行数据查询的属性,例如,扫描器(scan)属性,扫描器属性包括过滤器(filters)属性。
通过对扫描器属性赋值就可以在Hbase数据库中进行数据查询。通过为扫描器属性中的过滤器属性设置参数,在数据查询时对不符合查询条件的数据进行过滤。
由于Hbase数据库是采用字节数组对数据进行存储的,因此将待查询对象中的属性转化为字节类型的数据,再将转化后的数据以字节数组的形式进行存储。
步骤S140,根据待查询对象为第一待查询表构造第一索引。
本实施例中,获取上述待查询对象中的查询条件,上述查询条件即为第一索引构造条件。通过第一索引构造条件依次从第一索引构造规则中获取第一索引构造条件对应的第一索引构造规则值,第一索引构造规则预先存储于配置文件,通过配置文件就能获得。根据第一索引构造条件和对应的第一索引构造规则值为第一待查询表构造第一索引(rowkey)。第一索引以字典排序的形式存储在Hbase数据库中。
步骤S150,通过待查询对象和第一索引在Hbase数据库中的第一待查询表中进行数据查询得到结果集,结果集包括行记录,行记录用于保存查询数据。
本实施例中,通过上述构造的第一索引为第一待查询对象中的扫描器属性设置startRowkey和stopRowkey。扫描器属性以构造的第一索引为依据在Hbase数据库中对应的第一待查询表中进行数据查询。对第一待查询表进行数据查询后将得到查询数据,该查询数据以行记录的形式保存在结果集中。
上述实现Hbase数据库实时查询的方法,通过获取SQL语言形式的结构化查询语言文本,对结构化查询语言文本进行解析得到查询元素,将查询元素封装成第一待查询表对应的待查询对象,通过待查询对象为第一待查询表构造第一索引,通过待查询对象和构造的第一索引从Hbase数据库中的第一待查询表中查询数据,实现了结构化查询语言文本对Hbase数据库进行实时查询的功能。
上述方法用户不需要关心索引是如何构造的,甚至对Hbase数据库完全陌生的情况下也能通过结构化查询语言文本从Hbase数据库中实时查询相关数据,用户可以将时间和精力集中在业务逻辑的开发上,提高了开发效率。
如图2所示,在一个实施例中,步骤S150之后,实现Hbase数据库实时查询的方法还包括:
步骤S220,从查询元素中提取连接条件,根据连接条件得到与当前查询表连接的下一待查询表。
本实施例中,连接条件存在于解析得到的若干个查询元素中。结构化查询语言文本对多个表进行连接查询时,通过对结构化查询语言文本进行解析,以获取到表之间的连接条件,即join条件。根据连接条件就能获取到当前查询表的下一待查询表。例如,table1join table2on table1_user=table2_user。通过对结构化查询语句的解析就能得到连接条件为table1_user=table2_user,table1即为当前的查询表,table2即为当前查询表的下一待查询表。
步骤S230,将查询元素封装成下一待查询表对应的下一待查询对象。
本实施例中,将多表查询的结构化查询语言文本解析后得到下一待查询表对应的查询元素。下一待查询对象中包括下一待查询表名、列名以及连接条件等属性。同时下一待查询对象中还包括对下一待查询表进行数据查询的属性。例如,扫描器(scan)属性,扫描器属性包括过滤器(filters)属性。
通过对扫描器属性赋值就可以在Hbase数据库中进行数据查询。通过为扫描器属性中的过滤器属性设置参数,在数据查询时对不符合查询条件的数据进行过滤。
步骤S240,根据下一待查询对象为下一待查询表构造下一索引。
本实施例中,获取下一待查询对象中的连接条件,根据连接条件和结果集中的行记录得到下一索引构造条件,通过下一索引构造条件依次从下一索引构造规则中获取下一索引构造条件对应的下一索引构造规则值。下一索引构造规则预先存储于配置文件,通过配置文件就能获得。根据查询条件和对应的下一索引构造规则值为下一待查询表构造下一索引(rowkey)。下一索引以字典排序的形式存储在Hbase数据库中。
步骤S250,通过下一待查询对象和下一索引在Hbase数据库中的下一待查询表中进行数据查询得到行记录,并将行记录更新至结果集。
本实施例中,上述构造的下一索引为下一待查询对象中的扫描器属性设置startRowkey和stopRowkey。扫描器属性以构造的下一索引为依据在Hbase数据库中对应的下一待查询表中进行数据查询。例如,下一待查询表的数量为N个,查询的过程是先查询第一待查询表中的行记录,然后根据连接条件查询下一待查询表中的行记录直到第N个待查询表被遍历查询完。
进一步的,将对下一待查询表中进行数据查询的行记录更新到结果集中。更新的过程为:判断查询得到的行记录是否为空,若是,则结果集中对应的行记录都不符合查询条件,将该行记录从结果集中移除。若否,则将查询得到的行记录保存到结果集中。上述对行结果集进行更新的步骤,实现了结构化查询语言文本对Hbase数据库多表连接的实时查询功能。
如图3所示,在一个实施例中,步骤S240包括:
步骤S241,读取结果集中行记录的行值,根据行值和连接条件得到下一索引构造条件。
本实施例中,结果集中保存了待查询表之前已经进行连表查询获取的行值。根据连接条件中的列名从行记录的行值中得到下一索引构造条件。例如当前待查询的表为第N个表,之前已经进行查询的表为第1个表至N-1个表。根据连接条件中的列名从第一个表至第N-1个表中的查询结果行记录的行值中获取第N个待查询表的下一索引构造条件。
步骤S242,根据下一索引构造条件和预置的下一索引构造规则为下一待查询表构造下一索引。
本实施例中,根据下一索引构造条件从预置的下一索引构造规则中读取对应的下一索引构造规则值。下一索引构造规则值根据下一索引构造条件为下一待查询表构造下一索引。预置的下一索引构造规则事先存储在配置文件中,通过配置文件即可获取。
下面结合具体数据表说明下一索引的构造过程。例如:table1索引构造规则是:_uid+_plat,列集合为{_uid,_plat,_content}。table2索引构造规则是:_plat,列集合为{_uid,_plat,_content}。对table1join table2on table1._plat=table2._plat查询过程是将符合table1表条件的数据查询出来,然后根据table1的数据以及table2索引构造规则构造出下一索引,下一索引构造规则中的_plat值可以从table1中获取。
如图4所示,在一个实施例中,下一索引包括起始值和结束值,步骤S242包括:
步骤S2421,根据下一索引构造条件确定下一索引的构造范围。
步骤S2423,根据下一索引的构造范围和预置的下一索引构造规则为下一待查询表构造下一索引的起始值和结束值。
本实施例中,下一索引的构造范围是指扫描器对下一待查询表中进行数据查询的范围值。根据下一索引构造条件即能确定下一索引的构造范围。下一索引构造规则根据下一索引的构造范围为下一索引构造起始值startRowkey和结束值stopRowkey。
具体的,根据下一索引构造条件,从下一索引构造规则中依次取出对应的值。若下一索引构造条件中只有一个值,那么下一索引的起始值和结束值都是该值;若下一索引构造条件只是大于一个值的范围,那么该值是下一索引的起始值,下一索引的结束值则以字典符中最大一个填充为固定长度的字符串;若下一索引构造条件只是小于一个值的范围,那么该值是下一索引的结束值,下一索引的开始值则以字典符中最小一个填充为固定长度的字符串。
如图5所示,在一个实施例中,步骤S250之后,该方法还包括:
步骤S260,将结果集嵌套展示于界面中。
本实施例中,数据查询完后得到的结果集以嵌套数据的形式向用户展示出来。展示界面如图6所示,主界面值只显示第一个表中的数据,嵌套界面则显示对应的嵌套数据,通过触发界面中的嵌套数据即可查看嵌套数据对应的查询数据。索引构造规则将界面中的索引值固定为具有相同长度的字符串。以嵌套形式展示查询数据使得数据展示结构清晰方便用户查看。
如图7所示,下面结合一个具体的实施例来详细描述执行结构化查询语言文本时,对Hbase数据库进行查询的过程。具体过程如下:
根据封装的对象获取第一待查询表符合查询条件数据,将数据以行记录的形式保存在结果集中。根据数据表的连接条件得到第二待查询表,根据第二待查询表对应的待查询对象和构造的下一索引从第二待查询表中获取相应的第一行记录并将该第一行记录更新至结果集中;根据连接条件得到第三待查询表,获取第第三待查询表中的第一行记录并将该第一行记录更新至结果集中;依次循环直到获取到第n待查询表中的第一行记录并将该记录更新至结果集中。所有待查询表中的第一行记录构成了更新后的结果集中的第一行记录。
第二行记录的获取跟上面的过程一致,直到所有的待查询表都被遍历查询完最终得到结果集,该结果集就是上述结构化查询语言文本对Hbase数据库进行查询的结果。行记录更新过程中若某个待查询表中的某条行记录为空,则删除结果集中对应的行记录。例如,当查询第n待查询表时,出现第m条行记录为空,将删除结果集中对应的第m条行记录。
如图8所示,在一个实施例中,一种实现Hbase数据库实时查询的系统包括语句获取模块110、语句解析模块120、第一对象封装模块130、第一索引构造模块140和第一查询模块150。
语句获取模块110,用于获取结构化查询语言文本。
本实施例中,语句获取模块110获取用户输入的结构化查询语言(StructuredQuery Language,简称SQL)文本,结构化查询语言文本是对Hbase数据库进行数据查询的查询语句。
语句解析模块120,用于解析结构化查询语言文本得到查询元素,查询元素包括第一待查询表。
本实施例中,语句解析模块120根据结构化查询语言的语法将获取到的结构化查询语言文本拆分为若干个查询元素。例如,一个结构化查询语言文本为:“select姓名,生日from table1where学号=201012323”。通过拆分可以得到列名为姓名、生日两列,第一待查询表为table1,查询条件为学号=201012323。
具体的,可以利用正则表达式对结构化查询语言文本进行拆分,通过正则表达式将结构化查询语言文本中的各个查询元素解析出来。解析出来的查询元素包括:第一待查询表、列名以及查询条件等。
进一步的,在对Hbase数据库中的多个表进行查询时,多表连接查询的结构化查询语言中的查询元素将较为复杂,例如,多个表进行连接查询时,解析得到的查询元素中,列名还包括了where条件列名、select查询列名、join条件列名。
第一对象封装模块130,用于将查询元素封装成第一待查询表对应的待查询对象。
本实施例中,结构化查询语言文本在当前所进行的Hbase数据库查询是单表查询,解析得到查询元素将不包括连接表名和连接条件。结构化查询语言文本对Hbase数据库进行的数据查询中,所查询的表可能是一个或者多个,其中,所查询的第一个表即为第一待查询表,该第一待查询表可为当前所进行的数据查询中查询的唯一一个表,也可以是所查询的多个表中首次查询的表。
第一待查询表是通过上述解析结构化查询语言文本确定的。每一个待查询表都对应了一个待查询对象。待查询对象中包括待查询表名、列名以及查询条件属性。同时待查询对象中还包括对第一待查询表进行数据查询的属性,例如,扫描器(scan)属性,扫描器属性包括过滤器(filters)属性。
通过对扫描器属性赋值就可以在Hbase数据库中进行数据查询。通过为扫描器属性中的过滤器属性设置参数,在数据查询时对不符合查询条件的数据进行过滤。
由于Hbase数据库是采用字节数组对数据进行存储的,因此将待查询对象中的属性转化为字节类型的数据,再将转化后的数据以字节数组的形式进行存储。
第一索引构造模块140,用于根据待查询对象为第一待查询表构造第一索引。
本实施例中,第一索引构造模块140获取上述待查询对象中的查询条件,上述查询条件即为第一索引构造条件。通过第一索引构造条件依次从第一索引构造规则中获取第一索引构造条件对应的第一索引构造规则值,第一索引构造规则预先存储于配置文件,通过配置文件就能获得。根据第一索引构造条件和对应的第一索引构造规则值为第一待查询表构造第一索引(rowkey)。第一索引以字典排序的形式存储在Hbase数据库中。
第一查询模块150,用于通过待查询对象和第一索引在Hbase数据库中的第一待查询表中进行数据查询得到结果集,结果集包括行记录,行记录用于保存查询数据。
本实施例中,第一查询模块150通过上述构造的第一索引为第一待查询对象中的扫描器属性设置startRowkey和stopRowkey。扫描器属性以构造的第一索引为依据在Hbase数据库中对应的第一待查询表中进行数据查询。对第一待查询表进行数据查询后将得到查询数据,该查询数据以行记录的形式保存在结果集中。
上述实现Hbase数据库实时查询的系统,通过获取SQL语言形式的结构化查询语言文本,对结构化查询语言文本进行解析得到查询元素,将查询元素封装成第一待查询表对应的待查询对象,通过待查询对象为第一待查询表构造第一索引,通过待查询对象和构造的第一索引从Hbase数据库中的第一待查询表中查询数据,实现了结构化查询语言文本对Hbase数据库进行实时查询的功能。
上述系统用户不需要关心索引是如何构造的,甚至对Hbase数据库完全陌生的情况下也能通过结构化查询语言文本从Hbase数据库中实时查询相关数据,用户可以将时间和精力集中在业务逻辑的开发上,提高了开发效率。
如图9所示,在一个实施例中,实现Hbase数据库实时查询的系统还包括:
第二待查询表获取模块220,用于从查询元素中提取连接条件,根据连接条件得到与当前查询表连接的下一待查询表。
本实施例中,连接条件存在于解析得到的若干个查询元素中。结构化查询语言文本对多个表进行连接查询时,通过对结构化查询语言文本进行解析,以获取到表之间的连接条件,即join条件。根据连接条件就能获取到当前查询表的下一待查询表。例如,table1join table2on table1_user=table2_user。通过对结构化查询语句的解析就能得到连接条件为table1_user=table2_user,table1即为当前的查询表,table2即为当前查询表的下一待查询表。
第二对象封装模块230,用于将查询元素封装成下一待查询表对应的下一待查询对象。
本实施例中,将多表查询的结构化查询语言文本解析后得到下一待查询表对应的查询元素。下一待查询对象中包括下一待查询表名、列名以及连接条件等属性。同时下一待查询对象中还包括对下一待查询表中进行数据查询的属性。例如,扫描器(scan)属性,扫描器属性包括过滤器(filters)属性。
第二对象封装模块230通过对扫描器属性赋值就可以在Hbase数据库中进行数据查询。通过为扫描器属性中的过滤器属性设置参数,在数据查询时对不符合查询条件的数据进行过滤。
第二索引构造模块240,用于根据下一待查询对象为下一待查询表构造下一索引。
本实施例中,第二索引构造模块240获取下一待查询对象中的连接条件,根据连接条件和结果集中的行记录得到下一索引构造条件,通过下一索引构造条件依次从下一索引构造规则中获取下一索引构造条件对应的下一索引构造规则值。下一索引构造规则预先存储于配置文件,通过配置文件就能获得。根据查询条件和对应的下一索引构造规则值为下一待查询表构造下一索引(rowkey)。下一索引以字典排序的形式存储在Hbase数据库中。
第二查询模块250,用于通过下一待查询对象和下一索引在Hbase数据库中的下一待查询表中进行数据查询得到行记录,并将行记录更新至结果集。
本实施例中,上述构造的下一索引为下一待查询对象中的扫描器属性设置startRowkey和stopRowkey。扫描器属性以构造的下一索引为依据在Hbase数据库中对应的下一待查询表中进行数据查询。例如,下一待查询表的数量为N个,查询的过程是先查询第一待查询表中的行记录,然后根据连接条件查询下一待查询表中的行记录直到第N个待查询表被遍历查询完。
进一步的,将对下一待查询表中进行数据查询的行记录更新到结果集中。更新的过程为:判断查询得到的行记录是否为空,若是,则结果集中对应的行记录都将不符合查询条件,将该行记录从结果集中移除。若否,则将查询得到的行记录保存到结果集中。上述对行结果集进行更新的步骤,实现了结构化查询语言文本对Hbase数据库多表连接的实时查询功能。
如图10所示,在一个实施例中,第二索引构造模块240包括:条件获取单元241,下一索引构造单元242。
条件获取单元241,用于根据行记录结果集中的行值和连接条件得到下一索引构造条件。
本实施例中,结果集中保存了待查询表之前已经进行连表查询获取的行值。根据连接条件中的列名从行记录的行值中得到下一索引构造条件。例如当前待查询的表为第N个表,之前已经进行查询的表为第1个表至N-1个表。根据连接条件中的列名从第一个表至第N-1个表中的查询结果行记录的行值中获取第N个待查询表的下一索引构造条件。
下一索引构造单元242,用于根据下一索引构造条件和预置的下一索引构造规则为下一待查询表构造下一索引。
本实施例中,下一索引构造单元242根据下一索引构造条件从预置的下一索引构造规则中读取对应的下一索引构造规则值。下一索引构造规则值根据下一索引构造条件为下一待查询表构造下一索引。预置的下一索引构造规则事先存储在配置文件中,通过配置文件即可获取。
下面结合具体数据表说明下一索引的构造过程。例如:table1索引构造规则是:_uid+_plat,列集合为{_uid,_plat,_content}。table2索引构造规则是:_plat,列集合为{_uid,_plat,_content}。对table1join table2on table1._plat=table2._plat查询过程是将符合table1表条件的数据查询出来,然后根据table1的数据以及table2索引构造规则构造出下一索引,下一索引构造规则中的_plat值可以从table1中获取。
如图11所示,在一个实施例中,下一索引包括起始值和结束值,下一索引构造单元242包括:
确定索引范围单元2421,用于根据下一索引构造条件确定下一索引的构造
范围。
获取下一索引值单元2423,用于根据下一索引的构造范围和预置的下一索引构造规则得到下一待查询表对应下一索引的起始值和结束值。
本实施例中,下一索引的构造范围是指扫描器对下一待查询表中进行数据查询的范围值。根据下一索引构造条件即能确定下一索引的构造范围。下一索引构造规则根据下一索引的构造范围为下一索引构造起始值startRowkey和结束值stopRowkey。
具体的,根据下一索引构造条件,从下一索引构造规则中依次取出对应的值。若下一索引构造条件中只有一个值,那么下一索引的起始值和结束值都是该值;若下一索引构造条件只是大于一个值的范围,那么该值是下一索引的起始值,下一索引的结束值则以字典符中最大一个填充为固定长度的字符串;若下一索引构造条件只是小于一个值的范围,那么该值是下一索引的结束值,下一索引的开始值则以字典符中最小一个填充为固定长度的字符串。
如图12所示,在一个实施例中,实现Hbase数据库实时查询的系统还包括:
数据展示模块260,用于将结果集嵌套展示于界面中。
本实施例中,数据查询完后得到的结果集以嵌套数据的形式向用户展示出来。展示界面如图6所示,主界面值只显示第一个表中的数据,嵌套界面则显示对应的嵌套数据,通过触发界面中的嵌套数据即可查看嵌套数据对应的查询数据。下一索引构造规则将界面中的下一索引值固定为具有相同长度的字符串。以嵌套形式展示查询数据使得数据展示结构清晰方便用户查看。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种实现Hbase数据库实时查询的方法,所述方法包括:
获取结构化查询语言文本;
解析所述结构化查询语言文本得到查询元素,所述待查询元素包括第一待查询表;
将所述查询元素封装成第一待查询表对应的待查询对象;
根据所述待查询对象为所述第一待查询表构造第一索引;
通过所述待查询对象和所述第一索引在Hbase数据库中的第一待查询表中进行数据查询得到结果集,所述结果集包括行记录,所述行记录用于保存查询数据。
2.根据权利要求1所述的方法,其特征在于,所述通过所述待查询对象和所述第一索引在Hbase数据库中的第一待查询表中进行数据查询得到结果集的步骤之后,所述方法还包括:
从所述查询元素中提取连接条件,根据所述连接条件得到与当前查询表连接的下一待查询表;
将所述查询元素封装成下一待查询表对应的下一待查询对象;
根据所述下一待查询对象为所述下一待查询表构造下一索引;
通过所述下一待查询对象和所述下一索引在Hbase数据库中的所述下一待查询表中进行数据查询得到行记录,并将所述行记录更新至所述结果集。
3.根据权利要求2所述的方法,其特征在于,所述根据所述下一待查询对象为所述下一待查询表构造下一索引的步骤为:
读取所述结果集中行记录的行值,根据所述行值和所述连接条件得到下一索引构造条件;
根据所述下一索引构造条件和预置的下一索引构造规则为所述下一待查询表构造下一索引。
4.根据权利要求3所述的方法,其特征在于,所述下一索引包括起始值和结束值;所述根据所述下一索引构造条件和预置的下一索引构造规则为所述下一待查询表构造下一索引的步骤为:
根据下一索引构造条件确定下一索引的构造范围;
根据所述下一索引的构造范围和所述预置的下一索引构造规则得到下一待查询表对应下一索引的起始值和结束值。
5.根据权利要求2所述的方法,其特征在于,所述通过所述下一待查询对象和所述下一索引在Hbase数据库中的所述下一待查询表中进行数据查询得到行记录,并将所述行记录更新至所述结果集的步骤之后,所述方法还包括:将所述结果集嵌套展示于界面中。
6.一种实现Hbase数据库实时查询的系统,所述系统包括:
语句获取模块,用于获取结构化查询语言文本;
语句解析模块,用于解析所述结构化查询语言文本得到查询元素,所述待查询元素包括第一待查询表;第一对象封装模块,用于将所述查询元素封装成第一待查询表对应的待查询对象;
第一索引构造模块,用于根据所述待查询对象为所述第一待查询表构造第一索引;
第一查询模块,用于通过所述待查询对象和所述第一索引在Hbase数据库中的第一待查询表中进行数据查询得到结果集,所述结果集包括行记录,所述行记录用于保存查询数据。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括:
第二待查询表获取模块,用于从所述查询元素中提取连接条件,根据所述连接条件得到与当前查询表连接的下一待查询表;
第二对象封装模块,用于将所述查询元素封装成下一待查询表对应的下一待查询对象;
第二索引构造模块,用于根据所述下一待查询对象为所述下一待查询表构造下一索引;
第二查询模块,用于通过所述下一待查询对象和所述下一索引在Hbase数据库中的所述下一待查询表中进行数据查询得到行记录,并将所述行记录更新至所述结果集。
8.根据权利要求7所述的系统,其特征在于,所述第二索引构造模块包括:
条件获取单元,用于根据所述行记录结果集中的行值和连接条件得到下一索引构造条件;
下一索引构造单元,用于根据所述下一索引构造条件和预置的下一索引构造规则为所述下一待查询表构造下一索引。
9.根据权利要求8所述的系统,其特征在于,所述下一索引包括起始值和结束值;所述下一索引构造单元包括:
确定索引范围单元,用于根据下一索引构造条件确定下一索引的构造范围;
获取下一索引值单元,用于根据所述下一索引的构造范围和所述预置的下一索引构造规则得到下一待查询表对应下一索引的起始值和结束值。
10.根据权利要求7所述的系统,其特在于,所述系统还包括:
数据展示模块,用于将所述结果集嵌套展示于界面中。
CN201310571306.8A 2013-11-14 2013-11-14 实现Hbase数据库实时查询的方法和系统 Active CN104636389B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310571306.8A CN104636389B (zh) 2013-11-14 2013-11-14 实现Hbase数据库实时查询的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310571306.8A CN104636389B (zh) 2013-11-14 2013-11-14 实现Hbase数据库实时查询的方法和系统

Publications (2)

Publication Number Publication Date
CN104636389A true CN104636389A (zh) 2015-05-20
CN104636389B CN104636389B (zh) 2018-03-27

Family

ID=53215152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310571306.8A Active CN104636389B (zh) 2013-11-14 2013-11-14 实现Hbase数据库实时查询的方法和系统

Country Status (1)

Country Link
CN (1) CN104636389B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204974A (zh) * 2015-09-29 2015-12-30 北京京东尚科信息技术有限公司 监控服务器的方法和系统
CN106528674A (zh) * 2016-10-31 2017-03-22 厦门服云信息科技有限公司 基于Hbase行健的高性能查询方法和装置
CN106649483A (zh) * 2016-10-08 2017-05-10 浪潮软件股份有限公司 一种数据动态查询的方法及装置
CN106909671A (zh) * 2017-02-28 2017-06-30 湖南蚁坊软件股份有限公司 一种NoSQL数据库条件查询的方法及系统
CN107016400A (zh) * 2015-12-31 2017-08-04 达索系统公司 训练集的评估
CN107193857A (zh) * 2016-03-15 2017-09-22 阿里巴巴集团控股有限公司 一种用于数据库遍历的方法与设备
CN109271451A (zh) * 2018-10-12 2019-01-25 武汉达梦数据库有限公司 一种数据库外部链接的提取方法
CN109299110A (zh) * 2018-11-09 2019-02-01 东软集团股份有限公司 数据查询方法、装置、存储介质和电子设备
CN111488379A (zh) * 2020-04-17 2020-08-04 焦点科技股份有限公司 一种优化Hbase大数据查询的方法
CN114764406A (zh) * 2021-01-12 2022-07-19 中国联合网络通信集团有限公司 一种数据库查询方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102323947A (zh) * 2011-09-05 2012-01-18 东北大学 环形架构数据库上预连接表的生成方法
CN102521405A (zh) * 2011-12-26 2012-06-27 中国科学院计算技术研究所 支持高速加载的海量结构化数据存储、查询方法和系统
US20130103658A1 (en) * 2011-10-19 2013-04-25 Vmware, Inc. Time series data mapping into a key-value database
CN103186651A (zh) * 2011-12-31 2013-07-03 中国移动通信集团公司 一种分布式关系数据库及其建立、查询方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102323947A (zh) * 2011-09-05 2012-01-18 东北大学 环形架构数据库上预连接表的生成方法
US20130103658A1 (en) * 2011-10-19 2013-04-25 Vmware, Inc. Time series data mapping into a key-value database
CN102521405A (zh) * 2011-12-26 2012-06-27 中国科学院计算技术研究所 支持高速加载的海量结构化数据存储、查询方法和系统
CN103186651A (zh) * 2011-12-31 2013-07-03 中国移动通信集团公司 一种分布式关系数据库及其建立、查询方法和装置

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204974B (zh) * 2015-09-29 2018-09-14 北京京东尚科信息技术有限公司 监控服务器的方法和系统
CN105204974A (zh) * 2015-09-29 2015-12-30 北京京东尚科信息技术有限公司 监控服务器的方法和系统
CN107016400A (zh) * 2015-12-31 2017-08-04 达索系统公司 训练集的评估
CN107016400B (zh) * 2015-12-31 2023-01-24 达索系统公司 训练集的评估
CN107193857B (zh) * 2016-03-15 2021-01-01 阿里巴巴集团控股有限公司 一种用于数据库遍历的方法与设备
CN107193857A (zh) * 2016-03-15 2017-09-22 阿里巴巴集团控股有限公司 一种用于数据库遍历的方法与设备
CN106649483A (zh) * 2016-10-08 2017-05-10 浪潮软件股份有限公司 一种数据动态查询的方法及装置
CN106528674A (zh) * 2016-10-31 2017-03-22 厦门服云信息科技有限公司 基于Hbase行健的高性能查询方法和装置
CN106528674B (zh) * 2016-10-31 2019-10-01 厦门服云信息科技有限公司 基于Hbase行健的高性能查询方法和装置
CN106909671A (zh) * 2017-02-28 2017-06-30 湖南蚁坊软件股份有限公司 一种NoSQL数据库条件查询的方法及系统
CN109271451A (zh) * 2018-10-12 2019-01-25 武汉达梦数据库有限公司 一种数据库外部链接的提取方法
CN109299110A (zh) * 2018-11-09 2019-02-01 东软集团股份有限公司 数据查询方法、装置、存储介质和电子设备
CN111488379B (zh) * 2020-04-17 2022-07-19 焦点科技股份有限公司 一种优化Hbase大数据查询的方法
CN111488379A (zh) * 2020-04-17 2020-08-04 焦点科技股份有限公司 一种优化Hbase大数据查询的方法
CN114764406A (zh) * 2021-01-12 2022-07-19 中国联合网络通信集团有限公司 一种数据库查询方法及相关装置
CN114764406B (zh) * 2021-01-12 2023-01-31 中国联合网络通信集团有限公司 一种数据库查询方法及相关装置

Also Published As

Publication number Publication date
CN104636389B (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
CN104636389A (zh) 实现Hbase数据库实时查询的方法和系统
CN109299102B (zh) 一种基于Elastcisearch的HBase二级索引系统及方法
CN107291807B (zh) 一种基于图遍历的sparql查询优化方法
EP2605158B1 (en) Mixed join of row and column database tables in native orientation
CN106326361B (zh) 一种基于HBase数据库的数据查询方法及装置
CN106326429A (zh) 一种基于solr的Hbase秒级查询方案
CN104252536B (zh) 一种基于hbase的上网日志数据查询方法及装置
US20110093486A1 (en) Data query method, data query system and computer readable and writable recording medium
CN104462501A (zh) 基于结构化数据的知识图谱构建方法和装置
CN101196900A (zh) 一种基于元数据的信息检索方法
CN106777343A (zh) 增量分布式索引系统和方法
CN104731945A (zh) 一种基于HBase的全文检索方法及装置
CN104915383A (zh) 一种通用数据库访问中自动适配对象的方法
CN111506621A (zh) 一种数据统计方法及装置
CN103123650A (zh) 一种基于整数映射的xml数据库全文索引方法
CN107291964A (zh) 一种基于HBase实现模糊查询的方法
CN111177303B (zh) 基于phoenix的Hbase二级全文索引方法及系统
CN105279281A (zh) 一种物联网数据存取方法
CN103177046B (zh) 一种基于行存储数据库的数据处理方法和设备
CN102945270B (zh) 并行化分布式网络舆情数据管理方法及系统
CN101261645B (zh) 一种获取多层信息的方法和装置
Haque et al. Distributed RDF triple store using hbase and hive
CN102831146A (zh) 数据库子串过滤索引系统及其构建、查询方法
CN103886093A (zh) 电子商务搜索引擎同义词的处理方法
CN104301182A (zh) 一种慢速网站访问异常信息的查询方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant