CN107038162B - 基于数据库日志的实时数据查询方法和系统 - Google Patents

基于数据库日志的实时数据查询方法和系统 Download PDF

Info

Publication number
CN107038162B
CN107038162B CN201610075127.9A CN201610075127A CN107038162B CN 107038162 B CN107038162 B CN 107038162B CN 201610075127 A CN201610075127 A CN 201610075127A CN 107038162 B CN107038162 B CN 107038162B
Authority
CN
China
Prior art keywords
data
real
query
time
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.)
Active
Application number
CN201610075127.9A
Other languages
English (en)
Other versions
CN107038162A (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.)
Beijing Didi Infinity Technology and Development Co Ltd
Original Assignee
Beijing Didi Infinity Technology and Development 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 Didi Infinity Technology and Development Co Ltd filed Critical Beijing Didi Infinity Technology and Development Co Ltd
Priority to CN201610075127.9A priority Critical patent/CN107038162B/zh
Publication of CN107038162A publication Critical patent/CN107038162A/zh
Application granted granted Critical
Publication of CN107038162B publication Critical patent/CN107038162B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2477Temporal data queries
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

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

Abstract

本发明涉及基于数据库日志的实时数据查询方法和系统,包括:获取主数据库的增量日志信息;对所述增量日志信息进行解析,得到增量数据信息,并将所述增量数据信息存储在kafka消息队列中;通过druid从所述kafka消息队列中读取所述增量数据信息,并根据预定义的索引规则构建所述增量数据信息的实时查询索引;利用所述实时查询索引进行实时数据查询。通过采用本发明所提供的基于数据库日志的实时数据查询方法,以主数据库的binlog日志作为数据源,使用kafka作为消息队列,使用druid作为分布式索引和查询引擎进行实时数据查询,从而降低数据收集和数据查询分析的延迟,数据查询耗时从原来的数分钟降低到了毫秒级别,提升了用户体验。

Description

