CN112925808B - 数据处理方法、装置及电子设备 - Google Patents
数据处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112925808B CN112925808B CN202110204787.3A CN202110204787A CN112925808B CN 112925808 B CN112925808 B CN 112925808B CN 202110204787 A CN202110204787 A CN 202110204787A CN 112925808 B CN112925808 B CN 112925808B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- wide table
- aggregation
- 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.)
- Active
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例一种数据处理方法、装置及电子设备。在本发明实施例中,响应于监听到数据库中的第一数据宽表发生数据变动,查询与第一数据宽表相关的第二数据宽表,根据第一数据宽表和第二数据宽表的数据变动生成数据变动消息,根据数据变动消息更新缓存中对应的聚合宽表,其中,聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定。本发明实施例通过监听数据库实时更新缓存,实现了持久化缓存,由此,可以提高缓存中数据的实时性和准确性,同时可以提高数据查询请求在缓存中的命中率,进而可以提高数据查询效率,降低数据库的读写负担。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种数据处理方法、装置及电子设备。
背景技术
在当前微服务架构下的系统,数据一般存储在如SQL Server、MySQL这样的关系型数据库中,关系型数据库的优点是安全,方便使用,易于维护且支持复杂的查询场景,但对于高并发的读写请求压力很大,容易到达瓶颈导致读写变慢。
发明内容
有鉴于此,本发明实施例提供一种数据处理方法、装置及电子设备,以持久化缓存,提高数据查询速度。
第一方面,本发明实施例提供了一种数据处理方法,所述方法包括:
响应于监听到数据库中的第一数据宽表发生数据变动,查询与所述第一数据宽表相关的第二数据宽表;
根据所述第一数据宽表和所述第二数据宽表的数据变动生成数据变动消息;
根据所述数据变动消息更新缓存中对应的聚合宽表,所述聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定。
在本发明实施例中,响应于监听到数据库中的第一数据宽表发生数据变动,查询与第一数据宽表相关的第二数据宽表,根据第一数据宽表和第二数据宽表的数据变动生成数据变动消息,根据数据变动消息更新缓存中对应的聚合宽表,其中,聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定。由此,本发明实施例通过监听数据库实时更新缓存,实现了持久化缓存,并通过持久化缓存使得缓存的数据更新与数据查询分离,从而可以在缓存中以数据对象为维度进行存储,由此,可以提高缓存中数据的实时性和准确性,同时提高了数据查询请求在缓存中的命中率,进而提高了数据查询效率,降低了数据库的读写负担。
第二方面,本发明实施例提供一种数据处理装置,所述装置包括:
监听查询单元,被配置为响应于监听到数据库中的第一数据宽表发生数据变动,查询与所述第一数据宽表相关的第二数据宽表;
消息生成单元,被配置为根据所述第一数据宽表和所述第二数据宽表的数据变动生成数据变动消息;
缓存更新单元,被配置为根据所述数据变动消息更新缓存中对应的聚合宽表,所述聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定。
第三方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如本发明实施例第一方面所述的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如本发明实施例第一方面所述的方法。
第五方面,本发明实施例提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如本发明实施例第一方面所述的方法。
在本发明实施例中,响应于监听到数据库中的第一数据宽表发生数据变动,查询与第一数据宽表相关的第二数据宽表,根据第一数据宽表和第二数据宽表的数据变动生成数据变动消息,根据数据变动消息更新缓存中对应的聚合宽表,其中,聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定。由此,本发明实施例通过监听数据库实时更新缓存,实现了持久化缓存,并通过持久化缓存使得缓存的数据更新与数据查询分离,从而可以在缓存中以数据对象为维度进行存储,由此,可以提高缓存中数据的实时性和准确性,同时提高了数据查询请求在缓存中的命中率,进而提高了数据查询效率,降低了数据库的读写负担。
附图说明
通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1是现有技术的数据处理过程的示意图;
图2是本发明实施例的数据处理系统的示意图;
图3是本发明实施例的持久化模块的持久化过程示意图;
图4是本发明实施例的数据查询过程示意图;
图5是本发明实施例的数据处理方法的流程图;
图6是本发明实施例的数据查询方法的流程图;
图7是本发明实施例的数据处理装置的示意图;
图8是本发明实施例的数据查询装置的示意图;
图9是本发明实施例的电子设备的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。
此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。
除非上下文明确要求,否则在说明书的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1是现有技术的数据处理过程的示意图。在高并发的数据查询情况下,为避免所有请求都读取数据库,现有技术常用的解决方案是添加1-2秒的Redis缓存,Redis缓存是一个开源的非关系型数据库,数据模型是一系列的键值对。Redis缓存的优点是数据查询速度快,缺点是存储结构缺少结构化。由此,在现有技术中,在接收到查询数据的请求时,会先访问Redis缓存,若Redis缓存中存在数据则无需再访问数据库。
如图1所示,数据处理系统1包括数Redis缓存11和数据库12。其中,每隔预定时长(例如1-2秒)根据数据库12更新Redis缓存11。基于接收到的数据查询请求访问Redis缓存11,若Redis缓存11中存在所需数据,则返回数据查询结果,若Redis缓存11中不存在所需数据,则查询数据库12,以获取并返回数据查询结果。
在现有技术中,虽然可以避免所有数据查询请求都访问数据库,在一定程度上提高了数据查询速度,减小了数据库的读写负担。但是,由于数据库中的数据变动较快,例如电商系统下的商品名称、类目、价格、上下架状态等商品基本信息会根据运营配置修改,商品的销量、剩余数量等信息也会由于用户的购买行为频繁发生变化,由于这种根据上一次查询记录缓存的方式具有时效性,也即若Redis缓存中的数据长期不更新,用户访问到的结果与实际数据可能存在偏差,由此为了保证用户体验,需要频繁地全量更新Redis缓存,更新周期一般设置为1-2秒。
并且,在用户访问时通常会查询多个商品数据,由于Redis缓存是简单的键值对形式,这会产生难以命中缓存的情况。例如,假设一数据查询请求对应的商品有A、B、C三个,则在Redis缓存中存储的结构为A_B_C,后续数据查询请求只有在查询商品A、B、C时才能命中缓存,其他请求则需要查询数据库。但为了用户体验感,在用户访问页面时,页面展现的数据应当具有多样性,因此用户每次查询的商品并不是完全相同的,这导致查询Redis缓存时的命中率较低,大多数场景仍然需要访问数据库。由此,本发明实施例提供一种数据缓存方法,以使得缓存可以长期保存并保持准确性,提高数据查询效率。
图2是本发明实施例的数据处理系统的示意图。如图2所示,本发明实施例的数据处理系统2包括持久化模块21、查询模块23、缓存24和数据库25。在一种可选的实现方式中,持久化模块21控制初始化缓存24中的数据,也即控制将数据库25中的数据同步至缓存24中。可选的,数据库25可以为MySQL数据库,缓存可以采用Redis缓存。应理解,本实施例并不对数据库和缓存的类型进行限制。
在一种可选的实现方式中,在数据库中,对于某一对象信息,可能具有相关的多个数据宽表。以数据库中的商品信息为例,基于不同的维度,商品在数据库中具有多个关联的数据宽表,例如商品SPU(standard product unit,标准化产品单元)表和商品SKU(stockkeeping unit库存量单位/库存进出计量的单位,例如件等)表。其中,SPU表和SKU表是一对多的关系,也即,SPU表中的一条数据对应于SKU表中的多条数据。例如,一衣服商品对应与SPU表中的一条数据,包括该衣服商品的名称、价格等信息,该衣服商品具有不同的尺寸、颜色,则各尺寸和颜色分别对应于SKU表中的一条数据。
在将数据库25中的数据宽表同步至缓存24时,基于对应的聚合维度,将具有相关关系的多个数据宽表进行聚合,得到多个聚合宽表存储至缓存24中。可选的,聚合维度基于各数据宽表。其中,对于一数据宽表,以该数据宽表为聚合维度对该数据宽表以及与其相关的其他数据宽表进行聚合,得到以该数据宽表为聚合维度时对应的聚合宽表。可选的,缓存24中具有多个缓存单元,各聚合宽表存储在对应的缓存单元中。
可选的,每个数据宽表具有对应的表ID,聚合宽表的标识根据对应的聚合维度对应的数据宽表的表ID确定。例如,假设数据宽表A和B具有相关关系,若以数据宽表A为聚合维度进行数据宽表聚合,则根据数据宽表A的表ID确定对应的聚合宽表的标识,若以数据宽表B为聚合维度进行数据宽表聚合,则根据数据宽表B的表ID确定对应的聚合宽表的标识。可选的,可以直接将数据宽表的表ID作为聚合宽表的标识,也可以对数据宽表的表ID进行加密或数据转换等处理,得到聚合宽表的标识,本实施例并不对此进行限制。
在本实施例中,持久化模块21监听数据库25中的数据变动,并将监听到的数据变动同步至缓存24中,以更新缓存24。其中,持久化模块21响应于监听到数据库中的第一数据宽表变动,查询与该第一数据宽表相关的第二数据宽表,根据该第一数据宽表和与其相关的第二数据宽表的数据变动生成数据变动消息,根据该数据变动消息更新缓存24中对应的聚合宽表。其中,聚合宽表根据该第一数据宽表和与其相关的第二数据宽表聚合确定。在一种可选的实现方式中,聚合宽表包括以第一数据宽表为聚合维度得到的第一聚合宽表以及以第二数据宽表为聚合维度得到的第二聚合宽表。第一聚合宽表的标识根据第一数据宽表的表ID确定,第二聚合宽表的标识根据第二数据宽表的表ID确定。
在一种可选的实现方式中,持久化模块21通过Canal对数据库25进行监听,若检测到数据库25发生了数据变动,将数据变动消息发送至缓存24中,缓存24基于该数据变动消息进行数据更新。可选的,在本实施例中,缓存24在接收到数据库25的数据变动消息时,采用多线程对数据库25进行反查,以验证该数据变动消息的准确性,在确定该数据变动消息准确后,基于该数据变动消息进行数据更新。
图3是本发明实施例的持久化模块的持久化过程示意图。在一种可选的实现方式中,持久化模块21通过Canal对数据库25进行监听。如图3所示,Canal32在监听到数据库25中的第一数据宽表31发生数据变动时,查询与第一数据宽表31具有相关关系的第二数据宽表33,根据第一数据宽表31和至少一个第二数据宽表33生成数据变动消息,根据该数据变动消息更新或删除缓存24中对应的聚合宽表数据。
以商品信息为例,若发生商品信息的删除操作时,该商品信息在数据库25中对应的至少一个数据宽表数据被删除,Canal在监听到以数据宽表数据被删除后,查询与该数据宽表相关的其他数据宽表,并生成数据变动消息发送至缓存24,缓存24根据数据变动消息删除对应聚合宽表中的该商品的对应数据。若发生商品信息的修改操作时,该商品信息在数据库25中对应的至少一个数据宽表数据被修改,Canal在监听到以数据宽表数据被修改后,查询与该数据宽表相关的其他数据宽表,并生成数据变动消息发送至缓存24,缓存24根据数据变动消息修改对应聚合宽表中的该商品的对应数据。
其中,以MySQL数据库为例,MySQL数据库的主备复制原理为:将数据变动写入二进制日志(Binary log),其中的记录为二进制日志事件(Binary log events),MySQL slave将MySQL master的Binary log events拷贝到他的中继日志(relay log),MySQL slave重放relay log中的事件,基于数据变动同步其数据。基于MySQL数据库的主备复制原理,Canal可以通过模拟MySQL slave的交互协议来实现对MySQL数据库的监听。具体地,Canal通过模拟MySQL slave的交互协议,伪装自己为MySQL slave,向MySQL master发送dump协议,MySQL master收到dump请求,开始推送Binary log给MySQL slave(也即Canal),Canal解析binary log对象以获取数据变动信息。
以上述商品信息对应的商品SPU表和商品SKU表为例,商品SPU表和商品SKU表如下所示:
商品SPU表
SPU ID | 名称 | 价格 | 销量 | …… |
spuID1 | A1 | x1 | m1 | …… |
spuID2 | A2 | x2 | m2 | …… |
…… | …… | …… | …… | …… |
商品SKU表
SKU ID | SPU ID | 规格 | 图片 | 型号 | …… |
skuID1 | spuID1 | s1 | P1 | M1 | …… |
skuID2 | spuID1 | s2 | P2 | M2 | …… |
…… | …… | …… | …… | …… | …… |
由商品SPU表和商品SKU表可知,SPU表中的一条数据对应SKU表中的多条数据,例如,SPU表中的一条数据spuID1对应于SKU表中数据skuID1和skuID2。
假设数据库25中的SPU表中的spuID1这条数据发生数据变动,则查询与该SPU表相关的SKU表中的数据,并将SPU表和SKU表中的数据变动同步至缓存24中的以SPU为聚合维度进行聚合的聚合宽表,以及以SKU表为聚合维度进行聚合的聚合宽表。
以SPU为聚合维度进行聚合的聚合宽表如下:
索引 | 内容 |
spuID1 | 名称(A1)、价格(x1)、销量(m1)、skuID1、skuID2 |
…… | …… |
以SKU为聚合维度进行聚合的聚合宽表如下:
索引 | 内容 |
skuID1 | spuID1、规格(s1)、图片(P1)、型号(m1)、价格(x1)、销量(m1) |
skuID2 | spuID1、规格(s2)、图片(P2)、型号(m2)、价格(x1)、销量(m1) |
…… | …… |
在本实施例中,以一对多的SPU表和SKU表进行举例说明,应理解,在复杂的商品场景(如福袋、秒杀、盲盒等)中,商品信息有更多数据宽表构成,这些数据宽表可能是一对一关系、一对多关系或多对多关系,其均可采用上述聚合方式进行聚合,在此不再一一说明。
如上表所示,在缓存24中存储有商品对应的不同聚合维度的聚合宽表,由此,对于一商品,在采用不同索引方式进行数据查询时均可以较为快速地获取查询结果,提高了数据查询效率。同时,本实施例采用以商品为维度的缓存才取代键值对形式的缓存,提高了查询的命中率,降低了访问数据库的访问频率,减小了数据库的负担。
在一种可选的实现方式中,查询模块23响应于数据查询请求访问缓存24执行查询操作,响应于在缓存24中查询到所需数据,返回查询到的数据,响应于在缓存24中未查询到所需数据,访问数据库25执行查询操作,返回查询到的数据。
图4是本发明实施例的数据查询过程示意图。以查询商品信息为例,数据查询请求可以在进入购物平台页面时触发,根据用户偏好查询对应的N(N大于等于1)个商品信息并展示在购物平台页面,也可以在用户通过关键词搜索时触发,以根据关键词查询N个商品信息并展示在购物平台页面,本实施例并不对数据查询请求的触发条件进行限制。
如图4所示,查询模块23响应于接收到数据查询请求,根据数据查询请求查询缓存24中的缓存单元41,若从缓存24中的缓存单元41中查询到该数据查询请求对应的N个商品信息,则将包括N个商品信息的数据查询结果发送至沟通平台界面进行显示,若未从缓存24中的缓存单元41中查询到该数据查询请求对应的N个商品信息(也即缓存未命中),则记录本次查询,并根据数据查询请求查询数据库25,以获取数据查询请求对应的N个商品信息,并将包括N个商品信息的数据查询结果发送至沟通平台界面进行显示。
在一种可选的实现方式中,查询模块23响应于接收到的数据查询请求满足预定条件,访问缓存24执行查询操作,若在缓存24中能够查询到该数据查询请求对应的数据,返回数据查询结果,若在缓存24中未查询到该数据查询请求对应的数据,访问数据库25执行查询操作,获取并返回数据查询结果。可选的,预定条件为数据查询请求所要查询的数据量小于阈值。查询模块23通过查询接口依次查询数据对象(例如商品)对应的缓存信息,过多的查询次数同样会导致查询速度变慢,因此,若数据查询请求所要查询的数据量达到阈值(例如所要查询的商品数量大于阈值),通过访问缓存24的方式执行查询请求时,查询效率较低。由此,为了防止缓存24出现宕机等故障,增加了一键式开关,以控制查询接口是否启用持久化缓存。也即,查询模块23响应于数据查询请求所要查询的数据量小于阈值,打开一键式开关,以控制查询接口启用持久化缓存,由此,可以进一步保证数据查询效率。
在一种可选的实现方式中,持久化模块21定时刷新缓存24中的数据以防止异常数据。其中,本实施例可以参考未在缓存24中查询到数据的查询记录定时刷新缓存24,以及时准确地更新缓存24中的异常数据,或将数据库中的新增数据同步至缓存24中,从而可以提高缓存的命中率和数据查询效率,进一步降低数据库的负担。可选的,持久化模块21在流量低峰期定时刷新最近一段时间内(例如最近一周等)的缓存数据,以避免缓存24中存在异常数据。其中,流量低峰期根据用户历史查询行为确定,例如凌晨1点-6点之间为数据查询低峰期,在该时间段内的任意时间执行定时刷新,从而避免数据刷新造成的卡顿等问题。
在一种可选的实现方式中,本发明实施例的数据处理系统2还包括对账模块22。在数据处理系统中,持久化模块21中可能会出现超时问题,如Canal监听消息堆积,数据库查询失败或缓存更新操作失败等,本实施例通过对账模块22来解决上述问题。对账模块22被配置为周期性查询预定时间段内数据库和缓存中更新的数据,响应于数据库中的数据与缓存中的数据不一致,对缓存中的数据进行修复。
对账模块22被配置为周期性查询预定时间段内数据库25中更新的数据,同时访问缓存24,将数据库25中的数据与缓存24中的数据进行比对,响应于数据库25中的数据与缓存24中的数据不一致,以数据库25中的数据为基准,对缓存24中的数据进行修复,并发送告警消息至对应的开发终端。
可选的,若Canal监听到数据库25中存在新增字段,例如数据库中新增了“定金”字段,对账模块22接收到Canal的数据变更消息后,查询缓存24中是否缺失了该新增字段,响应于缓存24中存在字段缺失,发送告警消息至对应的开发终端。
由此,本实施例通过对账模块进一步确保缓存中的数据准确性,并对缓存中出现的数据异常进行相关告警,这进一步提高了数据查询请求在缓存中的命中率和数据查询效率,降低了数据库的负担。
本发明实施例通过监听数据库实时更新缓存,实现了持久化缓存,并通过持久化缓存使得缓存的数据更新与数据查询分离,从而可以在缓存中以数据对象(例如商品)为维度进行存储,由此,可以提高缓存中数据的实时性和准确性,同时提高了数据查询请求在缓存中的命中率,进而提高了数据查询效率,降低了数据库的读写负担。
图5是本发明实施例的数据处理方法的流程图。如图5所示,本发明实施例包括以下步骤:
步骤S110,响应于监听到数据库中的第一数据宽表发生数据变动,查询与所述第一数据宽表相关的第二数据宽表。在一种可选的实现方式中,本实施例中的数据库为MySQL数据库或其他数据库,本实施例通过Canal监听数据库中的数据变动。
可选的,数据库中包括至少一个与第一数据宽表相关的第二数据宽表,第一数据宽表与各第二数据宽表为一对一关系、一对多关系、或多对多关系,其中,一对一关系表征第一数据宽表中的一条数据对应第二数据宽表中的一条数据,一对多关系表征第一数据宽表中的一条数据对应第二数据宽表中的多条数据,多对多关系表征第一数据宽表中的多条数据对应第二数据宽表中的多条数据。
步骤S120,根据第一数据宽表和第二数据宽表的数据变动生成数据变动消息。
步骤S130,根据数据变动消息更新缓存中对应的聚合宽表。其中,聚合宽表根据第一数据宽表和第二数据宽表聚合确定。在一种可选的实现方式中,聚合宽表包括第一聚合宽表和第二聚合宽表。第一聚合宽表的标识根据第一数据宽表的表ID确定,第二聚合宽表的标识根据第二数据宽表的表ID确定。
在一种可选的实现方式中,步骤S130具体可以包括:响应于接收到数据变动消息,采用多线程反查所述数据库,以确定数据变动消息的准确性,响应于所述数据变动消息准确,根据所述数据变动消息更新缓存中对应的聚合宽表。也就是说,在本实施例中,缓存在接收到数据库的数据变动消息时,采用多线程对数据库进行反查,以验证该数据变动消息的准确性,在确定该数据变动消息准确后,基于该数据变动消息进行数据更新。
在一种可选的实现方式中,本实施例的数据处理方法还包括:初始化缓存中的数据。可选的,将数据库中的具有相关关系的至少两个数据宽表进行聚合,得到至少两个聚合宽表,将各聚合宽表分别存储值缓存中的缓存单元中。
可选的,在本实施例中,基于对应的聚合维度,将数据库中的具有相关关系的至少两个数据宽表进行聚合,得到至少两个聚合宽表。聚合维度基于各数据宽表。对于一数据宽表,以该数据宽表为聚合维度对该数据宽表以及与其相关的其他数据宽表进行聚合,得到以该数据宽表为聚合维度时对应的聚合宽表。
可选的,每个数据宽表具有对应的表ID,聚合宽表的标识根据对应的聚合维度对应的数据宽表的表ID确定。例如,假设数据宽表A和B具有相关关系,若以数据宽表A为聚合维度进行数据宽表聚合,则根据数据宽表A的表ID确定对应的聚合宽表的标识,若以数据宽表B为聚合维度进行数据宽表聚合,则根据数据宽表B的表ID确定对应的聚合宽表的标识。可选的,可以直接将数据宽表的表ID作为聚合宽表的标识,也可以对数据宽表的表ID进行加密或数据转换等处理,得到聚合宽表的标识,本实施例并不对此进行限制。
在一种可选的实现方式中,本实施例的数据处理方法还包括:根据第一预定时间段内的数据库的数据变化,定时刷新缓存中的数据,以防止缓存中出现异常数据。可选的,在本实施例中,在流量低峰期定时刷新最近一段时间内(例如最近一周等)的缓存数据,以避免缓存中存在异常数据。其中,流量低峰期根据用户历史查询行为确定,例如凌晨1点-6点之间为数据查询低峰期,在该时间段内的任意时间执行定时刷新,从而避免数据刷新造成的卡顿等问题。
可选的,本实施例可以参考未在缓存中查询到数据的查询记录定时刷新缓存,以及时准确地更新缓存中的异常数据,或将数据库中的新增数据同步至缓存中,从而可以提高缓存的命中率和数据查询效率,进一步降低数据库的负担。
在一种可选的实现方式中,本实施例的数据处理方法还包括:周期性查询第二预定时间段内的数据库和缓存中更新的数据,响应于数据库中的数据和缓存中的数据不一致,对缓存中的数据进行修复。可选的,在本实施例中,响应于数据库中的数据和缓存中的数据不一致,和/或缓存中具有缺失字段,发送告警消息至相关开发终端,以使得开发人员根据告警消息解决相关问题。由此,可以解决监听消息堆积,数据库查询失败或缓存更新操作失败等所带来的问题,进一步确保缓存中的数据准确性,并对缓存中出现的数据异常进行相关告警,这进一步提高了数据查询请求在缓存中的命中率和数据查询效率,降低了数据库的负担。
在本发明实施例中,响应于监听到数据库中的第一数据宽表发生数据变动,查询与第一数据宽表相关的第二数据宽表,根据第一数据宽表和第二数据宽表的数据变动生成数据变动消息,根据数据变动消息更新缓存中对应的聚合宽表,其中,聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定。由此,本发明实施例通过监听数据库实时更新缓存,实现了持久化缓存,并通过持久化缓存使得缓存的数据更新与数据查询分离,从而可以在缓存中以数据对象为维度进行存储,由此,可以提高缓存中数据的实时性和准确性,同时提高了数据查询请求在缓存中的命中率,进而提高了数据查询效率,降低了数据库的读写负担。
图6是本发明实施例的数据查询方法的流程图。如图6所示,本发明实施例的数据查询方法包括以下步骤:
步骤S210,接收数据查询请求。可选的,以查询商品信息为例,数据查询请求可以在进入购物平台页面时触发,根据用户偏好查询对应的N(N大于等于1)个商品信息并展示在购物平台页面,也可以在用户通过关键词搜索时触发,以根据关键词查询N个商品信息并展示在购物平台页面,本实施例并不对数据查询请求的触发条件进行限制。
步骤S220,判断数据查询请求所要查询的数据量是否小于阈值,若所要查询的数据量小于阈值,执行步骤S230,也即访问缓存执行查询操作,若所要查询的数据量不小于阈值,执行步骤S250,也即访问数据库执行查询操作。
在本实施例中,通过查询接口依次查询数据对象(例如商品)对应的缓存信息,过多的查询次数同样会导致查询速度变慢,因此,若数据查询请求所要查询的数据量达到阈值(例如所要查询的商品数量大于阈值),通过访问缓存的方式执行查询请求时,查询效率较低。由此,为了防止缓存出现宕机等故障,增加了一键式开关,以控制查询接口是否启用持久化缓存。也即,在本实施例中,响应于数据查询请求所要查询的数据量小于阈值,打开一键式开关,以控制查询接口启用持久化缓存,由此,可以进一步保证数据查询效率。
步骤S230,访问缓存执行查询操作。
步骤S240,判断是否在缓存中命中,也即是否在缓存中查询要该数据查询请求对应的数据。若在缓存中查询到所需数据,则执行步骤S260,也即返回数据查询结果,若在缓存中未查询到所需数据,则执行步骤S250,也即访问数据库执行查询操作。
步骤S250,访问数据库执行查询操作。
步骤S260,返回数据查询结果。
在本实施例中,缓存中存储有多个聚合宽表,各聚合宽表根据数据库中的至少两个数据宽表聚合确定,聚合宽表的标识根据对应的数据宽表的表ID确定。可选的,各聚合宽表根据数据库中的至少两个数据宽表基于对应的聚合维度聚合确定。聚合维度基于各所述数据宽表,聚合宽表的标识根据聚合维度对应的数据宽表的表ID确定。
并且,在本实施例中,通过监听数据库中的数据宽表的数据变动来实时更新缓存中对应的聚合宽表,由此,实现的持久化缓存,并通过持久化缓存使得缓存的数据更新与数据查询分离,从而可以在缓存中以数据对象为维度进行存储,由此,可以提高缓存中数据的实时性和准确性,同时提高了数据查询请求在缓存中的命中率,进而提高了数据查询效率,降低了数据库的读写负担。
图7是本发明实施例的数据处理装置的示意图。如图7所示,本发明实施例的数据处理装置7包括监听查询单元71、消息生成单元72和缓存更新单元73。
监听查询单元71被配置为响应于监听到数据库中的第一数据宽表发生数据变动,查询与所述第一数据宽表相关的第二数据宽表。消息生成单元72被配置为根据所述第一数据宽表和所述第二数据宽表的数据变动生成数据变动消息。缓存更新单元73被配置为根据所述数据变动消息更新缓存中对应的聚合宽表,所述聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定。
在一种可选的实现方式中,所述聚合宽表包括第一聚合宽表和第二聚合宽表。其中,所述第一聚合宽表的标识根据第一数据宽表的表ID确定,所述第二聚合宽表的标识根据所述第二数据宽表的表ID确定。
在一种可选的实现方式中,缓存更新单元73包括反查子单元和缓存更新子单元。反查子单元被配置为响应于接收到数据变动消息,采用多线程反查所述数据库,以确定所述数据变动消息的准确性。缓存更新子单元被配置为响应于所述数据变动消息准确,根据所述数据变动消息更新缓存中对应的聚合宽表。
在一种可选的实现方式中,数据处理装置7还包括初始化单元。初始化单元被配置为初始化所述缓存中的数据。
在一种可选的实现方式中,初始化单元包括聚合子单元和同步子单元。聚合子单元被配置为将数据库中的具有相关关系的至少两个数据宽表进行聚合,得到至少两个聚合宽表。同步子单元被配置为将各所述聚合宽表分别存储至所述缓存中的缓存单元中。
在一种可选的实现方式中,数据处理装置7还包括定时刷新单元。定时刷新单元被配置为根据第一预定时间段内的所述数据库的数据变化,定时刷新所述缓存中的数据。
在一种可选的实现方式中,数据处理装置7还包括周期性查询单元和数据修复单元。周期性查询单元被配置为周期性查询第二预定时间段内的所述数据库和所述缓存中更新的数据。数据修复单元被配置为响应于所述数据库中的数据和所述缓存中的数据不一致,对所述缓存中的数据进行修复。
在一种可选的实现方式中,数据处理装置7还包括告警单元。告警单元被配置为响应于所述数据库中的数据和所述缓存中的数据不一致,和/或所述缓存中具有缺失字段,发送告警消息。
在一种可选的实现方式中,数据处理装置7还包括数据监听单元。数据监听单元被配置为通过Canal监听数据库中的数据变动。
在一种可选的实现方式中,数据处理装置7还包括第一查询单元。第一查询单元被配置为响应于数据查询请求,访问所述缓存执行查询操作。
在一种可选的实现方式中,响应于数据查询请求,第一查询单元包括第一查询子单元。第一查询子单元被配置为响应于所述数据查询请求满足预定条件,访问所述缓存执行查询操作。
在一种可选的实现方式中,数据处理装置7还包括第二查询单元。第二查询单元被配置为响应于所述数据查询请求不满足预定条件,或在所述缓存中未查询到所需数据,访问所述数据库执行查询操作。
在一种可选的实现方式中,所述预定条件为所述数据查询请求所要查询的数据量小于阈值。
在本发明实施例中,响应于监听到数据库中的第一数据宽表发生数据变动,查询与第一数据宽表相关的第二数据宽表,根据第一数据宽表和第二数据宽表的数据变动生成数据变动消息,根据数据变动消息更新缓存中对应的聚合宽表,其中,聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定。由此,本发明实施例通过监听数据库实时更新缓存,实现了持久化缓存,并通过持久化缓存使得缓存的数据更新与数据查询分离,从而可以在缓存中以数据对象为维度进行存储,由此,可以提高缓存中数据的实时性和准确性,同时提高了数据查询请求在缓存中的命中率,进而提高了数据查询效率,降低了数据库的读写负担。
图8是本发明实施例的数据查询装置的示意图。本发明实施例的数据查询装置8包括请求接收单元81和第一查询单元82。请求接收单元81被配置为接收数据查询请求。第一查询单元82被配置为响应于所述数据查询请求所要查询的数据量小于阈值,访问缓存执行查询操作。其中,所述缓存中存储有多个聚合宽表,所述聚合宽表根据数据库中的至少两个数据宽表聚合确定。可选的,所述聚合宽表的标识根据对应的数据宽表的表ID确定。
在一种可选的实现方式中,数据查询装置8还包括第二查询单元。第二查询单元被配置为响应于所述数据查询请求所要查询的数据量达到阈值,或在所述缓存中未查询到所需数据,访问所述数据库执行查询操作。
在本实施例中,通过查询接口依次查询数据对象(例如商品)对应的缓存信息,过多的查询次数同样会导致查询速度变慢,因此,若数据查询请求所要查询的数据量达到阈值(例如所要查询的商品数量大于阈值),通过访问缓存的方式执行查询请求时,查询效率较低。由此,为了防止缓存出现宕机等故障,增加了一键式开关,以控制查询接口是否启用持久化缓存。也即,在本实施例中,响应于数据查询请求所要查询的数据量小于阈值,打开一键式开关,以控制查询接口启用持久化缓存,由此,可以进一步保证数据查询效率。
并且,在本实施例中,通过监听数据库中的数据宽表的数据变动来实时更新缓存中对应的聚合宽表,由此,实现的持久化缓存,并通过持久化缓存使得缓存的数据更新与数据查询分离,从而可以在缓存中以数据对象为维度进行存储,由此,可以提高缓存中数据的实时性和准确性,同时提高了数据查询请求在缓存中的命中率,进而提高了数据查询效率,降低了数据库的读写负担。
图9是本发明实施例的电子设备的示意图。如图9所示,电子设备9为通用数据处理装置,其包括通用的计算机硬件结构,其至少包括处理器91和存储器92。处理器91和存储器92通过总线93连接。存储器92适于存储处理器91可执行的指令或程序。处理器91可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器91通过执行存储器92所存储的指令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其它装置的控制。总线93将上述多个组件连接在一起,同时将上述组件可以连接到显示控制器和显示装置以及输入/输出(I/O)装置。输入/输出(I/O)装置可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出装置通过输入/输出(I/O)控制器与系统相连。
本领域的技术人员应明白,本申请的实施例可提供为方法、装置(设备)或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品。
本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图来描述的。应理解可由计算机程序指令实现流程图中的每一流程。
这些计算机程序指令可以存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现流程图一个流程或多个流程中指定的功能。
也可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程中指定的功能的装置。
本发明的另一实施例涉及一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述部分或全部的方法实施例。
本发明的另一实施例涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指定相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种数据处理方法,其特征在于,所述方法包括:
响应于监听到数据库中的第一数据宽表发生数据变动,查询与所述第一数据宽表相关的第二数据宽表,其中,所述第一数据宽表和第二数据宽表为将业务主体相关的指标、维度、属性关联在一起的数据宽表;
根据所述第一数据宽表和所述第二数据宽表的数据变动生成数据变动消息;
根据所述数据变动消息更新缓存中对应的聚合宽表,所述聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定,包括以第一数据宽表为聚合维度得到的第一聚合宽表以及以第二数据宽表为聚合维度得到的第二聚合宽表。
2.根据权利要求1所述的方法,其特征在于,所述聚合宽表包括第一聚合宽表和第二聚合宽表;其中,所述第一聚合宽表的标识根据第一数据宽表的表ID确定,所述第二聚合宽表的标识根据所述第二数据宽表的表ID确定。
3.根据权利要求1所述的方法,其特征在于,根据所述数据变动消息更新缓存中对应的聚合宽表包括:
响应于接收到数据变动消息,采用多线程反查所述数据库,以确定所述数据变动消息的准确性;
响应于所述数据变动消息准确,根据所述数据变动消息更新缓存中对应的聚合宽表。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
初始化所述缓存中的数据。
5.根据权利要求4所述的方法,其特征在于,初始化所述缓存中的数据包括:
将数据库中的具有相关关系的至少两个数据宽表进行聚合,得到至少两个聚合宽表;
将各所述聚合宽表分别存储至所述缓存中的缓存单元中。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据第一预定时间段内的所述数据库的数据变化,定时刷新所述缓存中的数据。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
周期性查询第二预定时间段内的所述数据库和所述缓存中更新的数据;
响应于所述数据库中的数据和所述缓存中的数据不一致,对所述缓存中的数据进行修复。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
响应于所述数据库中的数据和所述缓存中的数据不一致,和/或所述缓存中具有缺失字段,发送告警消息。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过Canal监听数据库中的数据变动。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于数据查询请求,访问所述缓存执行查询操作。
11.根据权利要求10所述的方法,其特征在于,响应于数据查询请求,访问所述缓存执行查询操作包括:
响应于所述数据查询请求满足预定条件,访问所述缓存执行查询操作。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
响应于所述数据查询请求不满足预定条件,或在所述缓存中未查询到所需数据,访问所述数据库执行查询操作。
13.根据权利要求11或12所述的方法,其特征在于,所述预定条件为所述数据查询请求所要查询的数据量小于阈值。
14.一种数据处理装置,其特征在于,所述装置包括:
监听查询单元,被配置为响应于监听到数据库中的第一数据宽表发生数据变动,查询与所述第一数据宽表相关的第二数据宽表,其中,所述第一数据宽表和第二数据宽表为将业务主体相关的指标、维度、属性关联在一起的数据宽表;
消息生成单元,被配置为根据所述第一数据宽表和所述第二数据宽表的数据变动生成数据变动消息;
缓存更新单元,被配置为根据所述数据变动消息更新缓存中对应的聚合宽表,所述聚合宽表根据所述第一数据宽表和第二数据宽表聚合确定,包括以第一数据宽表为聚合维度得到的第一聚合宽表以及以第二数据宽表为聚合维度得到的第二聚合宽表。
15.一种电子设备,包括存储器和处理器,其特征在于,所述存储器用于存储一条或多条计算机程序指令,其中,所述一条或多条计算机程序指令被所述处理器执行以实现如权利要求1-13中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110204787.3A CN112925808B (zh) | 2021-02-23 | 2021-02-23 | 数据处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110204787.3A CN112925808B (zh) | 2021-02-23 | 2021-02-23 | 数据处理方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112925808A CN112925808A (zh) | 2021-06-08 |
CN112925808B true CN112925808B (zh) | 2023-08-15 |
Family
ID=76170666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110204787.3A Active CN112925808B (zh) | 2021-02-23 | 2021-02-23 | 数据处理方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112925808B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189835A (zh) * | 2018-08-21 | 2019-01-11 | 北京京东尚科信息技术有限公司 | 实时生成数据宽表的方法和装置 |
CN109471863A (zh) * | 2018-11-12 | 2019-03-15 | 北京懿医云科技有限公司 | 基于分布式数据库的信息查询方法及装置、电子设备 |
CN110781203A (zh) * | 2019-09-09 | 2020-02-11 | 国网电子商务有限公司 | 一种数据宽表的确定方法及装置 |
CN111723110A (zh) * | 2019-03-21 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 分布式缓存系统及关联查询和更新方法、设备与存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108228817B (zh) * | 2017-12-29 | 2021-12-03 | 华为技术有限公司 | 数据处理方法、装置和系统 |
-
2021
- 2021-02-23 CN CN202110204787.3A patent/CN112925808B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189835A (zh) * | 2018-08-21 | 2019-01-11 | 北京京东尚科信息技术有限公司 | 实时生成数据宽表的方法和装置 |
CN109471863A (zh) * | 2018-11-12 | 2019-03-15 | 北京懿医云科技有限公司 | 基于分布式数据库的信息查询方法及装置、电子设备 |
CN111723110A (zh) * | 2019-03-21 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 分布式缓存系统及关联查询和更新方法、设备与存储介质 |
CN110781203A (zh) * | 2019-09-09 | 2020-02-11 | 国网电子商务有限公司 | 一种数据宽表的确定方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112925808A (zh) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10282446B2 (en) | Dynamic selection of source table for DB rollup aggregation and query rewrite based on model driven definitions and cardinality estimates | |
CN107092544B (zh) | 监控方法及装置 | |
CN109213792B (zh) | 数据处理的方法、服务端、客户端、装置及可读存储介质 | |
CN105095393A (zh) | 一种数据存储方法及装置 | |
WO2022007592A1 (zh) | 数据多维分析方法、装置及系统 | |
CN104281582A (zh) | 分页显示控制方法和装置 | |
US20190370235A1 (en) | Information Processing Method and Apparatus | |
CN107729500B (zh) | 一种联机分析处理的数据处理方法、装置及后台设备 | |
CN103186401A (zh) | 一种软件系统及其配置更新方法 | |
CN112925808B (zh) | 数据处理方法、装置及电子设备 | |
CN106547751B (zh) | 缓存数据的更新方法及装置 | |
CN100413257C (zh) | 网元告警数据获取方法 | |
US20190005086A1 (en) | System and method for system for determining database relations based on data monitoring | |
US20210096993A1 (en) | Cache coherency engine | |
US20130024483A1 (en) | Distribution of data within a database | |
US20230252025A1 (en) | Data Processing System, Blockchain-Based Data Processing Method, and Device | |
WO2017032244A1 (zh) | 一种行为记录的存储方法和设备 | |
CN111932338A (zh) | 一种商品推荐方法、装置、设备及存储介质 | |
CN111522850A (zh) | 一种数据对象的存储和查询方法、装置、设备和存储介质 | |
CN102067118A (zh) | 用于存储分别属于包含多个属性的警告或事件消息的数据的方法和装置 | |
CN105683961B (zh) | 管理用于假设分析的回写的数据的方法和系统 | |
CN112182078B (zh) | 一种电子产品的发布、使用方法、装置、设备及存储介质 | |
US9830339B2 (en) | Data processing system for processing interactions | |
US20230359506A1 (en) | Methods and apparatus for aggregating metadata of multiple cloud databases | |
US11960466B2 (en) | Methods and apparatus for data and data request management |
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 |