CN110245134A - 一种应用于搜索服务的增量同步方法 - Google Patents

一种应用于搜索服务的增量同步方法 Download PDF

Info

Publication number
CN110245134A
CN110245134A CN201910343582.6A CN201910343582A CN110245134A CN 110245134 A CN110245134 A CN 110245134A CN 201910343582 A CN201910343582 A CN 201910343582A CN 110245134 A CN110245134 A CN 110245134A
Authority
CN
China
Prior art keywords
data
change data
key
title
database
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
CN201910343582.6A
Other languages
English (en)
Other versions
CN110245134B (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.)
PETRIFACTION CENTURY INFORMATION TECHNOLOGY Corp
Original Assignee
PETRIFACTION CENTURY INFORMATION TECHNOLOGY Corp
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 PETRIFACTION CENTURY INFORMATION TECHNOLOGY Corp filed Critical PETRIFACTION CENTURY INFORMATION TECHNOLOGY Corp
Priority to CN201910343582.6A priority Critical patent/CN110245134B/zh
Publication of CN110245134A publication Critical patent/CN110245134A/zh
Application granted granted Critical
Publication of CN110245134B publication Critical patent/CN110245134B/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/2228Indexing structures
    • G06F16/2255Hash tables
    • 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/2282Tablespace storage structures; Management thereof
    • 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/2365Ensuring data consistency and integrity
    • 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/2455Query execution
    • G06F16/24552Database cache management
    • 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
    • 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/953Querying, e.g. by the use of web search engines

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)
  • Computational Linguistics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种应用于搜索服务的增量同步方法。该方法能够将应用系统中的海量不同数据源类型、不同中心库下的多表关联的实时变化的复杂业务数据以高效的速度增量同步至搜索引擎,具有很好的应用前景。

Description