基于数据库日志的实时数据查询方法和系统
技术领域
本发明涉及数据通信技术领域,特别涉及一种基于数据库日志的实时数据查询方法和系统。
背景技术
Binlog是数据库增量日志,数据库增量日志由各种数据库表操作事件组成,一个数据库增量日志的位点(例如mysql-bin.000002,15846289)对应一个数据库表操作事件。数据库表操作事件包括插入操作、更新操作和删除操作三种类型。通过数据库增量日志可以对数据库进行数据恢复以及数据复制。在数据库表中,列是具有相同数据类型的数据的集合,数据库主要的增量数据存储在列事件类型中,这些数据可以通过表映射事件(例如Table_map_event)里提供的信息:列类型、列长度等被正确的解析出来。
Mysql是一种开放源代码的关系型数据库管理系统(RDBMS),Mysql数据库系统使用最常用的数据库管理语言--结构化查询语言(Structured Quevy Language,SQL)进行数据库管理。数据可以从数据库里通过SQL线程查询获得。在数据收集阶段,对于存储在Mysql数据库的数据源,使用php脚本定时从Mysql数据库查询。在数据分析阶段,通过SQL语句进行查询分析,然后将查询条件作为主键,查询结果作为值,存储到KV键值数据库。
然而现有通过从数据库里查询分析数据的方式存在一些缺陷,首先,数据库本身的性能容易成为瓶颈,由于查询数据量较大、查询指标多,如果每秒中都对Mysql数据库进行查询,会对线上数据库系统造成很大的查询压力,数据库的查询性能达不到1秒内返回查询结果的需求。只能几分钟对数据库进行一次查询,数据收集阶段延迟至少1分钟以上。且数据查询分析耗时较高。尤其是对于一些需要join(联合查询)的情况,数据从分析到可被用户查询,通常耗时需要数十秒。
发明内容
本发明所要解决的技术问题是提供一种基于数据库日志的实时数据查询方法和系统,克服现有技术中数据库数据查询延迟、耗时较高的问题。
为此目的,本发明提出了一种基于数据库日志的实时数据查询方法,包括:
获取主数据库的增量日志信息;
对所述增量日志信息进行解析,得到增量数据信息,并将所述增量数据信息存储在kafka消息队列中;
通过druid从所述kafka消息队列中读取所述增量数据信息,并根据预定义的索引规则构建所述增量数据信息的实时查询索引;
利用所述实时查询索引进行实时数据查询。
其中较优的,所述获取主数据库的增量日志信息之后还包括:将所述主数据库的增量日志信息同步传输至从库。
其中较优的,所述通过druid从所述kafka消息队列中读取所述增量数据信息,并根据预定义的索引规则构建所述增量数据信息的实时查询索引具体包括:
通过主动数据拉取模式,从所述kafka消息队列中实时读取所述增量数据信息;
将所述增量数据信息存储在druid时间序列数据库;
在所述druid时间序列数据库中,通过实时节点根据预定义的索引规则构建所述增量数据信息的实时查询索引,并对所述实时查询索引进行压缩。
其中较优的,该方法还包括:
将所述实时查询索引存储至第一存储单元中,其中,所述第一存储单元的存储容量受限;
按照预设时间间隔,间歇性地将所述第一存储单元中的所述实时查询索引持久化存储至第二存储单元。
其中较优的,该方法还包括:
合并所述第二存储单元中持久化存储的实时查询索引,构成数据块,并将所述数据块存储至第三存储单元;
利用所述数据块通过历史节点进行历史数据查询。
其中较优的,所述通过所述合并的实时查询索引进行历史数据查询之前还包括:
将所述第三存储单元中的所述数据块同步至历史节点;其中,所述数据块不包括已经同步的数据块;
通过zookeeper声明所述数据块的处理信息。
其中较优的,该方法还包括:
通过代理节点向客户端发送合并后的所述实时数据和所述历史数据。
另一方面,本发明还提供了一种基于数据库日志的实时数据查询系统,包括:
日志获取单元,用于获取主数据库的增量日志信息;
日志解析单元,用于对所述增量日志信息进行解析,得到增量数据信息,并将所述增量数据信息存储在kafka消息队列中;
索引构建单元,用于通过druid从所述kafka消息队列中读取所述增量数据信息,并根据预定义的索引规则构建所述增量数据信息的实时查询索引;
数据查询单元,用于利用所述实时查询索引进行实时数据查询。
其中较优的,该系统还包括:日志同步单元,用于将所述主数据库的增量日志信息同步传输至从库。
其中较优的,所述索引构建单元包括:数据读取单元、数据存储单元和索引建立单元;
所述数据读取单元,用于通过主动数据拉取模式,从所述kafka消息队列中实时读取所述增量数据信息;
所述数据存储单元,用于将所述增量数据信息存储在druid时间序列数据库;
所述索引建立单元,用于在所述druid时间序列数据库中,通过实时节点根据预定义的索引规则构建所述增量数据信息的实时查询索引,并对所述实时查询索引进行压缩。
其中较优的,该系统还包括:索引存储单元;
所述索引存储单元,用于将所述实时查询索引存储至第一存储单元中,其中,所述第一存储单元的存储容量受限;
还用于按照预设时间间隔,间歇性地将所述第一存储单元中的所述实时查询索引持久化存储至第二存储单元。
其中较优的,所述索引存储单元还用于:合并所述第二存储单元中持久化存储的实时查询索引,构成数据块,并将所述数据块存储至第三存储单元;
所述数据查询单元还用于:利用所述数据块通过历史节点进行历史数据查询。
其中较优的,该系统还包括:数据同步单元;
所述数据同步单元,用于将所述第三存储单元中的所述数据块同步至历史节点;其中,所述数据块不包括已经同步的数据块;
还用于通过zookeeper声明所述数据块的处理信息。
其中较优的,该系统还包括:数据返回单元;
所述数据返回单元用于通过代理节点向客户端发送合并后的所述实时数据和所述历史数据。
通过采用本发明所公开的基于数据库日志的实时数据查询方法,以主数据库的binlog日志作为数据源,使用kafka作为消息队列,使用druid作为分布式索引和查询引擎进行实时数据查询,从而降低数据收集和数据查询分析的延迟,数据查询耗时从原来的数分钟降低到了毫秒级别,提升了用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
图1为本发明一实施例提供的基于数据库日志的实时数据查询方法的流程示意图;
图2为本发明一实施例提供的druid集群架构的示意图;
图3为本发明另一实施例提供的基于数据库日志的实时数据查询方法的流程示意图;
图4本发明另一实施例提供的基于数据库日志的实时数据查询系统的框架示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
对于存储在Mysql数据库的数据源,现有技术在进行数据查询分析时,耗时较高,数据统计存在延时,为此,本公开的技术方案旨在实现数据的毫秒级查询。本公开涉及的kafka是一种低延时、高吞吐、分布式的发布订阅消息系统,它可以处理大规模的实时数据流。即使是非常普通的硬件kafka也可以支持每秒数百万的消息。另外,本公开涉及的druid是一个分布式、列存储数据库,用于大数据实时处理的开源分布式系统。本公开涉及的binlog日志是数据库增量日志,任何关于数据库的增加、删除、修改操作,作为一个个“事件”,都可以通过数据库binlog日志实时的记录下来。将binlog日志设置为row(行)模式记录事件信息,这样,数据库中的一条记录从一个状态变为另一个状态的所有字段的变更信息都可以完全地记录下来,为接下来的数据查询分析提供数据基础。
应理解的是,虽然下文中主要针对出租车订单量的查询分析应用,但本公开的实施例并不限于此,其还可适用于其他打车方式(诸如,专车、顺风车、快车等)的订单量的查询分析,亦可包括快件、餐食等需要运输/运送物的订单量的查询以及其他数据查询分析的应用。
图1是本发明基于数据库日志的实时数据查询方法一种实施方式的流程示意图,参照图1,该方法包括:
S101:获取主数据库的增量日志信息;
其中,所述获取主数据库的增量日志信息之后还包括:将所述主数据库的增量日志信息同步传输至从库。这里的主数据库可以是线上mysql主数据库,增量日志信息即binlog日志。本发明将主数据库的增量日志信息同步至从库,避免了数据收集对线上主数据库造成性能方面的影响。
具体的,该主数据库的增量日志信息可以是出租车订单表的binlog日志,将出租车订单表的binlog日志同步到从库,从而避免直接从出租车订单表获取binlog日志,对线上主数据库造成压力。
S102:对所述增量日志信息进行解析,得到增量数据信息,并将所述增量数据信息存储在kafka消息队列中;
具体的,可以在kafka中创建名为order的topic消息队列,然后从从库中获取binlog日志信息,并对binlog日志信息进行解析,将解析后结果按照json格式存储到kafka中order这个topic消息队列。由于kafka可以处理大规模的实时数据流,即使是非常普通的硬件kafka也可以支持每秒数百万的消息。因此,保证了数据收集阶段,可以实现毫秒级的延迟。binlog日志存储的海量信息,通过写入到kafka,为接下来的数据查询提供了高效、可靠的数据源。
具体的,以出租车订单表的binlog日志为例,在kafka消息队列中的存储的解析后的增量数据信息为:
{"timestamp":"2016-01-17T13:38:24",table":"order","optype":"i","key":{"orderid":"9653336151"},"orderid":"9653336151","driverid":"","status":"0","type":"0","distance":"0","createtime":"2016-01-17T13:38:24","channel":"1300","area":"224","bonus":"0"}。
S103:通过druid从所述kafka消息队列中读取所述增量数据信息,并根据预定义的索引规则构建所述增量数据信息的实时查询索引;
需要说明的是,步骤S103具体可以包括以下步骤:
S103-1:通过主动数据拉取模式,从所述kafka消息队列中实时读取所述增量数据信息;
S103-2:将所述增量数据信息存储在druid时间序列数据库;
S103-3:在所述Druid时间序列数据库中,通过实时节点根据预定义的索引规则构建所述增量数据信息的实时查询索引,并对所述实时查询索引进行压缩。
需要解释的是,Druid是一个分布式、列存储数据库,本实施例使用druid作为时间序列数据库,druid的实时节点通过使用基于pull的主动数据拉取模式,从kafka读取order这个topic消息队列,通过bitmap index(位图压缩索引机制)在druid中进行实时索引并提供查询服务,以实现毫秒级的查询响应。
如图2所示,示出了本发明一种实施方式提供的druid集群的架构示意图,一个druid集群包含了许多类型的节点,每个节点用于处理固定的某类事务,整个集群包含了实时节点、历史节点和代理节点。具体的,从kafka消息队列中读取实时数据后,druid的实时节点提供实时数据的索引及查询服务,一个数据库binlog日志的数据源对应一个kafka的topic消息队列,一个kafka的topic消息队列,对应一个druid的实时节点。实时节点内预先封装了数据源的导入和查询功能。实时节点可以对数据进行实时索引,因而可以保证数据立刻可以被查询到。实时节点只处理很小时间段内的数据,超过这个时间段的数据会被转移到其他节点进行处理(历史节点)。实时节点利用zookeeper与druid集群内部的其他节点进行协作、通信。各个节点将自身的状态数据存储到zookeeper。
S104:利用所述实时查询索引进行实时数据查询。
以上是对实时数据的查询,其中较优的,为了实现历史数据的查询,如图3所示,示出了本发明另一实施方式提供的基于数据库日志的实时数据查询方法的流程示意图,该方法包括:步骤S301、S302、S303与步骤S101、S102、S103相同,在此不再赘述。
S304:将所述实时查询索引存储至第一存储单元中,其中,所述第一存储单元的存储容量受限;
S305:按照预设时间间隔,间歇性地将所述第一存储单元中的所述实时查询索引持久化存储至第二存储单元。
S306:所述第二存储单元中持久化存储的实时查询索引,构成数据块,并将所述数据块存储至第三存储单元;
S307:所述数据块通过历史节点进行历史数据查询。
需要说明的是,该第一存储单元可以是内存,该第一存储单元可以是硬盘,该第三存储单元可以是后端存储服务,如HDFS(分布式文件系统)。实时节点对输入的数据流,在内存里,维护着一个索引,索引是随着数据的输入不断的进行增量计算,数据一旦被索引即可被查询到。对于在JVM(堆内存缓冲区)的数据,druid像行存储数据库那样提供查询服务。为了避免堆内存缓冲区溢出,实时节点需要间歇性的将内存索引持久化存储到硬盘上。触发持久化存储的条件有2点:1、固定时间间隔;2、限制内存中存储的最大记录行数。这个持久化进程将内存中的数据转化为列存储格式保存到硬盘上。每个持久化存储的索引是不可变的,并且实时节点会将这些持久化的索引加载到off-heap内存中,以便这些数据可以被查询到。
需要解释的是,每个一段时间,每个实时节点会调度一个后台任务,查找所有本地持久化存储的索引,这个任务会将索引进行合并,并且构造一个不可改变的数据块。这个数据块包含一段时间内所有通过实时节点导入进来的明细数据。在数据转移阶段,实时节点将这些数据块上传到永久的后端存储服务,如HDFS(分布式文件系统)。数据导入、本地持久化存储、合并为数据块、数据转移的过程是一条数据流水线,在此过程中,没有任何数据丢失。
其中较优的,在步骤S404之前还包括:将所述第三存储单元中的所述数据块同步至历史节点;其中,所述数据块不包括已经同步的数据块;通过zookeeper声明所述数据块的处理信息。
具体的,历史节点会从HDFS文件系统上同步数据查询索引,并提供查询服务。在此过程中,1个数据源被分配到了多个历史查询节点,这样,实现了数据的分布式查询,极大的提高了系统响应性能。历史节点预先封装了对不可变的数据块的加载和查询功能。
需要解释的是,在许多真实环境的工作流中,加载到druid集群中的大部分数据是不可变的。因此,在druid集群中,历史节点是主要的工作节点。历史节点按照shared-nothing架构设计并且节点之间没有单点竞争。历史节点之间彼此不了解彼此的情况,使得操作非常简单:仅仅知道对数据块如何加载、删除、提供查询服务。
需要说明的是,与实时节点类似,历史节点也通过zookeeper来声明它的在线状态,加载、删除数据块的指示也被发送到zookeeper,并且包含数据块在HDFS中的存储位置,以及如何解压缩、处理这个数据块。在历史节点从HDFS同步数据块之前,会首先查看本地的缓存信息,看看本地已经存在哪些数据块。如果缓存中没有这个数据块,那么则从HDFS下载该数据块。一旦下载完成,则会在zookeeper中声明这个数据块可被查询。本地缓存允许快速的更新和重新开始。在历史节点启动时,它会首先检查本地缓存,一旦发现存在某些数据块,则立刻提供查询服务。其中,数据块在查询之前必须首先被加载到内存中。因为历史节点只提供对不可变数据块的查询,因此历史节点可以支持读一致性。另外,不可变的数据块可以使并行处理模型变得更为简单,历史节点可以没有阻塞地、并发地对不可变数据块进行扫描、聚合。
其中较优的,该方法还包括:通过代理节点向客户端发送合并后的所述实时数据和所述历史数据。
需要说明的是,代理节点作为历史节点和实时节点的查询路由。代理节点了解zookeeper中的数据块处理信息,知道哪些数据块可以被查询以及数据块存储的位置。代理节点会将查询路由到正确的历史节点和/或实时节点,并在最终返回数据前,对来自历史节点和实时节点的数据进行合并,然后返回完整、精确的数据。
其中,zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
下面将本发明应用于出租车订单量的查询为例,描述druid的索引查询过程。假设druid实时节点于13:37启动并开始提供服务。实时节点接收当前这一小时以及下一小时的出租车订单数据。当从kafka获取到新的订单数据后(如本例中13:38生成的出租车订单数据),实时节点利用zookeeper声明有一个数据块正在提供13:00~14:00的数据查询。每隔1分钟实时节点将内存中的数据导出到硬盘。到13:59,实时节点将会准备接收14:00到15:00的数据。这个时候,实时节点为了准备接受下一段时间的数据,会在内存中生成一个新的索引。同时,实时节点会声明开始提供14:00到15:00范围的数据的查询。实时节点并不立即开始合并13:00到14:00时间段内生成的索引,而是等待一个时间窗口(本例中设置30分钟),尽可能接收13:00到14:00延迟数据。这尽可能的降低了数据丢失的风险。过了这个时间窗口后,实时节点开始将13:00到14:00的所有持久化存储的索引合并,保存到一个不可变的数据块。并且将这个数据块转移到后端HDFS分布式文件存储系统。一旦这个数据块被上传到HDFS,并且等到druid集群内的其他节点(历史节点)可查询了,那么实时节点将会清空所有的13:00到14:00段内的数据,并且声明该实时节点“它不在提供这段时间数据的查询服务了”。而用户可以通过HTTP请求,从代理节点实时查询13:00到14:00之间每秒钟出租车呼叫订单量。
另一方面,如图4所示,为本发明另一实施方式提供的基于数据库日志的实时数据查询系统,该系统包括:
日志获取单元401,用于获取主数据库的增量日志信息;
日志解析单元402,用于对所述增量日志信息进行解析,得到增量数据信息,并将所述增量数据信息存储在kafka消息队列中;
索引构建单元403,用于通过druid从所述kafka消息队列中读取所述增量数据信息,并根据预定义的索引规则构建所述增量数据信息的实时查询索引;
数据查询单元404,用于利用所述实时查询索引进行实时数据查询。
其中较优的,该系统还包括:日志同步单元,用于将所述主数据库的增量日志信息同步传输至从库。
需要说明的是,所述索引构建单元403包括:数据读取单元、数据存储单元和索引建立单元;
所述数据读取单元,用于通过主动数据拉取模式,从所述kafka消息队列中实时读取所述增量数据信息;
所述数据存储单元,用于将所述增量数据信息存储在druid时间序列数据库;
所述索引建立单元,用于在所述druid时间序列数据库中,通过实时节点根据预定义的索引规则构建所述增量数据信息的实时查询索引,并对所述实时查询索引进行压缩。
其中较优的,该系统还包括:索引存储单元;
所述索引存储单元,用于将所述实时查询索引存储至第一存储单元中,其中,所述第一存储单元的存储容量受限;
还用于按照预设时间间隔,间歇性地将所述第一存储单元中的所述实时查询索引持久化存储至第二存储单元。
需要解释的是,所述索引存储单元还用于:合并所述第二存储单元中持久化存储的实时查询索引,构成数据块,并将所述数据块存储至第三存储单元;
所述数据查询单元404还用于:利用所述数据块通过历史节点进行历史数据查询。
其中较优的,该系统还包括:数据同步单元;
所述数据同步单元,用于将所述第三存储单元中的所述数据块同步至历史节点;其中,所述数据块不包括已经同步的数据块;
还用于通过zookeeper声明所述数据块的处理信息。
其中较优的,该系统还包括:数据返回单元;
所述数据返回单元用于通过代理节点向客户端发送合并后的所述实时数据和所述历史数据。
通过采用本发明所公开的基于数据库日志的实时数据查询方法和系统,以mysql数据库的binlog日志作为数据源,使用kafka作为消息队列,使用druid作为分布式索引和查询引擎进行实时数据查询统计,从而降低数据收集和数据查询分析的延迟,数据查询耗时从原来的数分钟降低到了毫秒级别。另外,如果将本发明应用于出租车订单量的查询统计,可以快速将出租车的实时呼叫订单量返回客户端,供用户查看,提升了用户体验。
本领域普通技术人员可以理解:实现上述方法实施例的全部或者部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤。
本发明的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (12)

1.一种基于数据库日志的数据查询方法,其特征在于,包括:
获取主数据库的增量日志信息;
对所述增量日志信息进行解析,得到增量数据信息,并将所述增量数据信息存储在kafka消息队列中;
通过druid从所述kafka消息队列中读取所述增量数据信息,并根据预定义的索引规则构建所述增量数据信息的实时查询索引;
利用所述实时查询索引进行实时数据查询;
所述获取主数据库的增量日志信息之后还包括:将所述主数据库的增量日志信息同步传输至从库,并在所述从库中进行数据查询。
2.根据权利要求1所述的基于数据库日志的数据查询方法,其特征在于,所述通过druid从所述kafka消息队列中读取所述增量数据信息,并根据预定义的索引规则构建所述增量数据信息的实时查询索引具体包括:
通过主动数据拉取模式,从所述kafka消息队列中实时读取所述增量数据信息;
将所述增量数据信息存储在druid时间序列数据库;
在所述druid时间序列数据库中,通过实时节点根据预定义的索引规则构建所述增量数据信息的实时查询索引,并对所述实时查询索引进行压缩。
3.根据权利要求1所述的基于数据库日志的数据查询方法,其特征在于,该方法还包括:
将所述实时查询索引存储至第一存储单元中,其中,所述第一存储单元的存储容量受限;
按照预设时间间隔,间歇性地将所述第一存储单元中的所述实时查询索引持久化存储至第二存储单元。
4.根据权利要求3所述的基于数据库日志的数据查询方法,其特征在于,该方法还包括:
合并所述第二存储单元中持久化存储的实时查询索引,构成数据块,并将所述数据块存储至第三存储单元;
利用所述数据块通过历史节点进行历史数据查询。
5.根据权利要求4所述的基于数据库日志的数据查询方法,其特征在于,所述通过所述合并的实时查询索引进行历史数据查询之前还包括:
将所述第三存储单元中的所述数据块同步至历史节点;其中,所述数据块不包括已经同步的数据块;
通过zookeeper声明所述数据块的处理信息。
6.根据权利要求4或5所述的基于数据库日志的数据查询方法,其特征在于,该方法还包括:
通过代理节点向客户端发送合并后的所述实时数据和所述历史数据。
7.一种基于数据库日志的数据查询系统,其特征在于,包括:
日志获取单元,用于获取主数据库的增量日志信息;
日志解析单元,用于对所述增量日志信息进行解析,得到增量数据信息,并将所述增量数据信息存储在kafka消息队列中;
索引构建单元,用于通过druid从所述kafka消息队列中读取所述增量数据信息,并根据预定义的索引规则构建所述增量数据信息的实时查询索引;
数据查询单元,用于利用所述实时查询索引进行实时数据查询;
日志同步单元,用于将所述主数据库的增量日志信息同步传输至从库,并在所述从库中进行数据查询。
8.根据权利要求7所述的基于数据库日志的数据查询系统,其特征在于,所述索引构建单元包括:数据读取单元、数据存储单元和索引建立单元;
所述数据读取单元,用于通过主动数据拉取模式,从所述kafka消息队列中实时读取所述增量数据信息;
所述数据存储单元,用于将所述增量数据信息存储在druid时间序列数据库;
所述索引建立单元,用于在所述druid时间序列数据库中,通过实时节点根据预定义的索引规则构建所述增量数据信息的实时查询索引,并对所述实时查询索引进行压缩。
9.根据权利要求7所述的基于数据库日志的数据查询系统,其特征在于,该系统还包括:索引存储单元;
所述索引存储单元,用于将所述实时查询索引存储至第一存储单元中,其中,所述第一存储单元的存储容量受限;
还用于按照预设时间间隔,间歇性地将所述第一存储单元中的所述实时查询索引持久化存储至第二存储单元。
10.根据权利要求9所述的基于数据库日志的数据查询系统,其特征在于,
所述索引存储单元还用于:合并所述第二存储单元中持久化存储的实时查询索引,构成数据块,并将所述数据块存储至第三存储单元;
所述数据查询单元还用于:利用所述数据块通过历史节点进行历史数据查询。
11.根据权利要求10所述的基于数据库日志的数据查询系统,其特征在于,该系统还包括:数据同步单元;
所述数据同步单元,用于将所述第三存储单元中的所述数据块同步至历史节点;其中,所述数据块不包括已经同步的数据块;
还用于通过zookeeper声明所述数据块的处理信息。
12.根据权利要求10或11所述的基于数据库日志的数据查询系统,其特征在于,该系统还包括:数据返回单元;
所述数据返回单元用于通过代理节点向客户端发送合并后的所述实时数据和所述历史数据。
CN201610075127.9A 2016-02-03 2016-02-03 基于数据库日志的实时数据查询方法和系统 Active CN107038162B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610075127.9A CN107038162B (zh) 2016-02-03 2016-02-03 基于数据库日志的实时数据查询方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610075127.9A CN107038162B (zh) 2016-02-03 2016-02-03 基于数据库日志的实时数据查询方法和系统

Publications (2)

Publication Number Publication Date
CN107038162A CN107038162A (zh) 2017-08-11
CN107038162B true CN107038162B (zh) 2021-03-02

Family

ID=59532165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610075127.9A Active CN107038162B (zh) 2016-02-03 2016-02-03 基于数据库日志的实时数据查询方法和系统

Country Status (1)

Country Link
CN (1) CN107038162B (zh)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107480260B (zh) * 2017-08-16 2021-02-23 北京奇虎科技有限公司 大数据实时分析方法、装置、计算设备及计算机存储介质
CN107609871B (zh) * 2017-09-07 2021-05-28 携程旅游网络技术(上海)有限公司 支付轨迹重现方法、装置、系统、电子设备、存储介质
CN107870982B (zh) * 2017-10-02 2021-04-23 深圳前海微众银行股份有限公司 数据处理方法、系统和计算机可读存储介质
CN107911462A (zh) * 2017-11-27 2018-04-13 南京信通科技有限责任公司 基于ActiveMQ的大批量数据同步方法
CN109840817A (zh) * 2017-11-27 2019-06-04 北京京东尚科信息技术有限公司 一种查询订单信息的方法和装置
CN108052661B (zh) * 2017-12-27 2021-12-28 广州品唯软件有限公司 分布式环境下的聚合检索的方法、装置及可读存储介质
CN110019345A (zh) * 2017-12-28 2019-07-16 北京京东尚科信息技术有限公司 数据处理方法、装置、系统及介质
CN108427626A (zh) * 2018-01-05 2018-08-21 平安科技(深圳)有限公司 日志文本处理方法、装置及存储介质
CN108418821B (zh) * 2018-03-06 2021-06-18 北京焦点新干线信息技术有限公司 基于Redis与Kafka的线上抢购系统高并发场景处理方法及装置
CN108874558B (zh) * 2018-05-31 2024-04-02 康键信息技术(深圳)有限公司 分布式事务的消息订阅方法、电子装置及可读存储介质
CN108763578B (zh) * 2018-06-07 2023-03-10 腾讯科技(深圳)有限公司 一种索引文件更新的方法以及服务器
CN108920659B (zh) * 2018-07-03 2022-06-07 广州唯品会信息科技有限公司 数据处理系统及其数据处理方法、计算机可读存储介质
CN110691112A (zh) * 2018-07-06 2020-01-14 优信拍(北京)信息科技有限公司 一种数据同步方法,装置及系统
CN109101330A (zh) * 2018-08-06 2018-12-28 百度在线网络技术(北京)有限公司 数据获取方法、装置和系统
CN109284251A (zh) * 2018-08-14 2019-01-29 平安普惠企业管理有限公司 日志管理方法、装置、计算机设备以及存储介质
CN109063196B (zh) * 2018-09-03 2021-08-27 拉扎斯网络科技(上海)有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
US10812355B2 (en) 2018-09-19 2020-10-20 International Business Machines Corporation Record compression for a message system
US10715469B2 (en) 2018-09-19 2020-07-14 International Business Machines Corporation Poisoned message detection system
CN109558417B (zh) * 2018-11-28 2023-08-08 亚信科技(南京)有限公司 一种数据处理方法和系统
CN109783512A (zh) * 2018-12-13 2019-05-21 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质
CN109815028B (zh) * 2018-12-27 2022-02-08 汉海信息技术(上海)有限公司 数据同步的系统、方法、装置和计算机存储介质
CN109710698B (zh) * 2018-12-28 2020-02-21 北京明朝万达科技股份有限公司 一种数据汇聚方法、装置、电子设备及介质
CN111464373A (zh) * 2019-01-18 2020-07-28 苏宁易购集团股份有限公司 一种微服务全链路监控系统及方法
CN109885654A (zh) * 2019-02-01 2019-06-14 天津字节跳动科技有限公司 在线文档修改处理方法和装置
CN110046168B (zh) * 2019-03-28 2021-03-26 南京苏宁软件技术有限公司 一种增量数据一致性实现方法及装置
CN109993439A (zh) * 2019-04-02 2019-07-09 山东浪潮云信息技术有限公司 一种基于政府数据的质量检测方法
CN112052231B (zh) * 2019-06-06 2023-09-26 北京京东振世信息技术有限公司 回传记录的监控方法和监控装置
CN112115163A (zh) * 2019-06-19 2020-12-22 北京京东尚科信息技术有限公司 一种数据聚合方法、装置、存储介质及电子设备
CN110232097A (zh) * 2019-06-21 2019-09-13 北京奇艺世纪科技有限公司 一种数据同步方法及装置
CN110321359B (zh) * 2019-07-05 2023-06-09 浪潮软件集团有限公司 一种基于cmsp的空间数据增量更新方法
CN110442564B (zh) * 2019-07-23 2022-02-08 福建天泉教育科技有限公司 增量数据校验方法、存储介质
CN112307037B (zh) * 2019-07-26 2023-09-22 北京京东振世信息技术有限公司 一种数据同步方法和装置
CN110727694B (zh) * 2019-10-10 2024-01-09 北京字节跳动网络技术有限公司 数据处理方法、装置、电子设备及存储介质
CN110866022A (zh) * 2019-10-24 2020-03-06 贝壳技术有限公司 基于日志文件的数据解析方法、系统及装置
CN111159135A (zh) * 2019-12-23 2020-05-15 五八有限公司 数据处理方法、装置、电子设备及存储介质
CN111221831B (zh) * 2019-12-26 2024-03-29 杭州顺网科技股份有限公司 一种对广告效果数据实时处理的计算系统
CN111225069B (zh) * 2020-03-13 2023-06-20 浙江书香荷马文化有限公司 一种分布式行情数据处理系统及方法
CN111694800B (zh) * 2020-04-30 2023-03-24 武汉达梦数据库股份有限公司 一种提升数据同步性能的方法和数据同步系统
CN113626475A (zh) * 2020-05-07 2021-11-09 青岛奥利普自动化控制系统有限公司 一种基于缓存服务器的数据恢复方法和系统
CN111666344B (zh) * 2020-06-19 2023-05-16 中信银行股份有限公司 异构数据同步方法及装置
CN111723098B (zh) * 2020-06-29 2023-06-30 珠海复旦创新研究院 基于位图索引的日志数据模式查询方法、装置及设备
CN113190426B (zh) * 2020-07-02 2023-10-20 北京睿知图远科技有限公司 一种大数据评分系统稳定性监控方法
CN111930702A (zh) * 2020-08-14 2020-11-13 工银科技有限公司 日志处理方法、装置、系统及介质
CN112162904B (zh) * 2020-09-25 2024-06-18 同程网络科技股份有限公司 订单变更过程整合方法、提取方法、整合装置和提取装置
CN112506964B (zh) * 2020-11-30 2024-05-28 深圳市移卡科技有限公司 数据查询方法、系统及计算机可读存储介质
CN112395360B (zh) * 2020-12-01 2023-06-23 中国联合网络通信集团有限公司 基于非关系型数据库的数据同步方法、设备、装置和介质
CN112307008B (zh) * 2020-12-14 2023-12-08 湖南蚁坊软件股份有限公司 一种Druid压实方法
CN112860649A (zh) * 2021-02-03 2021-05-28 深圳市木浪云数据有限公司 增量生成索引的方法、装置及系统
CN113015203B (zh) * 2021-03-22 2022-08-16 Oppo广东移动通信有限公司 信息获取方法、装置、终端、系统及存储介质
CN113535777B (zh) * 2021-06-24 2023-05-23 上海浦东发展银行股份有限公司 数据库查询方法、装置和系统
CN113672640A (zh) * 2021-06-28 2021-11-19 深圳云之家网络有限公司 数据查询方法、装置、计算机设备和存储介质
CN114116842B (zh) * 2021-11-25 2023-05-19 上海柯林布瑞信息技术有限公司 多维医疗数据实时获取方法、装置、电子设备及存储介质
CN114547199A (zh) * 2022-02-23 2022-05-27 阿维塔科技(重庆)有限公司 数据库增量同步响应方法、装置及计算机可读存储介质
CN114756602A (zh) * 2022-05-19 2022-07-15 上海熵评科技有限公司 实时流式的流程挖掘方法和系统及计算机可读存储介质
CN117931484B (zh) * 2024-03-22 2024-06-14 中国人民解放军国防科技大学 基于滑动窗口的消息消费方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838867A (zh) * 2014-03-20 2014-06-04 网宿科技股份有限公司 日志处理方法和装置
CN105159723A (zh) * 2015-09-14 2015-12-16 四川长虹电器股份有限公司 中央空调数据采集方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103838867A (zh) * 2014-03-20 2014-06-04 网宿科技股份有限公司 日志处理方法和装置
CN105159723A (zh) * 2015-09-14 2015-12-16 四川长虹电器股份有限公司 中央空调数据采集方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Druid 实时数据分析存储系统;beta-o-;《OSCHINA》;20151113;第1页 *

Also Published As

Publication number Publication date
CN107038162A (zh) 2017-08-11

Similar Documents

Publication Publication Date Title
CN107038162B (zh) 基于数据库日志的实时数据查询方法和系统
US11829360B2 (en) Database workload capture and replay
US10176208B2 (en) Processing time series data from multiple sensors
EP3602341B1 (en) Data replication system
US9582528B2 (en) System and method for operating a big-data platform
CN107506451B (zh) 用于数据交互的异常信息监控方法及装置
US20160004734A1 (en) Secure data isolation in a multi-tenant historization system
CN104423960A (zh) 一种项目持续集成的方法及系统
US11893041B2 (en) Data synchronization between a source database system and target database system
CN108170832B (zh) 一种面向工业大数据的异构数据库的监控系统及监控方法
CN113282611B (zh) 一种流数据同步的方法、装置、计算机设备及存储介质
CN107943618B (zh) 仿真系统的数据快速恢复方法及存储介质
CN116009428A (zh) 基于流式计算引擎的工业数据监控系统和方法、介质
CN114416703A (zh) 数据完整性自动监控方法、装置、设备及介质
CN107330098A (zh) 一种自定义报表的查询方法、计算节点及查询系统
CN107491526A (zh) 一种实现数据库同步的系统及其方法
CN112069264A (zh) 异构数据源采集方法、装置、电子设备及存储介质
CN116010452A (zh) 基于流式计算引擎的工业数据处理系统和方法、介质
CN114676199A (zh) 一种同步方法、同步系统、计算机设备和存储介质
CN114661823A (zh) 数据同步的方法、装置、电子设备及可读存储介质
CN113220727A (zh) 基于云平台的电力物联数据可视化展现系统及其展现方法
US20150317330A1 (en) Storing data to multiple storage location types in a distributed historization system
CN115510139A (zh) 数据查询方法和装置
CN115221116A (zh) 一种数据写入方法、装置、设备及可读存储介质
CN114297211A (zh) 一种数据在线分析系统、方法、设备及存储介质

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201208

Address after: 100193, No. 34, building No. 8, West flourishing road, Haidian District, Beijing

Applicant after: BEIJING DIDI INFINITY TECHNOLOGY AND DEVELOPMENT Co.,Ltd.

Address before: Office building D comprehensive service district Nangang Industrial Zone 300480 in Tianjin Binhai Economic and Technological Development Zone of Tianjin City 2 219-23 room

Applicant before: Didi (China) Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant