CN110297881A - 用于实现二级索引的方法和计算机可读介质 - Google Patents

用于实现二级索引的方法和计算机可读介质 Download PDF

Info

Publication number
CN110297881A
CN110297881A CN201910611837.2A CN201910611837A CN110297881A CN 110297881 A CN110297881 A CN 110297881A CN 201910611837 A CN201910611837 A CN 201910611837A CN 110297881 A CN110297881 A CN 110297881A
Authority
CN
China
Prior art keywords
data
write
hbase
major key
secondary index
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
Application number
CN201910611837.2A
Other languages
English (en)
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.)
Beijing Youyuan Online Network Technology Co Ltd
Original Assignee
Beijing Youyuan Online Network Technology 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 Beijing Youyuan Online Network Technology Co Ltd filed Critical Beijing Youyuan Online Network Technology Co Ltd
Priority to CN201910611837.2A priority Critical patent/CN110297881A/zh
Publication of CN110297881A publication Critical patent/CN110297881A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution

Landscapes

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

Abstract

本公开的实施例公开了一种用于实现二级索引的方法。该方法的一具体实施方式包括:第一装置检测对HBase数据库的写入操作;响应于检测到该写入操作,提取与该写入操作对应的写入信息,该写入信息包括写入数据和数据拟存位置信息;将该写入信息写入本地可持久化队列;第二装置以循环的方式从本地可持久化队列中提取数据;生成所提取的数据的主键;将所提取的数据和主键写入搜索应用服务器中,以便上述搜索应用服务器根据所提取的数据和主键生成用于针对HBase数据库的数据库操作的二级索引。该实施方式实现了HBase数据库的二级索引从而丰富了HBase数据库的查询方式。

Description