一种应用于搜索服务的增量同步方法
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种应用于搜索服务的增量同步方法。
背景技术
随着信息技术的迅速发展,各应用系统的数据量与日俱增。在一些大型应用系统中,常常是大数据分布式存储方式,因此,在对用户所需的信息进行查询时,通常需要对不同中心库下的不同数据库做表关联查询,且检索及筛选条件比较复杂,从而导致数据库查询性能较差、响应超时等问题。因此,如何从海量数据中对用户所需的信息进行快速查询和分词检索,是各应用系统在建设过程中迫切需要解决的问题。搜索引擎技术由于可以进行数据的实时查询和分词检索,无疑成为解决上述问题的优选方案。但是,现有的数据传输服务只能实现对应用系统的数据库中的单表数据的变更进行实时监控并同步至搜索引擎的索引中,不能实现对多表关联的复杂索引结构进行数据的实时变更传输。
现有的数据传输服务只能实现对应用系统的数据库中的单表数据的变更进行实时监控并同步至搜索引擎的索引中,并不能实现对多表关联的复杂索引结构进行数据的实时变更传输,具体说明如下:
单表数据变更增量传输,是指通过数据传输服务监控数据库中的各个表的数据的变化,当数据库中的某个表的数据发生增删改操作时,数据传输服务能够马上获取到该条变更数据,并将该条变更数据同步写入到搜索引擎的对应索引中。例如,数据库中有一个订单表,与该订单表对应的搜索引擎的索引为订单索引。当订单表中新增一条订单数据时,数据传输服务能够马上监控到订单表中该条新增的订单数据,并将该条新增的订单数据写入到搜索引擎的订单索引中,以使数据库中的数据与搜索引擎中的数据保持一致。但是,为满足业务需求,一个索引的配置结构通常由跨数据库的多表进行关联组成。例如,用户在将数据库中的订单表中的数据实时增量同步至搜索引擎的订单索引后,便可对搜索引擎的订单索引进行分词检索,查询订单信息。但是,用户在进行订单查询时,通常也需要将该订单下的商品、物流等相关信息查询出来。由于在搜索引擎中不同索引之间不能做关联查询,因此,用户在将订单数据、该订单下的商品数据和物流数据同步至搜索引擎前,需要对上述数据做关联处理,即,用户以订单表作为主表,以商品表和物流表作为附表,通过关联键将主表中的数据和附表中的数据进行关联,形成包含订单、商品、物流等完善的JSON格式的数据信息,然后将该数据信息同步至搜索引擎的订单索引中。如此,用户在搜索引擎的订单索引中查询检索订单信息时,也会将订单的商品、物流等信息一并查出。
由此可见,现有的数据传输服务只能实现对应用系统的数据库中的单表数据的变更进行实时监控并同步至搜索引擎的索引中,并不能实现对多表关联的复杂索引结构进行数据的实时变更传输。因此,如何将应用系统中的海量不同数据源类型、不同中心库下的多表关联的复杂业务数据以高效的速度增量同步至搜索引擎,成为业界急需解决的技术难题。
为了解决上述技术问题,本发明提供了一种应用于搜索服务的增量同步方法。
发明内容
本发明所要解决的技术问题是:现有的数据传输服务只能实现对应用系统的数据库中的单表数据的变更进行实时监控并同步至搜索引擎的索引中,并不能实现对多表关联的复杂索引结构进行数据的实时变更传输。因此,现有的数据传输服务不能将应用系统中的海量不同数据源类型、不同中心库下的多表关联的复杂业务数据以高效的速度增量同步至搜索引擎。
为了解决上述技术问题,本发明提供了一种应用于搜索服务的增量同步方法,该方法包括:
获取数据库中各个表的变更数据及其相关信息,其中,该变更数据的相关信息包括:与每条变更数据对应的数据库的名称和该数据库中的表的名称、与每条变更数据对应的变更类型、以及每条变更数据在变更前后的所有字段值和主键值;
分别以第一预设存储方式和第二预设存储方式,将数据库中各个表的变更数据以键值对的方式存储到缓存器中;
利用哈希函数对与每条变更数据对应的数据库中的表的名称和每条变更数据在变更后的主键值进行处理,得到多组变更数据,其中,每组变更数据包括至少一条变更数据;
针对每组变更数据中的每条变更数据,依次执行以下操作:
根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表之外的其余各表的数据,其中,该其余各表的数据包括:与该表对应的一级表的名称和主键值、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的名称和主键值;
利用哈希函数,对与该表对应的索引配置信息中包括的搜索引擎索引名称、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的主键值进行处理,得到多组变更数据,其中,每组变更数据包括至少一条变更数据;
针对每组变更数据中的每条变更数据,依次执行以下操作:
根据与当前变更数据对应的数据库中的表的名称,查询与该表对应的索引配置信息;
根据与该表对应的索引配置信息,从缓存器中查询利用与该表对应的索引配置信息中包括的搜索引擎索引名称配置的多个表的数据,并将该多个表的数据转换为JSON格式数据,调用搜索引擎的接口将该JSON格式数据写入到搜索引擎中,从而实现了从数据库到搜索引擎的增量同步。
在本发明一优选实施例中,以第一预设存储方式将数据库中各个表的变更数据以键值对的方式存储到缓存器中,包括:
根据当前变更数据的相关信息,将当前变更数据以键值对的方式存储到缓存器中,其中,键值对中的键为与当前变更数据对应的数据库中的表的名称和当前变更数据在变更后的主键值,键值对中的值为由当前变更数据在变更后的所有字段值组成的JSON格式数据。
在本发明一优选实施例中,以第二预设存储方式将数据库中各个表的变更数据以键值对的方式存储到缓存器中,包括:
根据与当前变更数据对应的数据库中的表的名称,查询与该表对应的索引配置信息,其中,与该表对应的索引配置信息包括:与该表对应的搜索引擎索引名称、利用该搜索引擎索引名称配置的多个表的数目、所述多个表中的每个表的名称、所述多个表中的每两个表之间的关联关系和关联键、所述多个表中的每个表配置的字段、以及与所述多个表中的每个表对应的数据源配置名称;
根据与该表对应的索引配置信息,将当前变更数据以键值对的方式存储到缓存器中,其中,键值对中的键为该表的名称、以及该表与其上游表之间的关联键的字段名和字段值,键值对中的值为与该关联键的字段值对应的主键值的集合。
在本发明一优选实施例中,利用哈希函数对与每条变更数据对应的数据库中的表的名称和每条变更数据在变更后的主键值进行处理,得到多组变更数据,包括:
利用哈希函数对与每条变更数据对应的数据库中的表的名称和每条变更数据在变更后的主键值进行处理,得到与每条变更数据对应的哈希值,其中,该哈希值为字符串形式;
根据与每条变更数据对应的哈希值的末位元素,将哈希值的末位元素相同的变更数据分为一组,得到多组变更数据。
在本发明一优选实施例中,根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表之外的其余各表的数据,包括:
针对每组变更数据中的每条变更数据,依次执行以下操作:
根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的一级表的数据;
利用哈希函数对与每条变更数据对应的数据库中的表对应的一级表的名称和主键值进行处理,得到多组变更数据,其中,每组变更数据包括至少一条变更数据;
针对每组变更数据中的每条变更数据,依次执行以下操作:
根据与当前变更数据对应的数据库中的表的名称,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据。
在本发明一优选实施例中,根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的一级表的数据,包括:
步骤一、根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,以与当前变更数据对应的数据库的名称、与当前变更数据对应的数据库中的表的名称、以及该表与其上游表之间的关联键的字段名和字段值作为键,在缓存器中查询该上游表的主键值;
步骤二、在于缓存器中查询到该上游表的主键值的情况下,以与该上游表对应的数据库的名称、该上游表的名称、以及该上游表的主键值作为键,在缓存器中查询该上游表的数据;
在于缓存器中未查询到该上游表的主键值的情况下,在数据库中查询该上游表的主键值,其中,查询表名为:该上游表的名称,查询条件为:与当前变更数据对应的数据库中的表与其上游表之间的关联键的字段名等于与当前变更数据对应的关联键的字段值;
以与该上游表对应的数据库的名称、该上游表的名称、以及该上游表的主键值作为键,在数据库中查询该上游表的数据,并分别以第三预设存储方式和第四预设存储方式,将该上游表的数据以键值对的方式存储到缓存器中,其中,在第三预设存储方式中,键值对中的键为与该上游表对应的数据库的名称、该上游表的名称、以及该上游表的主键值,键值对中的值为由该上游表的所有字段值组成的JSON格式数据,在第四预设存储方式中,键值对中的键为与该上游表对应的数据库的名称、该上游表的名称、以及与当前变更数据对应的数据库中的表与其上游表之间的关联键的字段名和字段值,键值对中的值为与该关联键的字段值对应的主键值的集合;
以该上游表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤一至步骤二,直至得到与当前变更数据对应的数据库中的表对应的一级表的数据为止。
在本发明一优选实施例中,利用哈希函数对与每条变更数据对应的数据库中的表对应的一级表的名称和主键值进行处理,得到多组变更数据,包括:
利用哈希函数对与每条变更数据对应的数据库中的表对应的一级表的名称和主键值进行处理,得到与每条变更数据对应的哈希值,其中,该哈希值为字符串形式;
根据与每条变更数据对应的哈希值的末位元素,将哈希值的末位元素相同的变更数据分为一组,得到多组变更数据。
在本发明一优选实施例中,根据与当前变更数据对应的数据库中的表的名称,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据,包括:
根据与当前变更数据对应的数据库中的表的名称,查询与该表对应的索引配置信息;
根据与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据。
在本发明一优选实施例中,根据与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据,包括:
在执行完步骤一和步骤二之后,执行以下步骤:
步骤三、根据与当前变更数据对应的数据库中的表对应的上游表、和与当前变更数据对应的数据库中的表位于同一层级上的、且除该表之外的其余表之间的关联配置,以该其余表的名称、以及该上游表与该其余表之间的关联键的字段名和字段值作为键,在缓存器中查询该其余表的主键值;
步骤四、在于缓存器中查询到该其余表的主键值的情况下,以与该其余表对应的数据库的名称、该其余表的名称、以及该其余表的主键值作为键,在缓存器中查询该其余表的数据;
在于缓存器中未查询到该其余表中的某个表的主键值的情况下,在数据库中查询该表的主键值,其中,查询表名为:该表的名称,查询条件为:该表与该上游表之间的关联键的字段名等于与该表中的变更数据对应的关联键的字段值;
以与该表对应的数据库的名称、该表的名称、以及该表的主键值作为键,在数据库中查询该表的数据,并通过第五预设存储方式将该表的数据以键值对的方式存储到缓存器中,其中,在第五预设存储方式中,键值对中的键为与该表对应的数据库的名称、该表的名称、以及该表与该上游表之间的关联键的字段名和字段值,键值对中的值为由该表的所有字段值组成的JSON格式数据;
以该上游表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤一至步骤四,直至得到与当前变更数据对应的数据库中的表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据为止。
在本发明一优选实施例中,利用哈希函数,对与该表对应的索引配置信息中包括的搜索引擎索引名称、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的主键值进行处理,得到多组变更数据,包括:
利用哈希函数,对与当前变更数据对应的数据库中的表对应的索引配置信息中包括的搜索引擎索引名称、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的主键值进行处理,得到与当前变更数据对应的哈希值,其中,该哈希值为字符串形式;
根据与每条变更数据对应的哈希值的末位元素,将哈希值的末位元素相同的变更数据分为一组,得到多组变更数据。
与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:
应用本发明实施例提供的应用于搜索服务的增量同步方法,能够将应用系统中的海量不同数据源类型、不同中心库下的多表关联的实时变化的复杂业务数据以高效的速度增量同步至搜索引擎,具有很好的应用前景。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例的应用于搜索服务的增量同步方法的简单流程示意图;
图2为本发明实施例的应用于搜索服务的增量同步方法的具体流程示意图;
图3为图2中的步骤S102的具体流程示意图;
图4为图2中的步骤S103的具体流程示意图;
图5为图2中的步骤S104的具体流程示意图;
图6为本发明的示例性表树形结构的示意图;
图7为图5中的步骤S1042的具体流程示意图;
图8为图5中的步骤S1043的具体流程示意图;
图9为图2中的步骤S105的具体流程示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
现有的数据传输服务只能实现对应用系统的数据库中的单表数据的变更进行实时监控并同步至搜索引擎的索引中,并不能实现对多表关联的复杂索引结构进行数据的实时变更传输。因此,现有的数据传输服务不能将应用系统中的海量不同数据源类型、不同中心库下的多表关联的复杂业务数据以高效的速度增量同步至搜索引擎。
为了解决上述技术问题,本发明实施例提供了一种应用于搜索服务的增量同步方法。
图1为本发明实施例的应用于搜索服务的增量同步方法的简单流程示意图。
如图1所示,在本发明中,数据传输服务监控到数据库中各个表的数据发生变更时,将数据库中各个表的变更数据及其相关信息以表为单元发送到消息系统中。消息系统包括多个消息队列,一个消息队列对应于数据库中一个表的数据变更记录。为了防止不同数据库中具有相同名称的表会导致消息队列冲突的问题,令每个消息队列的命名方式为:与该消息队列对应的数据库的名称和该数据库中的表的名称。
本发明的应用于搜索服务的增量同步方法是通过实时流式处理框架来实现,该实时流式处理框架是一个免费并开源的分布式实时计算系统。利用实时流式处理框架可以很容易做到可靠地处理来自消息系统中的无限的消息队列中的数据流,并可以将消息队列中的数据流分多个阶段进行计算处理。
在实时流式处理框架中,索引数据获取节点(对应于以下步骤S101)通过消费读取方式获取到消息系统中与各消息队列对应的变更数据及其相关信息。随后,该变更数据经由预处理节点(对应于以下步骤S102和步骤S103)、填充主表信息节点(对应于以下步骤S1041和步骤S1042)和填充附表信息节点(对应于步骤S1043和步骤S105)的处理后,传输至索引数据封装节点(对应于以下步骤S106和步骤S107)。索引数据封装节点在对利用与该变更数据对应的数据库中的表对应的索引配置信息中包括的搜索引擎索引名称配置的多个表的数据进行处理后,将处理结果转换为JSON格式数据并写入到搜索引擎,从而实现了从数据库到搜索引擎的增量同步。
由于数据结构的复杂性,索引数据获取节点从消息系统中获取到的数据通常是不完整的。因此,实时流式处理框架需要查询完整的数据并将其存储到缓存器中,以便于在相关数据再次发生变化时能够节省查询完整数据的时间。缓存器是基于键值对的内存数据库,支持字符串和集合类型。缓存器以集群的形式部署,最大限度地保证数据的高可用性。搜索引擎是以分布式方式部署,数据被分散在各个节点上,并且在多个节点上有备份,以保证数据的高可用性。在搜索引擎中,一个索引可以对应于数据库中的多个表,多个表通过关联键组合成嵌套关系的数据结构。
图2为本发明实施例的应用于搜索服务的增量同步方法的具体流程示意图。
如图2所示,本发明实施例的应用于搜索服务的增量同步方法,主要包括以下步骤S101至步骤S107。
在步骤S101中,获取数据库中各个表的变更数据及其相关信息。其中,该变更数据的相关信息包括:与每条变更数据对应的数据库的名称和该数据库中的表的名称、与每条变更数据对应的变更类型(包括:新增数据、删除数据和修改数据)、以及每条变更数据在变更前后的所有字段值和主键值。
需要说明的是,若与每条变更数据对应的变更类型是新增数据变更类型,则每条变更数据在变更前的所有字段值和主键值为空。若与每条变更数据对应的变更类型是删除数据变更类型,则每条变更数据在变更后的所有字段值和主键值为空。
在步骤S102中,分别以第一预设存储方式和第二预设存储方式,将数据库中各个表的变更数据以键值对的方式存储到缓存器中。其中,第一预设存储方式为根据数据库中各个表的变更数据的相关信息,对数据库中各个表的变更数据进行存储。第二预设存储方式为根据与数据库中各个表的变更数据对应的数据库中的表对应的索引配置信息,对数据库中各个表的变更数据进行存储。其具体过程如图3所示。
在步骤S1021中,根据当前变更数据的相关信息,将当前变更数据以键值对的方式存储到缓存器中。其中,键值对中的键为与当前变更数据对应的数据库中的表的名称和当前变更数据在变更后的主键值,键值对中的值为由当前变更数据在变更后的所有字段值组成的JSON格式数据。
在步骤S1022中,根据与当前变更数据对应的数据库中的表的名称,查询与该表对应的索引配置信息。其中,与该表对应的索引配置信息包括:与该表对应的搜索引擎索引名称、利用该搜索引擎索引名称配置的多个表的数目、多个表中的每个表的名称、多个表中的每两个表之间的关联关系和关联键、多个表中的每个表配置的字段、以及与多个表中的每个表对应的数据源配置名称。
需要说明的是,在增量同步服务启动后会初始化加载与每条变更数据对应的数据库中的表对应的索引配置信息,即去搜索引擎的配置库的索引配置表中查询与每条变更数据对应的数据库中的表对应的索引配置信息,并将该索引配置信息加载到增量同步服务运行的内存中。
在步骤S1023中,根据与该表对应的索引配置信息,将当前变更数据以键值对的方式存储到缓存器中。其中,键值对中的键为该表的名称、以及该表与其上游表之间的关联键的字段名和字段值,键值对中的值为与该关联键的字段值对应的主键值的集合。
在步骤S103中,利用哈希函数对与每条变更数据对应的数据库中的表的名称和每条变更数据在变更后的主键值进行处理,得到多组变更数据。其中,每组变更数据包括至少一条变更数据。其具体过程如图4所示。
在步骤S1031中,利用哈希函数对与每条变更数据对应的数据库中的表的名称和每条变更数据在变更后的主键值进行处理,得到与每条变更数据对应的哈希值。其中,该哈希值为字符串形式。
在步骤S1032中,根据与每条变更数据对应的哈希值的末位元素,将哈希值的末位元素相同的变更数据分为一组,得到多组变更数据。
由于本发明在整个同步流程对数据流转时使用哈希值对多条变更数据进行计算分发,能够实现在多线程处理数据下,保持数据的时序性,从而保证相同表相同主键值的数据能够按接收过来的变更顺序在同一线程上处理。
需要说明的是,为了提高数据处理效率,可以在将变更数据累积到预设数目(例如,累积到500条变更数据)时再对多条变更数据进行分组处理,或者,对从当前时刻起到预设时间期间内(例如,从当前时刻起的200ms这段时间内)的多条变更数据进行分组处理。
针对每组变更数据中的每条变更数据,依次执行以下操作:
在步骤S104中,根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表之外的其余各表的数据。其中,该其余各表的数据包括:与该表对应的一级表的名称和主键值、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的名称和主键值。其具体过程如图5所示。
在步骤S1041中,针对每组变更数据中的每条变更数据,根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的一级表的数据。其具体过程如下:
步骤一、根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,以与当前变更数据对应的数据库的名称、与当前变更数据对应的数据库中的表的名称、以及该表与其上游表之间的关联键的字段名和字段值作为键,在缓存器中查询该上游表的主键值。
步骤二、在于缓存器中查询到该上游表的主键值的情况下,以与该上游表对应的数据库的名称、该上游表的名称、以及该上游表的主键值作为键,在缓存器中查询该上游表的数据。
在于缓存器中未查询到该上游表的主键值的情况下,在数据库中查询该上游表的主键值。其中,查询表名为:该上游表的名称,查询条件为:与当前变更数据对应的数据库中的表与其上游表之间的关联键的字段名等于与当前变更数据对应的关联键的字段值。
需要说明的是,去数据库查询所需连接数据库的信息是从索引配置中表对应的数据源配置获取的。
以与该上游表对应的数据库的名称、该上游表的名称、以及该上游表的主键值作为键,在数据库中查询该上游表的数据,并分别以第三预设存储方式和第四预设存储方式,将该上游表的数据以键值对的方式存储到缓存器中。
其中,在第三预设存储方式中,键值对中的键为与该上游表对应的数据库的名称、该上游表的名称、以及该上游表的主键值,键值对中的值为由该上游表的所有字段值组成的JSON格式数据。
在第四预设存储方式中,键值对中的键为与该上游表对应的数据库的名称、该上游表的名称、以及与当前变更数据对应的数据库中的表与其上游表之间的关联键的字段名和字段值,键值对中的值为与该关联键的字段值对应的主键值的集合。
以该上游表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤一至步骤二,直至得到与当前变更数据对应的数据库中的表对应的一级表的数据为止。
为了便于理解,下面以图6为例对本步骤的具体操作过程进行解释说明。
在本示例中,假设与当前变更数据对应的数据库中的表为D表。
首先,执行步骤一:根据D表的名称、以及与D表对应的索引配置信息,以与D表对应的数据库的名称、D表的名称、以及D表与B表之间的关联键的字段名和字段值作为键,在缓存器中查询B表的主键值。
其次,执行步骤二:在于缓存器中查询到B表的主键值的情况下,以与B表对应的数据库的名称、B表的名称、以及B表的主键值作为键,在缓存器中查询B表的数据。
在于缓存器中未查询到B表的主键值的情况下,在数据库中查询B表的主键值。其中,查询表名为:B表的名称,查询条件为:D表与B表之间的关联键的字段名等于与D表中的变更数据对应的关联键的字段值。
以与B表对应的数据库的名称、B表的名称、以及B表的主键值作为键,在数据库中查询B表的数据,并分别以第三预设存储方式和第四预设存储方式,将B表的数据以键值对的方式存储到缓存器中。
其中,在第三预设存储方式中,键值对中的键为与B表对应的数据库的名称、B表的名称、以及B表的主键值,键值对中的值为由B表的所有字段值组成的JSON格式数据。
在第四预设存储方式中,键值对中的键为与B表对应的数据库的名称、B表的名称、以及D表与B表之间的关联键的字段名和字段值,键值对中的值为与该关联键的字段值对应的主键值的集合。
以B表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤一至步骤二,直至得到A表的数据为止。
在步骤S1042中,利用哈希函数对与每条变更数据对应的数据库中的表对应的一级表的名称和主键值进行处理,得到多组变更数据。其中,每组变更数据包括至少一条变更数据。其具体过程如图7所示。
在步骤S10421中,利用哈希函数对与每条变更数据对应的数据库中的表对应的一级表的名称和主键值进行处理,得到与每条变更数据对应的哈希值。其中,该哈希值为字符串形式。
在步骤S10422中,根据与每条变更数据对应的哈希值的末位元素,将哈希值的末位元素相同的变更数据分为一组,得到多组变更数据。
由于本发明在整个同步流程对数据流转时使用哈希值对多条变更数据进行计算分发,能够实现在多线程处理数据下,保持数据的时序性,从而保证相同表相同主键值的数据能够按接收过来的变更顺序在同一线程上处理。
需要说明的是,为了提高数据处理效率,可以在将变更数据累积到预设数目(例如,累积到500条变更数据)时再对多条变更数据进行分组处理,或者,对从当前时刻起到预设时间期间内(例如,从当前时刻起的200ms这段时间内)的多条变更数据进行分组处理。
在步骤S1043中,针对每组变更数据中的每条变更数据,根据与当前变更数据对应的数据库中的表的名称,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据。其具体过程如图8所示。
在步骤S10431中,根据与当前变更数据对应的数据库中的表的名称,查询与该表对应的索引配置信息。
需要说明的是,在增量同步服务启动后会初始化加载与每条变更数据对应的数据库中的表对应的索引配置信息,即去搜索引擎的配置库的索引配置表中查询与每条变更数据对应的数据库中的表对应的索引配置信息,并将该索引配置信息加载到增量同步服务运行的内存中。
在步骤S10432中,根据与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据。其具体过程如下:
在执行完步骤一和步骤二之后,执行以下步骤:
步骤三、根据与当前变更数据对应的数据库中的表对应的上游表、和与当前变更数据对应的数据库中的表位于同一层级上的、且除该表之外的其余表之间的关联配置,以该其余表的名称、以及该上游表与该其余表之间的关联键的字段名和字段值作为键,在缓存器中查询该其余表的主键值。
步骤四、在于缓存器中查询到该其余表的主键值的情况下,以与该其余表对应的数据库的名称、该其余表的名称、以及该其余表的主键值作为键,在缓存器中查询该其余表的数据。
在于缓存器中未查询到该其余表中的某个表的主键值的情况下,在数据库中查询该表的主键值。其中,查询表名为:该表的名称,查询条件为:该表与该上游表之间的关联键的字段名等于与该表中的变更数据对应的关联键的字段值。
需要说明的是,去数据库查询所需连接数据库的信息是从索引配置中表对应的数据源配置获取的。
以与该表对应的数据库的名称、该表的名称、以及该表的主键值作为键,在数据库中查询该表的数据,并通过第五预设存储方式将该表的数据以键值对的方式存储到缓存器中。
其中,在第五预设存储方式中,键值对中的键为与该表对应的数据库的名称、该表的名称、以及该表与该上游表之间的关联键的字段名和字段值,键值对中的值为由该表的所有字段值组成的JSON格式数据。
以该上游表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤一至步骤四,直至得到与当前变更数据对应的数据库中的表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据为止。
为了便于理解,下面仍然以图6为例对本步骤的具体操作过程进行解释说明。
在本示例中,假设与当前变更数据对应的数据库中的表为D表。
首先,执行步骤一:根据D表的名称、以及与D表对应的索引配置信息,以与D表对应的数据库的名称、D表的名称、以及D表与B表之间的关联键的字段名和字段值作为键,在缓存器中查询B表的主键值。
其次,执行步骤二:在于缓存器中查询到B表的主键值的情况下,以与B表对应的数据库的名称、B表的名称、以及B表的主键值作为键,在缓存器中查询B表的数据。
在于缓存器中未查询到B表的主键值的情况下,在数据库中查询B表的主键值。其中,查询表名为:B表的名称,查询条件为:D表与B表之间的关联键的字段名等于与D表中的变更数据对应的关联键的字段值。
以与B表对应的数据库的名称、B表的名称、以及B表的主键值作为键,在数据库中查询B表的数据,并分别以第三预设存储方式和第四预设存储方式,将B表的数据以键值对的方式存储到缓存器中。
其中,在第三预设存储方式中,键值对中的键为与B表对应的数据库的名称、B表的名称、以及B表的主键值,键值对中的值为由B表的所有字段值组成的JSON格式数据。
在第四预设存储方式中,键值对中的键为与B表对应的数据库的名称、B表的名称、以及D表与B表之间的关联键的字段名和字段值,键值对中的值为与该关联键的字段值对应的主键值的集合。
接着,执行步骤三:根据B表和E表之间的关联配置,以E表的名称、以及B表与E表之间的关联键的字段名和字段值作为键,在缓存器中查询E表的主键值。
接着,执行步骤四:在于缓存器中查询到E表的主键值的情况下,以与E表对应的数据库的名称、E表的名称、以及E表的主键值作为键,在缓存器中查询E表的数据。
在于缓存器中未查询到E表的主键值的情况下,在数据库中查询E表的主键值。其中,查询表名为:E表的名称,查询条件为:E表与B表之间的关联键的字段名等于与E表中的变更数据对应的关联键的字段值。
以与E表对应的数据库的名称、E表的名称、以及E表的主键值作为键,在数据库中查询E表的数据,并通过第五预设存储方式将E表的数据以键值对的方式存储到缓存器中。
其中,在第五预设存储方式中,键值对中的键为与E表对应的数据库的名称、E表的名称、以及E表与B表之间的关联键的字段名和字段值,键值对中的值为由E表的所有字段值组成的JSON格式数据。
以B表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤一至步骤四,直至得到A表和C表的数据为止。
在步骤S105中,利用哈希函数,对与该表对应的索引配置信息中包括的搜索引擎索引名称、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的主键值进行处理,得到多组变更数据。其中,每组变更数据包括至少一条变更数据。其具体过程如图9所示。
在步骤S1051中,利用哈希函数,对与当前变更数据对应的数据库中的表对应的索引配置信息中包括的搜索引擎索引名称、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的主键值进行处理,得到与当前变更数据对应的哈希值。其中,该哈希值为字符串形式。
在步骤S1052中,根据与每条变更数据对应的哈希值的末位元素,将哈希值的末位元素相同的变更数据分为一组,得到多组变更数据。
由于本发明在整个同步流程对数据流转时使用哈希值对多条变更数据进行计算分发,能够实现在多线程处理数据下,保持数据的时序性,从而保证相同表相同主键值的数据能够按接收过来的变更顺序在同一线程上处理。
针对每组变更数据中的每条变更数据,依次执行以下操作:
在步骤S106中,根据与当前变更数据对应的数据库中的表的名称,查询与该表对应的索引配置信息。
需要说明的是,在增量同步服务启动后会初始化加载与每条变更数据对应的数据库中的表对应的索引配置信息,即去搜索引擎的配置库的索引配置表中查询与每条变更数据对应的数据库中的表对应的索引配置信息,并将该索引配置信息加载到增量同步服务运行的内存中。
在步骤S107中,根据与该表对应的索引配置信息,从缓存器中查询利用与该表对应的索引配置信息中包括的搜索引擎索引名称配置的多个表的数据,并将该多个表的数据转换为JSON格式数据,调用搜索引擎的接口将该JSON格式数据写入到搜索引擎中,从而实现了从数据库到搜索引擎的增量同步。
具体地,首先,执行步骤五:根据与当前变更数据对应的数据库中的表对应的索引配置信息,以与当前变更数据对应的数据库的名称、与当前变更数据对应的数据库中的表的名称、以及该表的主键值作为键,从缓存器中查询该表的数据。
接着,执行步骤六:以与当前变更数据对应的数据库的名称、与当前变更数据对应的数据库中的表的名称、以及该表与其上游表之间的关联键的字段名和字段值作为键,从缓存器中查询该上游表的数据。
接着,执行步骤七:以与当前变更数据对应的数据库的名称、与当前变更数据对应的数据库中的表的名称、以及该表的上游表和与该表位于同一层级上的、且除该表之外的其余表之间的关联键的字段名和字段值作为键,从缓存器中查询该其余表的数据。
以该上游表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤五至步骤七,直至得到利用与当前变更数据对应的数据库中的表对应的索引配置信息中包括的搜索引擎索引名称配置的多个表的数据为止。
为了便于理解,下面仍然以图6为例对本步骤的具体操作过程进行解释说明。
在本示例中,假设与当前变更数据对应的数据库中的表为D表。
首先,执行步骤五:根据与D表对应的索引配置信息,以与D表中的变更数据对应的数据库的名称、D表的名称、以及D表的主键值作为键,从缓存器中查询D表的数据。
接着,执行步骤六:以与D表中的变更数据对应的数据库的名称、D表的名称、以及D表与B表之间的关联键的字段名和字段值作为键,从缓存器中查询B表的数据。
接着,执行步骤七:以与D表中的变更数据对应的数据库的名称、D表的名称、以及B表与E表之间的关联键的字段名和字段值作为键,从缓存器中查询E表的数据。
以B表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤五至步骤七,直至得到利用与D表对应的索引配置信息中包括的搜索引擎索引名称配置的多个表(即,A表、B表、C表、D表和E表)的数据为止。
最后,将该多个表的数据转换为JSON格式数据,调用搜索引擎的接口将该JSON格式数据写入到搜索引擎中,从而实现了从数据库到搜索引擎的增量同步。
应用本发明实施例提供的应用于搜索服务的增量同步方法,能够将应用系统中的海量不同数据源类型、不同中心库下的多表关联的实时变化的复杂业务数据以高效的速度增量同步至搜索引擎,具有很好的应用前景。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (10)

