CN111931094A - 一种缓存数据动态同步方法 - Google Patents
一种缓存数据动态同步方法 Download PDFInfo
- Publication number
- CN111931094A CN111931094A CN202010687501.7A CN202010687501A CN111931094A CN 111931094 A CN111931094 A CN 111931094A CN 202010687501 A CN202010687501 A CN 202010687501A CN 111931094 A CN111931094 A CN 111931094A
- Authority
- CN
- China
- Prior art keywords
- data
- sql statement
- cache
- preset
- jdbc
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开的缓存数据动态同步方法,涉及数据库技术领域,通过从预设的第二数据集合中获取JDBC模板名称,通过Java上下文环境获取与JDBC模板名称匹配的JDBC模板,从第二数据集合中获取单条数据查询sql语句并将操作数据库产生的二进制日志中各条数据的主键写入预设的单条数据查询sql语句,利用JDBC模板执行单条数据查询sql语句,获取当前的数据,判断是否需要校验数据的有效性,若是,则判断数据是否有效,若数据有效,则将数据写入目标缓存容器,实现了与业务逻辑完全解耦,代码易维护,保证了低延迟及不影响数据库的性能,数据同步无状,支持HA架构。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种缓存数据动态同步方法。
背景技术
缓存数据是互联网分层架构中非常重要的一个部分,通常用于减缓数据库的压力、提升系统整体性能、缩短访问时间。缓存数据同步方法也一直是一个热点问题,不同的方法有不同的侧重点,也伴随着不同的优缺点。总体而言,同步缓存数据时,如果做到低延迟、与业务逻辑解耦、对数据库影响尽可能小是一致的目标。
现阶段,主流的缓存数据同步方法有两种,一种是基于接口加载的方法,包括主动刷新和懒加载两种策略;另一种是基于异步定时任务的方法,通过固定频率刷新缓存。
其中,基于接口加载缓存方法的缺点为是通用性低,维护成本高。在嵌套、适配业务逻辑的同时,伴随着产生的新的问题就是通用性低下,基本无通用性可言。由于和业务逻辑的过度耦合,代码维护也很麻烦,在不熟悉业务的前提下,无法正确操作、使用缓存数据。
基于异步定时任务方法的缺点是对数据性能的影响较大。由于是采用异步定时任务机制,所以在追求低延迟的情况下,一定会更加频繁地操作数据库,这种批量、高频的策略,较大程度地影响了数据库性能。
可知,上述两种方案都不能同时保证低延迟及不影响数据库的性能。
发明内容
为解决现有技术的不足,本发明实施例提供了一种缓存数据动态同步方法,该方法包括以下步骤:
从预设的第二数据集合中获取JDBC模板名称,通过Java上下文环境获取与所述JDBC模板名称匹配的JDBC模板;
从所述第二数据集合中获取单条数据查询sql语句并将操作数据库产生的二进制日志中各条数据的主键写入预设的单条数据查询sql语句;
利用所述JDBC模板执行所述单条数据查询sql语句,获取当前的数据;
判断是否需要校验所述数据的有效性,若是,则判断所述数据是否有效;
若所述数据有效,则将所述数据写入目标缓存容器;
若所述数据无效,则重复上述步骤。
优选地,将操作数据库产生的二进制日志中各条数据的主键写入预设的单条数据查询sql语句中包括:
用二进制日志中数据的主键替换预设的单条数据查询sql语句中的变量,使含有变量的单条数据查询sql语句变成可执行的sql语句。
优选地,判断是否需要校验所述数据的有效性包括:
判断所述数据预设的有效性校验开关是否打开,若是,则确定需要校验所述数据的有效性。
优选地,判断所述数据是否有效包括:
判断获取所述数据花费的时间是否小于所述二进制日志的传递时间,如果是,则确定所述数据无效并延迟重试。
优选地,在将所述数据写入目标缓存容器之后,所述方法还包括:
将所述数据对应的目标缓存容器名称、目标缓存容器版本、主键、路由名称组装成缓存数据并将所述缓存数据加入到异步批量数据处理程序中,等待数据同步完成。
优选地,预设的第二数据集合的生成过程包括:
利用canal组件监听所述二进制日志;
解析所述二进制日志并根据设定的筛选条件,从预设的第一数据集合中获取符合要求的数据,生成第二数据集合。
优选地,所述筛选条件包括数据库名称、表名称、主键、最新更新时间。
本发明实施例提供的缓存数据动态同步方法具有以下有益效果:
通过实时将操作数据库产生的二进制日志中各条数据的主键写入相应的单条数据查询sql语句,实现了与业务逻辑完全解耦,代码易维护;保证了低延迟及不影响数据库的性能;数据同步无状,支持HA架构。
具体实施方式
以下结合具体实施例对本发明作具体的介绍。
本发明实施例提供的缓存数据动态同步方法包括以下步骤:
S101,从预设的第二数据集合中获取JDBC模板名称,通过Java上下文环境获取与JDBC模板名称匹配的JDBC模板。
其中,JDBC模板(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成,是Java访问数据库的标准规范。
S102,从第二数据集合中获取单条数据查询sql语句并将操作数据库产生的二进制日志中各条数据的主键写入预设的单条数据查询sql语句。
其中,二进制日志用于记录对数据库内部改动的日志,主要用于数据库的主从复制以及增量恢复。
S103,利用JDBC模板执行单条数据查询sql语句,获取当前的数据。
其中,当前的数据为最近更新后的数据。
S104,判断是否需要校验数据的有效性,若是,则判断数据是否有效。
S105,若数据有效,则将数据写入目标缓存容器。
S106,若数据无效,则重复步骤S101-S105。
可选地,将操作数据库产生的二进制日志中各条数据的主键写入预设的单条数据查询sql语句中包括:
用二进制日志中数据的主键替换预设的单条数据查询sql语句中的变量,使含有变量的单条数据查询sql语句变成可执行的sql语句。
作为本发明一个具体的实施例,当二进制日志中数据的主键数量不止一个时,分时分次将各个主键替换预设的单条数据查询sql语句中的变量。
可选地,判断是否需要校验数据的有效性包括:
判断数据预设的有效性校验开关是否打开,若是,则确定需要校验数据的有效性。
作为本发明一个具体的实施例,当有效性校验开关的值等于1时,则确定需要校验数据的有效性。
可选地,判断数据是否有效包括:
判断获取数据花费的时间是否小于二进制日志的传递时间,如果是,则确定数据无效并延迟重试。
可选地,在将数据写入目标缓存容器之后,该方法还包括:
将数据对应的目标缓存容器名称、目标缓存容器版本、主键、路由名称组装成缓存数据并将缓存数据加入到异步批量数据处理程序中,等待数据同步完成。
可选地,预设的第二数据集合的生成过程包括:
利用canal组件监听二进制日志;
解析二进制日志并根据设定的筛选条件,从预设的第一数据集合中获取符合要求的数据,生成第二数据集合。
作为本发明一个具体的实施例,第一数据集合为同步数据所使用的数据源,包含字段有:数据源名称、数据源连接池名称、jdbc模板名称、数据库驱动名称、数据库链接名、数据库用户名、数据库密码、数据库连接池最小连接数、数据库连接池最大链接数、数据库连接最大存活时间等。
作为本发明一个具体的实施例,第二数据集合为需要配置同步功能的核心数据,当以搜索服务器elasticsearch为目标缓存容器时,该核心数据包含的字段有:数据库名称、数据库表名称,搜索服务器索引名称、搜索服务器索引版本、单条数据查询sql语句、批量数据查询sql语句、jdbc模版名称、索引主键名称、索引路由、数据有效性校验开关等。在配置完成后,在第一次查询适配数据时,将变化频率极低的数据写入目标缓存容器中,以提高同步性能。
可选地,筛选条件包括数据库名称、表名称、主键、最新更新时间。
本发明实施例提供的缓存数据动态同步方法,通过从预设的第二数据集合中获取JDBC模板名称,通过Java上下文环境获取与JDBC模板名称匹配的JDBC模板,从第二数据集合中获取单条数据查询sql语句并将操作数据库产生的二进制日志中各条数据的主键写入预设的单条数据查询sql语句,利用JDBC模板执行单条数据查询sql语句,获取当前的数据,判断是否需要校验数据的有效性,若是,则判断数据是否有效,若数据有效,则将数据写入目标缓存容器,实现了与业务逻辑完全解耦,代码易维护,保证了低延迟及不影响数据库的性能,数据同步无状,支持HA架构。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (7)
1.一种缓存数据动态同步方法,其特征在于,包括:
从预设的第二数据集合中获取JDBC模板名称,通过Java上下文环境获取与所述JDBC模板名称匹配的JDBC模板;
从所述第二数据集合中获取单条数据查询sql语句并将操作数据库产生的二进制日志中各条数据的主键写入预设的单条数据查询sql语句中;
利用所述JDBC模板执行所述单条数据查询sql语句,获取当前的数据;
判断是否需要校验所述数据的有效性,若是,则判断所述数据是否有效;
若所述数据有效,则将所述数据写入目标缓存容器;
若所述数据无效,则重复上述步骤。
2.根据权利要求1所述的缓存数据动态同步方法,其特征在于,将操作数据库产生的二进制日志中各条数据的主键写入预设的单条数据查询sql语句中包括:
用二进制日志中数据的主键替换预设的单条数据查询sql语句中的变量,使含有变量的单条数据查询sql语句变成可执行的sql语句。
3.根据权利要求1所述的缓存数据动态同步方法,其特征在于,判断是否需要校验所述数据的有效性包括:
判断所述数据预设的有效性校验开关是否打开,若是,则确定需要校验所述数据的有效性。
4.根据权利要求1所述的缓存数据动态同步方法,其特征在于,判断所述数据是否有效包括:
判断获取所述数据花费的时间是否小于所述二进制日志的传递时间,如果是,则确定所述数据无效并延迟重试。
5.根据权利要求1所述的缓存数据动态同步方法,其特征在于,在将所述数据写入目标缓存容器之后,所述方法还包括:
将所述数据对应的目标缓存容器名称、目标缓存容器版本、主键、路由名称组装成缓存数据并将所述缓存数据加入到异步批量数据处理程序中,等待数据同步完成。
6.根据权利要求1所述的缓存数据动态同步方法,其特征在于,预设的第二数据集合的生成过程包括:
利用canal组件监听操作所述二进制日志;
解析所述二进制日志并根据设定的筛选条件,从预设的第一数据集合中获取符合要求的数据,生成第二数据集合。
7.根据权利要求1所述的缓存数据动态同步方法,其特征在于,所述筛选条件包括数据库名称、表名称、主键、最新更新时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010687501.7A CN111931094A (zh) | 2020-07-16 | 2020-07-16 | 一种缓存数据动态同步方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010687501.7A CN111931094A (zh) | 2020-07-16 | 2020-07-16 | 一种缓存数据动态同步方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111931094A true CN111931094A (zh) | 2020-11-13 |
Family
ID=73313958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010687501.7A Pending CN111931094A (zh) | 2020-07-16 | 2020-07-16 | 一种缓存数据动态同步方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111931094A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106960007A (zh) * | 2017-02-28 | 2017-07-18 | 北京京东尚科信息技术有限公司 | 一种数据更新方法、装置及电子设备 |
CN107547632A (zh) * | 2017-07-25 | 2018-01-05 | 广州爱九游信息技术有限公司 | 缓存数据同步方法、设备、服务中心及多中心服务系统 |
CN108932282A (zh) * | 2018-05-18 | 2018-12-04 | 腾讯科技(深圳)有限公司 | 一种数据库迁移方法、装置和存储介质 |
CN110362632A (zh) * | 2019-07-22 | 2019-10-22 | 无限极(中国)有限公司 | 一种数据同步方法、装置、设备及计算机可读存储介质 |
CN111414392A (zh) * | 2020-03-25 | 2020-07-14 | 浩鲸云计算科技股份有限公司 | 高速缓存异步刷新方法、系统及计算机可读存储介质 |
-
2020
- 2020-07-16 CN CN202010687501.7A patent/CN111931094A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106960007A (zh) * | 2017-02-28 | 2017-07-18 | 北京京东尚科信息技术有限公司 | 一种数据更新方法、装置及电子设备 |
CN107547632A (zh) * | 2017-07-25 | 2018-01-05 | 广州爱九游信息技术有限公司 | 缓存数据同步方法、设备、服务中心及多中心服务系统 |
CN108932282A (zh) * | 2018-05-18 | 2018-12-04 | 腾讯科技(深圳)有限公司 | 一种数据库迁移方法、装置和存储介质 |
CN110362632A (zh) * | 2019-07-22 | 2019-10-22 | 无限极(中国)有限公司 | 一种数据同步方法、装置、设备及计算机可读存储介质 |
CN111414392A (zh) * | 2020-03-25 | 2020-07-14 | 浩鲸云计算科技股份有限公司 | 高速缓存异步刷新方法、系统及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9626404B2 (en) | Distributed SQL query processing using key-value storage system | |
US7984042B2 (en) | System and method for providing highly available database performance | |
US6487641B1 (en) | Dynamic caches with miss tables | |
US9348883B2 (en) | Systems and methods for replication replay in a relational database | |
US20020107835A1 (en) | System and method for adaptive result set caching | |
US9418094B2 (en) | Method and apparatus for performing multi-stage table updates | |
US20040153576A1 (en) | System and method for a caching mechanism for a central synchronization server | |
Lim et al. | Transaction processing in mobile, heterogeneous database systems | |
US20040019587A1 (en) | Method and device for processing a query in a database management system | |
US20090307275A1 (en) | System for improving access efficiency in database and method thereof | |
Rae et al. | Online, asynchronous schema change in F1 | |
US20080140639A1 (en) | Processing a Text Search Query in a Collection of Documents | |
US9135297B2 (en) | Database translation system and method | |
US20080249990A1 (en) | Accessing data from asynchronously maintained index | |
EP1504375A1 (en) | Providing a useable version of the data item | |
US8495041B2 (en) | Data structure, computer system, method and computer program for searching database | |
CN113836162A (zh) | 一种业务解耦并实现多级缓存的自动化更新的方法及装置 | |
CN111324607B (zh) | Sql语句复用方法和装置 | |
US8161038B2 (en) | Maintain optimal query performance by presenting differences between access plans | |
CN114817320A (zh) | 一种缓存处理方法和装置 | |
US6374257B1 (en) | Method and system for removing ambiguities in a shared database command | |
US8935294B2 (en) | Minimizing computer resource usage when converting data types of a table column | |
CN111931094A (zh) | 一种缓存数据动态同步方法 | |
US20030187850A1 (en) | Remote database access through a table entry | |
US7240065B2 (en) | Providing mappings between logical time values and real time values |
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 |