用于实现二级索引的方法和计算机可读介质
技术领域
本公开的实施例涉及计算机技术领域,具体涉及一种用于HBase数据库实现二级索引的方法。
背景技术
HBase是Apache的Hadoop项目的子项目。HBase是一个分布式的、面向列的开源数据库,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase与一般的关系数据库通常存在如下不同点:第一,它是一个适合于非结构化数据存储的数据库;第二,HBase基于列的而不是基于行的模式。HBase数据库的查询方式很单一,无法进行复杂的多表查询。
发明内容
第一方面,本公开的一些实施例提供了一种用于实现二级索引的方法,该方法包括:第一装置检测对HBase数据库的写入操作;第一装置响应于检测到上述写入操作,提取与上述写入操作对应的写入信息,上述写入信息包括写入数据和数据拟存位置信息;第一装置将上述写入信息写入本地可持久化队列;第二装置以循环的方式从本地可持久化队列中提取数据;第二装置生成所提取的数据的主键;第二装置将所提取的数据和主键写入搜索应用服务器中,以便上述搜索应用服务器根据所提取的数据和主键生成用于针对HBase数据库的数据库操作的二级索引。与现有技术相比,丰富了HBase数据库的查询。
在一些实施例中,该方法还包括:第一装置将上述写入数据写入搜索应用服务器中。
在一些实施例中,第一装置将上述写入数据写入搜索应用服务器中,包括:当第一装置检测到了对HBase数据库的写入操作,上述第一装置调用上述HBase数据库的触发器将上述写入数据写入搜索应用服务器中。
在一些实施例中,上述第二装置以循环的方式从本地可持久化队列中提取数据,包括:第二装置按写入顺序提取上述本地可持久化队列中的数据。
在一些实施例中,第二装置将所提取的数据和主键写入搜索应用服务器中,包括:第二装置将所提取的数据和主键定时或/和定量地写入搜索应用服务器中。
在一些实施例中,第二装置将所提取的数据和主键写入搜索应用服务器中,还包括:第二装置确定写入操作是否成功;响应于确定写入操作不成功,确定不成功原因;响应于确定不成功原因是网络原因,则在预定时间段之后上述第二装置再次执行所提取的数据和主键的写入操作。
在一些实施例中,第二装置确定本地持久化队列里的数据是否需要生成HBase二级索引;响应于确定需要生成HBase二级索引的数据,确定上述数据是否需要Solr集群全文索引来生成HBase二级索引;响应于确定需要Solr集群全文索引来生成HBase二级索引的数据,则上述第二装置将所提取的数据和主键写入Solr集群。
在一些实施例中,确定上述数据拟存位置信息在上述HBase数据库中是否存在;响应于确定不存在,在上述HBase数据库中创建与上述数据拟存位置信息对应的数据结构,以及向显示终端发送上述数据结构的创建信息。
第二方面,本公开实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现如第一方面中任一的方法。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本公开的一些实施例可以应用于其中的示例性系统的架构图;
图2是根据本公开的实现二级索引的方法的一些实施例的流程图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关申请,而非对该申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关申请相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本公开的一些实施例的用于实现二级索引的方法的示例性系统架构100。
如图1所示,系统架构100可以包括第一装置101、第二装置102,网络103和搜索应用服务器104。网络103用以在第一装置101、第二装置102和搜索应用服务器104之间提供通信链路的介质。网络103可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
第一装置101可以对HBase数据库进行监控,例如检测对HBase数据库的写入操作。第一装置101响应于检测到上述写入操作,提取写入信息以及写入本地可持久化队列。第二装置102从上述本地可持久化队列中提取数据以及生成所提取的数据的主键,再将所提取的数据和主键写入搜索应用服务器104中。
第一装置101、第二装置102可以是硬件,也可以是软件。当第一装置101、第二装置102为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、膝上型便携计算机和台式计算机等等。当第一装置101、第二装置102为软件时,可以安装在上述所列举的电子设备中。其可以实现成例如用来提供分布式服务的多个软件或软件模块,也可以实现成单个软件或软件模块。再例如,第一装置101可以是属于一个进程的线程,而第二装置102则可以是属于上述进程的另外一个线程。在此不做具体限定。
搜索应用服务器104可以是提供各种服务,例如根据第二装置102写入的数据和主键生成用于数据库操作的二级索引。
需要说明的是,本公开的实施例所提供的用于实现二级索引的方法可以由第一装置101、第二装置102执行。
继续参考图2,示出了根据本公开的实现二级索引的方法的一些实施例的流程图200。该实现二级索引的方法,包括以下步骤:
步骤201,第一装置检测对HBase数据库的写入操作。
在一些实施例中,第一装置可以检测对HBase数据库的写入操作。在实践中,数据库的写入操作一般是通过SQL(Structured Query Language,结构化查询语言)语句来进行的。以如下SQL语句为例:“INSERT INTO tablename(field1,field2)VALUES(value1,value2)”。其中,上述语句中的“INSERT”对应写入操作。因此,第一装置只要检测到SQL语句中“INSERT”,就可以检测到的数据库的写入操作。
步骤202,第一装置响应于检测到写入操作,提取与写入操作对应的写入信息,写入信息包括写入数据和数据拟存位置信息。
在一些实施例中,第一装置响应于检测到上述写入操作,提取与上述写入操作对应的写入信息。上述写入信息包括写入数据和数据拟存位置信息。以步骤201中的SQL语句为例,写入信息通常是SQL语句。提取与写入操作对应的写入信息就是提取SQL语句。上述数据拟存位置信息是写入数据拟存放在的HBase数据库的位置。因此,第一装置只要提取SQL语句,就可以提取到与写入操作对应的写入信息。其中,“tablename(field1,field2)”对应数据拟存位置信息,“value1,value2”对应写入数据。
步骤203,第一装置将写入信息写入本地可持久化队列。
在一些实施例中,第一装置将上述写入信息写入本地可持久化队列。作为示例,在Java开发中,我们在处理消息推送系统时经常会遇到,数据推送方和数据接收方处理速度不一致的问题。本地可持久化队列是一个高性能、基于磁盘持久存储的队列消息系统。本地可持久化队列可以解决数据丢失和数据过多占用大量内存导致系统崩溃这两个问题。
步骤204,第二装置以循环的方式从本地可持久化队列中提取数据。
在一些实施例中,第二装置以循环的方式从本地可持久化队列中提取数据。作为示例,当本地可持久化队列中有多条数据时,第二装置每次提取一条数据,直到数据提取结束。
步骤205,第二装置生成所提取的数据的主键。
在一些实施例中,第二装置生成所提取的数据的主键。作为示例,根据上述第二装置提取的数据,给提取的数据按照提取的顺序添加一个主键。例如,主键可以是从0开始依次递增的数。
步骤206,第二装置将所提取的数据和主键写入搜索应用服务器中。
在一些实施例中,第二装置将所提取的数据和主键写入搜索应用服务器中。其中,搜索应用服务器有多种。例如,搜索引擎Slor、ES(ElasticSearch,分布式全文搜索引擎)。在此基础上,以便上述搜索应用服务器根据所提取的数据和主键生成用于针对HBase数据库的数据库操作的二级索引。上述数据库操作包括以下至少一项:添加操作、修改操作、删除操作、查询操作。二级索引的叶子节点不保存记录中的所有列,其叶子节点保存的是<健值,(记录)地址>。在这里键值对应主键,(记录)地址对应提取的数据。
在一些实施例的一些可选的实现方式中,该方法还包括:第一装置将上述写入数据写入搜索应用服务器中。
在一些实施例的一些可选的实现方式中,第一装置将上述写入数据写入搜索应用服务器中,包括:当第一装置检测到了对HBase数据库的写入操作,上述第一装置调用上述HBase数据库的触发器将上述写入数据写入搜索应用服务器中。作为示例:当添加数据时,触发器触发添加方法将记录同步写入搜索应用服务器。HBase数据库提供的触发器通常是observer。其中,Observer类似于传统数据库中的触发器,当发生某些事件的时候这类协处理器会被Server端调用。
在一些实施例的一些可选的实现方式中,上述第二装置以循环的方式从本地可持久化队列中提取数据,包括:第二装置按写入顺序提取上述本地可持久化队列中的数据。
在一些实施例的一些可选的实现方式中,第二装置将所提取的数据和主键写入搜索应用服务器中,包括:第二装置将所提取的数据和主键定时或/和定量地写入搜索应用服务器中。作为示例:当删除数据时,会回调方法,在此方法里把需要删除的数据放到本地队列里面,有个定制任务会自动把此队列里的数据发往搜索应用服务器进行同步删除。
在一些实施例的一些可选的实现方式中,第二装置将所提取的数据和主键写入搜索应用服务器中,还包括:第二装置确定写入操作是否成功;响应于确定写入操作不成功,确定不成功原因;响应于确定不成功原因是网络原因,则在预定时间段之后上述第二装置再次执行所提取的数据和主键的写入操作。其中,网络原因可能是网络自身问题(例如,是否高峰期使用、本身带宽、运营商差异等有关)、设备问题(例如,路由、猫、电脑是否支持到那么高的网络速率,一般都支持。设备驱动等是否安装到位等)和人为原因(例如,操作不当引起的网络故障)。
在一些实施例的一些可选的实现方式中,第二装置确定本地持久化队列里的数据是否需要生成HBase二级索引;响应于确定需要生成HBase二级索引的数据,确定上述数据是否需要Solr集群全文索引来生成HBase二级索引;响应于确定需要Solr集群全文索引来生成HBase二级索引的数据,则上述第二装置将所提取的数据和主键写入Solr集群。其中,solr是Apache下的一个顶级开源项目,用的是Java开发的,是基于Lucene的全文搜索服务器。Solr需要运行在一个Servlet容器中,Solr4.10.3版本jdk使用1.7以上,Solr默认提供Jetty(Java写的Servlet容器)、Tomcat等这些在servlet容器中构成Solr集群。
在一些实施例的一些可选的实现方式中,确定上述数据拟存位置信息在上述HBase数据库中是否存在;响应于确定不存在,在上述HBase数据库中创建与上述数据拟存位置信息对应的数据结构,以及向显示终端发送上述数据结构的创建信息。作为示例:以步骤201中的SQL语句为例,数据拟存位置信息是“tablename(field1,field2)”,若在上述HBase数据库中不存在表“tablename”,则显示终端上会显示创建表的提示信息。
以上描述仅为本公开的一些较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (9)

1.一种用于实现二级索引的方法,包括:
第一装置检测对HBase数据库的写入操作;
第一装置响应于检测到所述写入操作,提取与所述写入操作对应的写入信息,所述写入信息包括写入数据和数据拟存位置信息;
第一装置将所述写入信息写入本地可持久化队列;
第二装置以循环的方式从所述本地可持久化队列中提取数据;
第二装置生成所提取的数据的主键;
第二装置将所提取的数据和主键写入搜索应用服务器中,以便所述搜索应用服务器根据所提取的数据和主键生成用于针对HBase数据库的数据库操作的二级索引。
2.根据权利要求1所述的方法,其中,所述方法还包括:
所述第一装置将所述写入数据写入搜索应用服务器中。
3.根据权利要求2所述的方法,其中,所述第一装置将所述写入数据写入搜索应用服务器中,包括:
第一装置响应于检测到所述写入操作,调用所述HBase数据库的触发器将所述写入数据写入搜索应用服务器中。
4.根据权利要求1所述的方法,其中,所述第二装置以循环的方式从本地可持久化队列中提取数据,包括:
所述第二装置按写入顺序提取所述本地可持久化队列中的数据。
5.根据权利要求1所述的方法,其中,所述第二装置将所提取的数据和主键写入搜索应用服务器中,包括:
所述第二装置将所提取的数据和主键定时或/和定量地写入搜索应用服务器中。
6.根据权利要求1所述的方法,其中,所述第二装置将所提取的数据和主键写入搜索应用服务器中,还包括:
所述第二装置确定写入操作是否成功;
响应于确定写入操作不成功,确定不成功原因;
响应于确定不成功原因是网络原因,则在预定时间段之后所述第二装置再次执行所提取的数据和主键的写入操作。
7.根据权利要求1所述的方法,其中,所述方法还包括:
所述第二装置确定本地持久化队列里的数据是否需要生成HBase二级索引;
响应于确定需要生成HBase二级索引的数据,确定所述数据是否需要Solr集群全文索引来生成HBase二级索引;
响应于确定需要Solr集群全文索引来生成HBase二级索引的数据,则所述第二装置将所提取的数据和主键写入Solr集群。
8.根据权利要求1所述的方法,其中,所述方法还包括:
确定所述数据拟存位置信息在所述HBase数据库中是否存在;
响应于确定不存在,在所述HBase数据库中创建与所述数据拟存位置信息对应的数据结构,以及向显示终端发送所述数据结构的创建信息。
9.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
CN201910611837.2A 2019-07-08 2019-07-08 用于实现二级索引的方法和计算机可读介质 Pending CN110297881A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910611837.2A CN110297881A (zh) 2019-07-08 2019-07-08 用于实现二级索引的方法和计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910611837.2A CN110297881A (zh) 2019-07-08 2019-07-08 用于实现二级索引的方法和计算机可读介质