1.一种应用于搜索服务的增量同步方法,其特征在于,包括:
获取数据库中各个表的变更数据及其相关信息,其中,该变更数据的相关信息包括:与每条变更数据对应的数据库的名称和该数据库中的表的名称、与每条变更数据对应的变更类型、以及每条变更数据在变更前后的所有字段值和主键值;
分别以第一预设存储方式和第二预设存储方式,将数据库中各个表的变更数据以键值对的方式存储到缓存器中;
利用哈希函数对与每条变更数据对应的数据库中的表的名称和每条变更数据在变更后的主键值进行处理,得到多组变更数据,其中,每组变更数据包括至少一条变更数据;
针对每组变更数据中的每条变更数据,依次执行以下操作:
根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表之外的其余各表的数据,其中,该其余各表的数据包括:与该表对应的一级表的名称和主键值、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的名称和主键值;
利用哈希函数,对与该表对应的索引配置信息中包括的搜索引擎索引名称、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的主键值进行处理,得到多组变更数据,其中,每组变更数据包括至少一条变更数据;
针对每组变更数据中的每条变更数据,依次执行以下操作:
根据与当前变更数据对应的数据库中的表的名称,查询与该表对应的索引配置信息;
根据与该表对应的索引配置信息,从缓存器中查询利用与该表对应的索引配置信息中包括的搜索引擎索引名称配置的多个表的数据,并将该多个表的数据转换为JSON格式数据,调用搜索引擎的接口将该JSON格式数据写入到搜索引擎中,从而实现了从数据库到搜索引擎的增量同步。
2.根据权利要求1所述的应用于搜索服务的增量同步方法,其特征在于,以第一预设存储方式将数据库中各个表的变更数据以键值对的方式存储到缓存器中,包括:
根据当前变更数据的相关信息,将当前变更数据以键值对的方式存储到缓存器中,其中,键值对中的键为与当前变更数据对应的数据库中的表的名称和当前变更数据在变更后的主键值,键值对中的值为由当前变更数据在变更后的所有字段值组成的JSON格式数据。
3.根据权利要求2所述的应用于搜索服务的增量同步方法,其特征在于,以第二预设存储方式将数据库中各个表的变更数据以键值对的方式存储到缓存器中,包括:
根据与当前变更数据对应的数据库中的表的名称,查询与该表对应的索引配置信息,其中,与该表对应的索引配置信息包括:与该表对应的搜索引擎索引名称、利用该搜索引擎索引名称配置的多个表的数目、所述多个表中的每个表的名称、所述多个表中的每两个表之间的关联关系和关联键、所述多个表中的每个表配置的字段、以及与所述多个表中的每个表对应的数据源配置名称;
根据与该表对应的索引配置信息,将当前变更数据以键值对的方式存储到缓存器中,其中,键值对中的键为该表的名称、以及该表与其上游表之间的关联键的字段名和字段值,键值对中的值为与该关联键的字段值对应的主键值的集合。
4.根据权利要求3所述的应用于搜索服务的增量同步方法,其特征在于,利用哈希函数对与每条变更数据对应的数据库中的表的名称和每条变更数据在变更后的主键值进行处理,得到多组变更数据,包括:
利用哈希函数对与每条变更数据对应的数据库中的表的名称和每条变更数据在变更后的主键值进行处理,得到与每条变更数据对应的哈希值,其中,该哈希值为字符串形式;
根据与每条变更数据对应的哈希值的末位元素,将哈希值的末位元素相同的变更数据分为一组,得到多组变更数据。
5.根据权利要求4所述的应用于搜索服务的增量同步方法,其特征在于,根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表之外的其余各表的数据,包括:
针对每组变更数据中的每条变更数据,依次执行以下操作:
根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的一级表的数据;
利用哈希函数对与每条变更数据对应的数据库中的表对应的一级表的名称和主键值进行处理,得到多组变更数据,其中,每组变更数据包括至少一条变更数据;
针对每组变更数据中的每条变更数据,依次执行以下操作:
根据与当前变更数据对应的数据库中的表的名称,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据。
6.根据权利要求5所述的应用于搜索服务的增量同步方法,其特征在于,根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,得到与该表对应的一级表的数据,包括:
步骤一、根据与当前变更数据对应的数据库中的表的名称、以及与该表对应的索引配置信息,以与当前变更数据对应的数据库的名称、与当前变更数据对应的数据库中的表的名称、以及该表与其上游表之间的关联键的字段名和字段值作为键,在缓存器中查询该上游表的主键值;
步骤二、在于缓存器中查询到该上游表的主键值的情况下,以与该上游表对应的数据库的名称、该上游表的名称、以及该上游表的主键值作为键,在缓存器中查询该上游表的数据;
在于缓存器中未查询到该上游表的主键值的情况下,在数据库中查询该上游表的主键值,其中,查询表名为:该上游表的名称,查询条件为:与当前变更数据对应的数据库中的表与其上游表之间的关联键的字段名等于与当前变更数据对应的关联键的字段值;
以与该上游表对应的数据库的名称、该上游表的名称、以及该上游表的主键值作为键,在数据库中查询该上游表的数据,并分别以第三预设存储方式和第四预设存储方式,将该上游表的数据以键值对的方式存储到缓存器中,其中,在第三预设存储方式中,键值对中的键为与该上游表对应的数据库的名称、该上游表的名称、以及该上游表的主键值,键值对中的值为由该上游表的所有字段值组成的JSON格式数据,在第四预设存储方式中,键值对中的键为与该上游表对应的数据库的名称、该上游表的名称、以及与当前变更数据对应的数据库中的表与其上游表之间的关联键的字段名和字段值,键值对中的值为与该关联键的字段值对应的主键值的集合;
以该上游表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤一至步骤二,直至得到与当前变更数据对应的数据库中的表对应的一级表的数据为止。
7.根据权利要求6所述的应用于搜索服务的增量同步方法,其特征在于,利用哈希函数对与每条变更数据对应的数据库中的表对应的一级表的名称和主键值进行处理,得到多组变更数据,包括:
利用哈希函数对与每条变更数据对应的数据库中的表对应的一级表的名称和主键值进行处理,得到与每条变更数据对应的哈希值,其中,该哈希值为字符串形式;
根据与每条变更数据对应的哈希值的末位元素,将哈希值的末位元素相同的变更数据分为一组,得到多组变更数据。
8.根据权利要求6所述的应用于搜索服务的增量同步方法,其特征在于,根据与当前变更数据对应的数据库中的表的名称,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据,包括:
根据与当前变更数据对应的数据库中的表的名称,查询与该表对应的索引配置信息;
根据与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据。
9.根据权利要求8所述的应用于搜索服务的增量同步方法,其特征在于,根据与该表对应的索引配置信息,得到与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据,包括:
在执行完步骤一和步骤二之后,执行以下步骤:
步骤三、根据与当前变更数据对应的数据库中的表对应的上游表、和与当前变更数据对应的数据库中的表位于同一层级上的、且除该表之外的其余表之间的关联配置,以该其余表的名称、以及该上游表与该其余表之间的关联键的字段名和字段值作为键,在缓存器中查询该其余表的主键值;
步骤四、在于缓存器中查询到该其余表的主键值的情况下,以与该其余表对应的数据库的名称、该其余表的名称、以及该其余表的主键值作为键,在缓存器中查询该其余表的数据;
在于缓存器中未查询到该其余表中的某个表的主键值的情况下,在数据库中查询该表的主键值,其中,查询表名为:该表的名称,查询条件为:该表与该上游表之间的关联键的字段名等于与该表中的变更数据对应的关联键的字段值;
以与该表对应的数据库的名称、该表的名称、以及该表的主键值作为键,在数据库中查询该表的数据,并通过第五预设存储方式将该表的数据以键值对的方式存储到缓存器中,其中,在第五预设存储方式中,键值对中的键为与该表对应的数据库的名称、该表的名称、以及该表与该上游表之间的关联键的字段名和字段值,键值对中的值为由该表的所有字段值组成的JSON格式数据;
以该上游表作为下一循环周期中与当前变更数据对应的数据库中的表,重复执行步骤一至步骤四,直至得到与当前变更数据对应的数据库中的表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的数据为止。
10.根据权利要求9所述的应用于搜索服务的增量同步方法,其特征在于,利用哈希函数,对与该表对应的索引配置信息中包括的搜索引擎索引名称、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的主键值进行处理,得到多组变更数据,包括:
利用哈希函数,对与当前变更数据对应的数据库中的表对应的索引配置信息中包括的搜索引擎索引名称、以及与该表对应的索引配置信息中包括的多个表中除该表和与该表对应的一级表之外的其余表的主键值进行处理,得到与当前变更数据对应的哈希值,其中,该哈希值为字符串形式;
根据与每条变更数据对应的哈希值的末位元素,将哈希值的末位元素相同的变更数据分为一组,得到多组变更数据。
CN201910343582.6A 2019-04-26 2019-04-26 一种应用于搜索服务的增量同步方法 Active CN110245134B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910343582.6A CN110245134B (zh) 2019-04-26 2019-04-26 一种应用于搜索服务的增量同步方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910343582.6A CN110245134B (zh) 2019-04-26 2019-04-26 一种应用于搜索服务的增量同步方法

Publications (2)

Publication Number Publication Date
CN110245134A true CN110245134A (zh) 2019-09-17
CN110245134B CN110245134B (zh) 2021-07-06

Family

ID=67883376

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910343582.6A Active CN110245134B (zh) 2019-04-26 2019-04-26 一种应用于搜索服务的增量同步方法

Country Status (1)

Country Link
CN (1) CN110245134B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111143460A (zh) * 2019-12-30 2020-05-12 智慧神州(北京)科技有限公司 基于大数据的经济领域的数据的检索方法、装置与处理器
CN112905706A (zh) * 2021-03-19 2021-06-04 平安消费金融有限公司 数据库同步方法、装置、存储介质和计算机设备
CN113407560A (zh) * 2021-08-19 2021-09-17 太平金融科技服务(上海)有限公司深圳分公司 更新消息处理方法、数据同步方法、配置信息配置方法
CN113836149A (zh) * 2021-11-29 2021-12-24 深圳市明源云科技有限公司 企业数据查询方法、装置、终端及计算机可读存储介质

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101547092A (zh) * 2008-03-27 2009-09-30 天津德智科技有限公司 用于统一用户认证的多应用系统数据同步的方法及装置
US20110264687A1 (en) * 2010-04-23 2011-10-27 Red Hat, Inc. Concurrent linked hashed maps
CN103345521A (zh) * 2013-07-17 2013-10-09 腾讯科技(深圳)有限公司 一种在哈希表数据库中处理键值的方法和装置
US20140229435A1 (en) * 2013-01-27 2014-08-14 Travel Holdings, Inc. In-memory real-time synchronized database system and method
US20160057219A1 (en) * 2014-08-19 2016-02-25 Ciena Corporation Data synchronization system and methods in a network using a highly-available key-value storage system
CN106294768A (zh) * 2016-08-11 2017-01-04 深圳市宜搜科技发展有限公司 信息搜索方法及信息搜索引擎
CN106919675A (zh) * 2017-02-24 2017-07-04 浙江大华技术股份有限公司 一种数据存储方法及装置
CN106933823A (zh) * 2015-12-29 2017-07-07 北京国双科技有限公司 数据同步方法及装置
CN107103067A (zh) * 2017-04-18 2017-08-29 北京思特奇信息技术股份有限公司 一种基于搜索引擎的数据同步方法及系统
CN107657059A (zh) * 2017-10-20 2018-02-02 中国银行股份有限公司 基于区块链应用系统的数据同步方法、中间件及系统
CN108573006A (zh) * 2017-06-06 2018-09-25 北京金山云网络技术有限公司 跨机房数据同步系统、方法及装置、电子设备
CN109299102A (zh) * 2018-10-23 2019-02-01 中国电子科技集团公司第二十八研究所 一种基于Elastcisearch的HBase二级索引系统及方法
CN109582736A (zh) * 2018-11-22 2019-04-05 平安科技(深圳)有限公司 贷款业务名单表的同步方法、装置和计算机设备

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101547092A (zh) * 2008-03-27 2009-09-30 天津德智科技有限公司 用于统一用户认证的多应用系统数据同步的方法及装置
US20110264687A1 (en) * 2010-04-23 2011-10-27 Red Hat, Inc. Concurrent linked hashed maps
US20140229435A1 (en) * 2013-01-27 2014-08-14 Travel Holdings, Inc. In-memory real-time synchronized database system and method
CN103345521A (zh) * 2013-07-17 2013-10-09 腾讯科技(深圳)有限公司 一种在哈希表数据库中处理键值的方法和装置
US20160057219A1 (en) * 2014-08-19 2016-02-25 Ciena Corporation Data synchronization system and methods in a network using a highly-available key-value storage system
CN106933823A (zh) * 2015-12-29 2017-07-07 北京国双科技有限公司 数据同步方法及装置
CN106294768A (zh) * 2016-08-11 2017-01-04 深圳市宜搜科技发展有限公司 信息搜索方法及信息搜索引擎
CN106919675A (zh) * 2017-02-24 2017-07-04 浙江大华技术股份有限公司 一种数据存储方法及装置
CN107103067A (zh) * 2017-04-18 2017-08-29 北京思特奇信息技术股份有限公司 一种基于搜索引擎的数据同步方法及系统
CN108573006A (zh) * 2017-06-06 2018-09-25 北京金山云网络技术有限公司 跨机房数据同步系统、方法及装置、电子设备
CN107657059A (zh) * 2017-10-20 2018-02-02 中国银行股份有限公司 基于区块链应用系统的数据同步方法、中间件及系统
CN109299102A (zh) * 2018-10-23 2019-02-01 中国电子科技集团公司第二十八研究所 一种基于Elastcisearch的HBase二级索引系统及方法
CN109582736A (zh) * 2018-11-22 2019-04-05 平安科技(深圳)有限公司 贷款业务名单表的同步方法、装置和计算机设备

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
方恒明: "移动终端与服务器数据同步机制的应用研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
江涛 等: "数据仓库增量数据加载算法与实现", 《第二十一届中国数据库学术会议论文集(研究报告篇)》 *
陈伦跃 等: "基于搜索引擎的慢查询优化系统", 《现代计算机(专业版)》 *
黄建伟 等: "分布式日志结构数据库系统的主键维护方法研究", 《华东师范大学学报(自然科学版)》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111143460A (zh) * 2019-12-30 2020-05-12 智慧神州(北京)科技有限公司 基于大数据的经济领域的数据的检索方法、装置与处理器
CN112905706A (zh) * 2021-03-19 2021-06-04 平安消费金融有限公司 数据库同步方法、装置、存储介质和计算机设备
CN113407560A (zh) * 2021-08-19 2021-09-17 太平金融科技服务(上海)有限公司深圳分公司 更新消息处理方法、数据同步方法、配置信息配置方法
CN113836149A (zh) * 2021-11-29 2021-12-24 深圳市明源云科技有限公司 企业数据查询方法、装置、终端及计算机可读存储介质