Publications (1)

Publication Number Publication Date
CN110297881A true CN110297881A (zh) 2019-10-01

Family

ID=68030669

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910611837.2A Pending CN110297881A (zh) 2019-07-08 2019-07-08 用于实现二级索引的方法和计算机可读介质

Country Status (1)

Country Link
CN (1) CN110297881A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113868251A (zh) * 2021-09-24 2021-12-31 北京百度网讯科技有限公司 分布式数据库的全局二级索引方法及其装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109697200A (zh) * 2018-12-18 2019-04-30 厦门商集网络科技有限责任公司 一种基于Solr的HBase二级索引方法及设备
CN109800222A (zh) * 2018-12-11 2019-05-24 中国科学院信息工程研究所 一种HBase二级索引自适应优化方法和系统
CN109918472A (zh) * 2019-02-27 2019-06-21 北京百度网讯科技有限公司 存储和查询数据的方法、装置、设备和介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800222A (zh) * 2018-12-11 2019-05-24 中国科学院信息工程研究所 一种HBase二级索引自适应优化方法和系统
CN109697200A (zh) * 2018-12-18 2019-04-30 厦门商集网络科技有限责任公司 一种基于Solr的HBase二级索引方法及设备
CN109918472A (zh) * 2019-02-27 2019-06-21 北京百度网讯科技有限公司 存储和查询数据的方法、装置、设备和介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
周伟等: "HBase分布式二级索引通用方案研究", 《软件导刊》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113868251A (zh) * 2021-09-24 2021-12-31 北京百度网讯科技有限公司 分布式数据库的全局二级索引方法及其装置

Similar Documents

Publication Publication Date Title
US11194779B2 (en) Generating an index for a table in a database background
CN107506451B (zh) 用于数据交互的异常信息监控方法及装置
US8938430B2 (en) Intelligent data archiving
CN111241203B (zh) Hive数据仓库同步方法、系统、设备及存储介质
CN109492053B (zh) 用于访问数据的方法和装置
JP2014523024A (ja) 増分データの抽出
US10089334B2 (en) Grouping of database objects
US10567557B2 (en) Automatically adjusting timestamps from remote systems based on time zone differences
WO2018205981A1 (zh) 元数据管理
US9390111B2 (en) Database insert with deferred materialization
US8965879B2 (en) Unique join data caching method
US10846291B2 (en) Transforming a user-defined table function to a derived table in a database management system
CN110297881A (zh) 用于实现二级索引的方法和计算机可读介质
CN115329011A (zh) 数据模型的构建方法、数据查询的方法、装置及存储介质
JP2020129359A (ja) 知識ベースを管理するための方法、装置、設備及び媒体
US9286349B2 (en) Dynamic search system
CA3048699C (en) Join pattern agnostic aggregate computation in database query operations
CN112765100A (zh) 查询日志的方法、系统、计算设备和介质
CN113553320B (zh) 数据质量监控方法及装置
US20240078221A1 (en) Systems and methods of modeling and querying dynamic temporal graph on massive parallel graph processing and storage engine
US20080307395A1 (en) Providing Registration of a Communication
US11948024B2 (en) Automated dynamic payload testing of OData APIs
CN114254081B (zh) 企业大数据搜索系统、方法及电子设备
CN109710673B (zh) 作品处理方法、装置、设备和介质
US10929356B2 (en) Detection of hidden data co-occurrence relationships

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20191001

RJ01 Rejection of invention patent application after publication