Also Published As

Publication number Publication date
CN110245134B (zh) 2021-07-06

Similar Documents

Publication Publication Date Title
CN110245134A (zh) 一种应用于搜索服务的增量同步方法
US11334543B1 (en) Scalable bucket merging for a data intake and query system
US11663212B2 (en) Identifying configuration parameters for a query using a metadata catalog
US10929415B1 (en) Isolated execution environment system monitoring
CN106708993B (zh) 基于大数据技术的空间数据存储处理中间件框架实现方法
US11526504B1 (en) Search-time field extraction in a data intake and query system
US9130971B2 (en) Site-based search affinity
US11567993B1 (en) Copying buckets from a remote shared storage system to memory associated with a search node for query execution
Grover et al. Data Ingestion in AsterixDB.
US11562023B1 (en) Merging buckets in a data intake and query system
CN108268529B (zh) 一种基于业务抽象和多引擎调度的数据汇总方法和系统
CN109063196A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US11429566B2 (en) Approach for a controllable trade-off between cost and availability of indexed data in a cloud log aggregation solution such as splunk or sumo
US11620336B1 (en) Managing and storing buckets to a remote shared storage system based on a collective bucket size
CN103927331A (zh) 数据查询方法、装置及系统
US11663219B1 (en) Determining a set of parameter values for a processing pipeline
US11789950B1 (en) Dynamic storage and deferred analysis of data stream events
US20060149760A1 (en) LDAP bulk append
US11934466B2 (en) Direct cloud storage intake and upload architecture
Sawyer et al. Understanding query performance in Accumulo
CN117056303B (zh) 适用于军事行动大数据的数据存储方法及装置
Cao et al. LogKV: Exploiting key-value stores for event log processing
US20230297436A1 (en) Key-based aggregation service
CN108319604A (zh) 一种hive中大小表关联的优化方法
CN106649847A (zh) 一种基于Hadoop的大数据实时处理系统

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
GR01 Patent grant
GR01 Patent grant