CN117435605A - 数据更新方法、装置、终端设备以及存储介质 - Google Patents
数据更新方法、装置、终端设备以及存储介质 Download PDFInfo
- Publication number
- CN117435605A CN117435605A CN202311633578.6A CN202311633578A CN117435605A CN 117435605 A CN117435605 A CN 117435605A CN 202311633578 A CN202311633578 A CN 202311633578A CN 117435605 A CN117435605 A CN 117435605A
- Authority
- CN
- China
- Prior art keywords
- data
- updated
- updating
- document
- array
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 238000013507 mapping Methods 0.000 claims abstract description 85
- 238000012545 processing Methods 0.000 claims abstract description 85
- 230000009467 reduction Effects 0.000 claims abstract description 61
- 238000012546 transfer Methods 0.000 claims abstract description 55
- 238000013506 data mapping Methods 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 3
- 241001178520 Stomatepia mongo Species 0.000 description 24
- 230000008569 process Effects 0.000 description 13
- 230000004044 response Effects 0.000 description 11
- 230000003993 interaction Effects 0.000 description 9
- 230000002776 aggregation Effects 0.000 description 6
- 238000004220 aggregation Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 239000010410 layer Substances 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 239000000047 product Substances 0.000 description 5
- 230000001502 supplementing effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000007670 refining Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Abstract
本申请公开了一种数据更新方法、装置、终端设备以及存储介质,涉及数据库数据更新领域,其方法包括:获取待更新数据;对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;提取所述映射后的待更新数据的主键信息,得到待查询主键;根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档,本发明提高了数据更新效率。
Description
技术领域
本申请涉及数据库数据更新领域,尤其涉及一种数据更新方法、装置、终端设备以及存储介质。
背景技术
多表关联查询是常见的数据库查询操作之一,通常在涉及多个表格的业务场景中使用。具体地,在多表关联查询的业务场景中,为降低对于业务数据库的消耗,通常将多表数据存储到ElasticSearch(搜索服务器)数据库中,使用ElasticSearch数据库的统计和查询能力来满足业务场景的需要。
然而,这种将多表数据存储到ElasticSearch的数据存储方式,在数据更新时,会有数据更新效率低的问题。具体地,对ElasticSearch数据库的数据更新时,需要先查询待更新数据在数据库中对应的数据文档,然后将若干个数据文档进行聚合得到聚合文档,再将待更新数据进行更新并覆盖到聚合文档中,最后将更新后的聚合文档写回ElasticSearch数据库,可以理解地,上述数据更新流程繁琐,降低数据更新效率。尤其对于涉及子文档以数组进行聚合后再存储的复杂更新方式,具体需要在ElasticSearch数据库中,先查询出完整的聚合文档后,再遍历数组并定位到子文档后,才能进行待更新数据的更新覆盖操作,最后将更新后的聚合文档写回ElasticSearch数据库,上述过程由于需要遍历数组和查询若干个数据文档来聚合文档,要多次与ElasticSearch数据库进行交互,造成文档更新效率低的问题。
发明内容
本申请的主要目的在于提供一种数据更新方法、装置、终端设备以及存储介质,旨在提高数据更新效率。
为实现上述目的,本申请提供一种数据更新方法,所述数据更新方法包括:
获取待更新数据;
对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;
提取所述映射后的待更新数据的主键信息,得到待查询主键;
根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;
根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。
可选地,所述对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤包括:
基于预设的配置文件,识别所述待更新数据的数据结构,得到主键信息、数组信息和待更新键值;
基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息;
将所述路径信息和所述待更新键值进行组合,得到所述映射后的待更新数据。
可选地,所述根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档的步骤包括:
根据所述映射后的待更新数据的路径信息,定位所述聚合文档,得到待更新位置;
将所述聚合文档的待更新位置对应的键值更新为所述待更新键值,得到所述更新后的聚合文档。
可选地,所述基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息的步骤之前还包括:
判断所述待更新数据是否属于主表;
所述基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息的步骤包括:
若所述待更新数据不属于主表,则基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到所述路径信息。
可选地,所述获取待更新数据的步骤包括:
通过预设的更新窗口获取待更新数据;
所述对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤包括:
计算所述更新窗口内所述待更新数据的数量,得到所述待更新数据的条数;
当所述待更新数据的条数满足预设更新条数阈值条件或所述更新窗口的队列时间满足预设更新时间阈值条件时,对所述待更新数据进行去重,得到去重后的待更新数据;
对所述去重后的待更新数据进行路径映射处理,得到所述映射后的待更新数据。
可选地,所述根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档的步骤之后还包括:
将所述待查询主键发送至还原窗口;
计算所述还原窗口内所述待查询主键的数量,得到所述待查询主键的条数;
所述根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档的步骤的包括:
当所述待查询主键的条数满足预设查询条数阈值条件或所述还原窗口的队列时间满足预设还原时间阈值条件时,对所述待查询主键进行去重,得到去重后的待查询主键;
根据所述去重后的待查询主键,对所述更新后的聚合文档进行数组还原,得到所述最终文档。
可选地,所述对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤之前还包括:
基于所述待更新数据,对所述待更新数据的数据表进行类型识别,得到数据表类型;
根据所述数据表类型进行配置,得到所述配置文件。
本申请实施例还提出一种数据更新装置,所述数据更新装置包括:
数据获取模块,用于获取待更新数据;
数据映射模块,用于对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;
主键提取模块,用于提取所述映射后的待更新数据的主键信息,得到待查询主键;
数据更新模块,用于根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;
数据还原模块,用于根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。
本申请实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据更新程序,所述数据更新程序被所述处理器执行时实现如上所述的数据更新方法的步骤。
本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据更新程序,所述数据更新程序被处理器执行时实现如上所述的数据更新方法的步骤。
本申请实施例提出的数据更新方法、装置、终端设备以及存储介质,通过获取待更新数据;对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;提取所述映射后的待更新数据的主键信息,得到待查询主键;根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。通过将待更新数据进行数组路径映射处理,得到不包含数组结构的映射后的待更新数据,以及映射后的待更新数据对应的待查询主键;再根据映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;最后,根据待查询主键对所述更新后的聚合文档进行数组还原,得到最终文档并将所述最终文档存储于最终数据库;其中,中转数据库和最终数据库存储的数据结构不同,中转数据库是以扁平化的路径的形式进行存储,最终数据库是以数组的形式存储。上述过程将复杂的数组结构的待更新数据进行映射后,得到简单数据结构的映射后的待更新数据,因为映射后的待更新数据的数据格式和聚合文档一致且提前在中转数据库中存储了相应的聚合文档,从而可以直接以简单的局部更新方式对中转数据库的聚合文档进行更新,而无须对最终数据库中的复杂数组结构进行遍历查询出聚合文档,可以降低与最终数据库的数据交互频率,能够减轻数据库的负载,提高数据库的响应速度和并发处理能力,提高数据更新效率。
附图说明
图1为本申请数据更新装置所属终端设备的功能模块示意图;
图2为本申请数据更新方法第一示例性实施例的流程示意图;
图3为本申请涉及的数据更新和还原整体流程框架示意图;
图4为本申请涉及的配置文件结构示意图;
图5为本申请涉及的待更新数据映射流程示意图;
图6为本申请涉及的聚合文档更新流程示意图;
图7为本申请涉及的聚合文档的节点结构示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例的主要解决方案是:通过获取待更新数据;对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;提取所述映射后的待更新数据的主键信息,得到待查询主键;根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。通过将待更新数据进行数组路径映射处理,得到不包含数组结构的映射后的待更新数据,以及映射后的待更新数据对应的待查询主键;再根据映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;最后,根据待查询主键对所述更新后的聚合文档进行数组还原,得到最终文档并将所述最终文档存储于最终数据库;其中,中转数据库和最终数据库存储的数据结构不同,中转数据库是以扁平化的路径的形式进行存储,最终数据库是以数组的形式存储。上述过程将复杂的数组结构的待更新数据进行映射后,得到简单数据结构的映射后的待更新数据,因为映射后的待更新数据的数据格式和聚合文档一致且提前在中转数据库中存储了相应的聚合文档,从而可以直接以简单的局部更新方式对中转数据库的聚合文档进行更新,而无须对最终数据库中的复杂数组结构进行遍历查询出聚合文档,可以降低与最终数据库的数据交互频率,能够减轻数据库的负载,提高数据库的响应速度和并发处理能力,提高数据更新效率。
本申请实施例考虑到,多表关联查询是常见的数据库查询操作之一,通常在涉及多个表格的业务场景中使用。具体地,在多表关联查询的业务场景中,为降低对于业务数据库的消耗,通常将多表数据存储到ElasticSearch(搜索服务器)数据库中,使用ElasticSearch数据库的统计和查询能力来满足业务场景的需要。
然而,这种将多表数据存储到ElasticSearch的数据存储方式,在数据更新时,会有数据更新效率低的问题。具体地,对ElasticSearch数据库的数据更新时,需要先查询待更新数据在数据库中对应的数据文档,然后将若干个数据文档进行聚合得到聚合文档,再将待更新数据进行更新并覆盖到聚合文档中,最后将更新后的聚合文档写回ElasticSearch数据库,可以理解地,上述数据更新流程繁琐,降低数据更新效率。尤其对于涉及子文档以数组进行聚合后再存储的复杂更新方式,具体需要在ElasticSearch数据库中,先查询出完整的聚合文档后,再遍历数组并定位到子文档后,才能进行待更新数据的更新覆盖操作,最后将更新后的聚合文档写回ElasticSearch数据库,上述过程由于需要遍历数组和查询若干个数据文档来聚合文档,要多次与ElasticSearch数据库进行交互,造成文档更新效率低的问题。
基于此,本申请实施例提出一种解决方案,通过将待更新数据进行数组路径映射处理,得到不包含数组结构的映射后的待更新数据,以及映射后的待更新数据对应的待查询主键;再根据映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;最后,根据待查询主键对所述更新后的聚合文档进行数组还原,得到最终文档并将所述最终文档存储于最终数据库;其中,中转数据库和最终数据库存储的数据结构不同,中转数据库是以扁平化的路径的形式进行存储,最终数据库是以数组的形式存储。上述过程将复杂的数组结构的待更新数据进行映射后,得到简单数据结构的映射后的待更新数据,因为映射后的待更新数据的数据格式和聚合文档一致且提前在中转数据库中存储了相应的聚合文档,从而可以直接以简单的局部更新方式对中转数据库的聚合文档进行更新,而无须对最终数据库中的复杂数组结构进行遍历查询出聚合文档,可以降低与最终数据库的数据交互频率,能够减轻数据库的负载,提高数据库的响应速度和并发处理能力。
具体地,参照图1,图1为本申请数据更新装置所属终端设备的功能模块示意图。该数据更新装置可以为独立于终端设备的、能够进行数据处理的装置,也可以通过硬件或软件的形式承载于终端设备上。
在本实施例中,该数据更新装置所属终端设备至少包括输出模块110、处理器120、存储器130以及通信模块140。
存储器130中存储有操作系统以及数据更新程序,获取待更新数据;
对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;提取所述映射后的待更新数据的主键信息,得到待查询主键;根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档并将所述最终文档存储于该存储器130中;输出模块110可为显示屏、扬声器等。通信模块140可以包括WIFI模块、移动通信模块以及蓝牙模块等,通过通信模块140与外部设备或服务器进行通信。
其中,存储器130中的数据更新程序被处理器执行时实现以下步骤:
获取待更新数据;对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;提取所述映射后的待更新数据的主键信息,得到待查询主键;根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。
进一步地,存储器130中的数据更新程序被处理器执行时还实现以下步骤:
基于预设的配置文件,识别所述待更新数据的数据结构,得到主键信息、数组信息和待更新键值;基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息;将所述路径信息和所述待更新键值进行组合,得到所述映射后的待更新数据。
进一步地,存储器130中的数据更新程序被处理器执行时还实现以下步骤:
根据所述映射后的待更新数据的路径信息,定位所述聚合文档,得到待更新位置;将所述聚合文档的待更新位置对应的键值更新为所述待更新键值,得到所述更新后的聚合文档。
进一步地,存储器130中的数据更新程序被处理器执行时还实现以下步骤:
判断所述待更新数据是否属于主表;所述基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息的步骤包括:若所述待更新数据不属于主表,则基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到所述路径信息。
进一步地,存储器130中的数据更新程序被处理器执行时还实现以下步骤:
通过预设的更新窗口获取待更新数据;所述对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤包括:计算所述更新窗口内所述待更新数据的数量,得到所述待更新数据的条数;当所述待更新数据的条数满足预设更新条数阈值条件或所述更新窗口的队列时间满足预设更新时间阈值条件时,对所述待更新数据进行去重,得到去重后的待更新数据;对所述去重后的待更新数据进行路径映射处理,得到所述映射后的待更新数据。
进一步地,存储器130中的数据更新程序被处理器执行时还实现以下步骤:
将所述待查询主键发送至还原窗口;计算所述还原窗口内所述待查询主键的数量,得到所述待查询主键的条数;所述根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档的步骤的包括:当所述待查询主键的条数满足预设查询条数阈值条件或所述还原窗口的队列时间满足预设还原时间阈值条件时,对所述待查询主键进行去重,得到去重后的待查询主键;根据所述去重后的待查询主键,对所述更新后的聚合文档进行数组还原,得到所述最终文档。
进一步地,存储器130中的数据更新程序被处理器执行时还实现以下步骤:
基于所述待更新数据,对所述待更新数据的数据表进行类型识别,得到数据表类型;根据所述数据表类型进行配置,得到所述配置文件。
本实施例通过上述方案,通过获取待更新数据;对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;提取所述映射后的待更新数据的主键信息,得到待查询主键;根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。通过将待更新数据进行数组路径映射处理,得到不包含数组结构的映射后的待更新数据,以及映射后的待更新数据对应的待查询主键;再根据映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;最后,根据待查询主键对所述更新后的聚合文档进行数组还原,得到最终文档并将所述最终文档存储于最终数据库;其中,中转数据库和最终数据库存储的数据结构不同,中转数据库是以扁平化的路径的形式进行存储,最终数据库是以数组的形式存储。上述过程将复杂的数组结构的待更新数据进行映射后,得到简单数据结构的映射后的待更新数据,因为映射后的待更新数据的数据格式和聚合文档一致且提前在中转数据库中存储了相应的聚合文档,从而可以直接以简单的局部更新方式对中转数据库的聚合文档进行更新,而无须对最终数据库中的复杂数组结构进行遍历查询出聚合文档,可以降低与最终数据库的数据交互频率,能够减轻数据库的负载,提高数据库的响应速度和并发处理能力,提高数据更新效率。
基于上述终端设备架构但不限于上述架构,提出本申请方法实施例。
参照图2,图2为本申请数据更新方法第一示例性实施例的流程示意图。
本发明一实施例提供一种数据更新方法,该方法包括:
步骤S10,获取待更新数据;
多表关联查询是常见的数据库查询操作之一,通常在涉及多个表格的业务场景中使用,多表关联查询需要通过连接两个或多个表格来检索相关数据,从而提供更全面的信息。
多表关联查询是常见的数据库查询操作之一,通常在涉及多个表格的业务场景中使用。具体地,在多表关联查询的业务场景中,为降低对于业务数据库的消耗,通常将多表数据存储到ElasticSearch(搜索服务器)数据库中,使用ElasticSearch数据库的统计和查询能力来满足业务场景的需要。
然而,这种将多表数据存储到ElasticSearch的数据存储方式,在数据更新时,会有数据更新效率低的问题。具体地,对ElasticSearch数据库的数据更新时,需要先查询待更新数据在数据库中对应的数据文档,然后将若干个数据文档进行聚合得到聚合文档,再将待更新数据进行更新并覆盖到聚合文档中,最后将更新后的聚合文档写回ElasticSearch数据库,可以理解地,上述数据更新流程繁琐,降低数据更新效率。尤其对于涉及子文档以数组进行聚合后再存储的复杂更新方式,具体需要在ElasticSearch数据库中,先查询出完整的聚合文档后,再遍历数组并定位到子文档后,才能进行待更新数据的更新覆盖操作,最后将更新后的聚合文档写回ElasticSearch数据库,上述过程由于需要遍历数组和查询若干个数据文档来聚合文档,要多次与ElasticSearch数据库进行交互,造成文档更新效率低的问题。
多表关联查询是常见的数据库查询操作之一,以电子商务网站为例,一个电子商务网站可能需要同时访问用户信息表、订单信息表和产品信息表等。这些表格通常具有不同的数据结构和字段,但它们之间存在着某种关联关系,例如订单表会包含产品ID和用户ID,用户信息表则包含用户ID和用户基本信息等。
更复杂地,数据表还会以数据的形式进行关联,以订单表举例,很可能将产品ID以数组形式存储。具体地,一个订单可能关联多个产品,这些产品的ID会以数组的形式存储在订单表的"ProductIDs"字段中,形成多个子文档。这样的多表关联查询可以帮助实现更复杂的业务逻辑,但更新的时候涉及到子文档时,需要遍历数组并定位到子文档后,才能进行数据更新覆盖操作,造成数据更新效率低的问题。
因此,本实施例提出通过将待更新数据进行数组路径映射处理,得到不包含数组结构的映射后的待更新数据,以及映射后的待更新数据对应的待查询主键;再根据映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;最后,根据待查询主键对所述更新后的聚合文档进行数组还原,得到最终文档并将所述最终文档存储于最终数据库;其中,中转数据库和最终数据库存储的数据结构不同,中转数据库是以扁平化的路径的形式进行存储,最终数据库是以数组的形式存储。上述过程将复杂的数组结构的待更新数据进行映射后,得到简单数据结构的映射后的待更新数据,因为映射后的待更新数据的数据格式和聚合文档一致且提前在中转数据库中存储了相应的聚合文档,从而可以直接以简单的局部更新方式对中转数据库的聚合文档进行更新,而无须对最终数据库中的复杂数组结构进行遍历查询出聚合文档,可以降低与最终数据库的数据交互频率,能够减轻数据库的负载,提高数据库的响应速度和并发处理能力,从而提高数据更新效率。
具体地,待更新数据可以是由业务发生而产生的,可以根据具体的业务需求和查询条件使用SQL语句进行多表关联查询,以获取需要更新的数据。
以电子商务网站来举例,待更新数据可以是商品信息更新,商品信息存储在多个表中,涉及商品表、分类表、品牌表等;也可以是订单信息更新,涉及订单表、用户表、商品表等;也可以是用户信息更新,涉及用户表、收货地址表、购物车表等。
步骤S20,对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;
具体地,为了将待更新数据复杂的数组结构转化为简单的结构,可以将待更新数据进行数组路径映射处理,具体将复杂的数组结构转化为简单的路径信息。
具体地,通过数组路径映射的方式,可以将待更新数据的数组信息转化为更加灵活和通用的路径信息,更具体地,可以使用配置文件标识待更新数据(待更新的表)的结构信息(包括主键和数组),将结构信息映射为路径信息。
其中,路径映射可以适应不同的数据表结构和字段命名规范,使得代码更具通用性,可以在多个业务场景中复用。
步骤S30,提取所述映射后的待更新数据的主键信息,得到待查询主键;
考虑到需要为确保最终文档的还原顺序和原始数据结构一致,可以通过提取映射后的待更新数据的主键信息,得到待查询主键,其中,待查询主键用于最终文档的数组还原,因为最终文档需要按照原始数据结构进行数组还原,从而避免数据还原错误的情况发生,提高了系统的可靠性和稳定性。
此外,中转数据库还用于暂存数据,即可以积累一定时间的聚合文档更新量,在一定时间后再将聚合文档更新通过数据的还原,覆盖到最终数据库的最终文档中,可以理解地,可以通过积累一定时间的待查询主键,来积累一定时间的聚合文档更新量。
步骤S40,根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;
为了无须每次更新数据都需要先查询最终数据库才能聚合文档,可以先将聚合文档存储于中转数据库中,然后根据映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新。
具体地,中转数据库可以是Mongo数据库。其中,Mongo数据库是一个面向文档的NoSQL数据库,它以灵活的数据模型来存储数据。相比传统的关系型数据库,Mongo数据库不需要严格定义表结构和字段类型,可以自由地存储各种形式的聚合文档数据,适应多变的业务需求。
同时,Mongo数据库具有高性能的读写操作能力,可以快速地处理大量的数据,适用于高并发的场景,通过合理的索引设计和分片技术,可以进一步提升读写性能,满足数据更新过程中的实时性要求。
Mongo数据库支持水平扩展,可以通过添加更多的节点和分片来扩展存储容量和处理能力,这使得Mongo数据库作为中转数据库可以应对大规模数据聚合和处理的需求,保证系统的可扩展性和性能优势。
综上所述,将Mongo数据库作为中转数据库,存储简单数据结构的聚合文档,可以充分利用Mongo数据库的灵活性、高性能、可扩展性和丰富的查询功能,提高数据更新的效率和系统的稳定性,同时也为数据备份和恢复提供了支持。
对于中转数据库(Mongo数据库)来说,可以使用基础的局部更新语句来更新聚合文档,使用这种局部更新语句的效率更高。
可以理解地,因为映射后的待更新数据的数据格式和聚合文档一致,从而可以直接以简单的局部更新方式对中转数据库的聚合文档进行更新。
具体地,局部更新只需要对需要更新的字段或数据进行修改,而不需要对整个文档进行替换或重写,也不需要如现有技术般对最终数据库的更新需要先查询出完整聚合文档,才可以将待更新数据覆盖到聚合文档中,再将更新后的聚合文档写回ElasticSearch数据库,这样可以大大减少了数据交互的量,减少了网络传输的开销,从而提高了更新的速度。
此外,局部更新只对需要更新的字段或数据进行修改,而不会触发整个文档的读取和写入操作。这样可以减少数据库的I/O操作和计算开销,降低了数据库的负载,提高了数据库的响应速度和并发处理能力。
进一步地,中转数据库的引入,可以提前把聚合文档存储于中转数据库,而不需要如现有技术般,每次数据更新都需要先查询出完整聚合文档,大大加快了数据更新的效率。
此外,中转数据库还可以作为缓存层,存储经常被查询的数据,提高查询的性能和响应速度。同时,中转数据库还可以对查询结果进行优化,例如聚合、索引等操作,进一步提高查询效率。
总之,中转数据库的引入可以降低与最终数据库的数据交互量,减轻数据库的负载,提高数据更新效率。同时,中转数据库还能够提供缓存和优化查询的功能,保护最终数据库的完整性,从而提高整个系统的性能和稳定性。
步骤S50,根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。
具体地,最终数据库可以是ElasticSearch数据库。
在更新成功写入中转数据库(Mongo数据库)得到更新后的聚合文档后,会推送待查询主键。具体地,如图6所示,根据待查询主键可以从Mongo数据库中查询到完整的更新后的聚合文档,此时查询到的完整的更新后的聚合文档为单层文档,然后将更新后的聚合文档进行数组还原,得到包含数组结构的最终文档后,最终文档将写入到最终数据库(ElasticSearch数据库)中。
具体地,如图7所示,在查询出的更新后的聚合文档中,每一个键都可以被看作该键值对在文档中的路径,而路径中每个数组名或真实键名都可以看作一个节点,因此更新后的聚合文档可以看做一个文档树。然后通过深度遍历整个文档树,当遇到数组节点时,优先遍历还原数组内的文档树,在遍历完成后,可以将更新后的聚合文档还原成最终文档。
总体地,本方案通过引入Mongo数据库作为聚合文档的中间存储,解决现有技术下,对于多表聚合文档,每次单表数据更新都需要先查询聚合文档,然后覆盖写入聚合文档的低效率更新方式的问题。
本申请实施例提出的数据更新方法,通过获取待更新数据;对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;提取所述映射后的待更新数据的主键信息,得到待查询主键;根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。通过将待更新数据进行数组路径映射处理,得到不包含数组结构的映射后的待更新数据,以及映射后的待更新数据对应的待查询主键;再根据映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;最后,根据待查询主键对所述更新后的聚合文档进行数组还原,得到最终文档并将所述最终文档存储于最终数据库;其中,中转数据库和最终数据库存储的数据结构不同,中转数据库是以扁平化的路径的形式进行存储,最终数据库是以数组的形式存储。上述过程将复杂的数组结构的待更新数据进行映射后,得到简单数据结构的映射后的待更新数据,因为映射后的待更新数据的数据格式和聚合文档一致且提前在中转数据库中存储了相应的聚合文档,从而可以直接以简单的局部更新方式对中转数据库的聚合文档进行更新,而无须对最终数据库中的复杂数组结构进行遍历查询出聚合文档,可以降低与最终数据库的数据交互频率,能够减轻数据库的负载,提高数据库的响应速度和并发处理能力,提高数据更新效率。
基于第一实施例,提出本申请第二实施例,本申请第二实施例与第一实施例的区别在于:
对步骤S20,对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤进行细化,其中该步骤可以包括:
步骤S21,基于预设的配置文件,识别所述待更新数据的数据结构,得到主键信息、数组信息和待更新键值;
步骤S23,基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息;
步骤S24,将所述路径信息和所述待更新键值进行组合,得到所述映射后的待更新数据。
具体地,使用配置文件标识每个待更新数据在聚合文档中对应的数据结构,数据结构包括主键、数组和待更新键值,将主键信息和数组信息进行数组路径映射处理,得到路径信息,最后将待更新数据的键前加上路径信息作为前缀,后缀是待更新键值,将前缀和后缀进行组合,得到所述映射后的待更新数据,映射后的聚合文档内就不包含数组结构。
具体地,每个待更新数据都存储于对应的数据表中,在本实施例提出通过对应的配置文件对待更新数据进行相应的映射,其中,每种数据表都应有对应的配置文件。
具体地,如图4所示,每种数据表对应配置文件需要同时包含拼接文档的主键到表字段的对应关系,以及表在聚合文档内的层级结构。对属于更深层级的数据,层级配置中需要包含在该表层级之上,每一层的主键和每层所处的数组名称,以及作为自身主键的字段名称。这样的配置方式保证了对于各种聚合结构的通用性。
可以理解地,可以根据配置文件自定义字段与路径的映射关系,灵活适应不同的数据结构和数据源。
此外,当数据表结构发生变化时,只需更新配置文件中的映射关系,而无需修改实际的数据处理逻辑,提高了系统的可扩展性和维护性。
为了进一步说明,以A、B和C三表举例,A表作为主表,与B表中多条记录相关联,B表与多条C表记录相关联,最终聚合成A表以及一个包含多条B表数据的数组,B表数据内包含一个多条C表数据的数组构成的聚合文档。每张表(每个待更新数据)在聚合文档里的位置关系由其对应的配置文件表示,配置文件需要标识出聚合文档的主键,和表(待更新数据)在聚合文档内的层级深度和每一层对应的主键。以B表配置文件为例,如图4所示,包含B表位于聚合文档的层级:2;上层主键:A_主键;B表在上层所属的数据组名:数组B;以及B表文档的主键:B_主键等对应关系。
进一步地,以图5举例,图5包括了待更新数据的映射过程和对聚合文档局部更新的过程(图5中,左图为待更新数据,中图为配置文件,右图为更新后的聚合文档)。具体地,现有4个待更新数据,对上述4个待更新数据进行映射后,根据映射后的待更新数据对聚合文档进行局部更新。其中,1个待更新数据位于A表、2个待更新数据位于B表和1个待更新数据位于C表中,其中,B表是A表的子表(A表有数组B),C表是B表的子表(B表有数组C),其中数组B包含两个数据。
其中,以B表一个待更新数据为例,该待更新数据包含3个键值对(键值对包含主键信息、数组信息和待更新键值),分别是A_主键:A1,B_主键:B1,B_字段1:BB1,可以理解地,“:”的左边是主键信息和数组信息,“:”的右边是待更新键值。
通过如图5中间的配置文件对上述B表一个待更新数据进行映射,具体通过3个键值对转换出来的路径信息分别为,数组B/B1/A_主键,数组B/B1/B_主键,数组B/B1/B_字段1,然后再与对应的键值组合得到,B/B1/A_主键:A1,数组B/B1/B_主键:B1,数组B/B1/B_字段1:BB1,从而得到映射后的待更新数据。
本申请实施例提出的数据更新方法,通过基于预设的配置文件,识别所述待更新数据的数据结构,得到主键信息、数组信息和待更新键值;基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息;将所述路径信息和所述待更新键值进行组合,得到所述映射后的待更新数据,可以根据配置文件自定义字段与路径的映射关系,灵活适应不同的数据结构和数据源,得到的映射后的待更新数据不包含数组结构。
基于第二实施例,提出本申请第三实施例,本申请第三实施例与第二实施例的区别在于:
对步骤S40,根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档的步骤进行细化,其中细化的步骤包括:
步骤S41,根据所述映射后的待更新数据的路径信息,定位所述聚合文档,得到待更新位置;
步骤S42,将所述聚合文档的待更新位置对应的键值更新为所述待更新键值,得到所述更新后的聚合文档。
可以理解地,由于映射后的待更新数据是通过配置文件进行映射得到,而配置文件包含拼接文档的主键到表字段的对应关系,以及表在聚合文档内的层级结构,所以可以通过映射后的待更新数据的路径信息,定位聚合文档,得到待更新位置。
进一步地,然后将聚合文档的待更新位置对应的键值更新为待更新键值,得到更新后的聚合文档。
具体地,通过配置文件将该待更新数据的主键和数组提取出来并转化为路径信息,得到映射后的待更新数据,其中,映射后的待更新数据包含路径信息,根据路径信息,可以定位所述聚合文档,得到待更新位置,最后将所述聚合文档的待更新位置对应的键值更新为所述待更新键值,完成对聚合文档的更新,得到所述更新后的聚合文档。
可以理解地,通过路径信息,可以直接定位到待更新数据所在的准确位置,无需遍历整个聚合文档。这样可以节省时间和资源,并提高更新操作的效率。
无论待更新数据是位于嵌套的对象、数组还是其他复杂的数据结构中,都可以通过路径信息准确地进行定位和更新。
最重要的是,使用路径信息定位待更新位置,可以实现局部更新,只对需要更新的字段或数据进行修改,而不会触发整个文档的替换或重写。这样可以减少网络传输量和数据库操作,提高更新效率。
本申请实施例提出的数据更新方法,通过根据所述映射后的待更新数据的路径信息,定位所述聚合文档,得到待更新位置;将所述聚合文档的待更新位置对应的键值更新为所述待更新键值,得到所述更新后的聚合文档,使用路径信息定位待更新位置,可以实现局部更新,只对需要更新的字段或数据进行修改,而不会触发整个文档的替换或重写。这样可以减少网络传输量和数据库操作,提高更新效率。
基于第二实施例,提出本申请第四实施例,本申请第四实施例与第二实施例的区别在于:
对步骤S23,基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息之前进行补充,其中补充的步骤包括:
步骤S22,判断所述待更新数据是否属于主表;
在本实施例中,步骤S23,所述基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息的步骤包括:
步骤S231,若所述待更新数据不属于主表,则基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到所述路径信息。
在写入中转数据库(Mongo数据库)前,可以根据其在聚合文档内的位置关系决定不同的处理方式,如果待更新数据属于主表数据,则直接更新到Mongo数据库中。如果待更新数据属于子表的数据,将所述主键信息和所述数组信息进行数组路径映射处理,再更新到Mongo数据库中。
可以理解地,针对主表数据的直接更新可以减少额外的路径映射处理步骤,提高更新操作的效率。不需要进行复杂的路径映射处理,可以直接将主表数据更新到Mongo数据库中,减少了中间环节,加快了更新速度。
本申请实施例提出的数据更新方法,通过判断所述待更新数据是否属于主表;所述基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息的步骤包括:若所述待更新数据不属于主表,则基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到所述路径信息,针对主表数据的直接更新可以减少额外的路径映射处理步骤,提高更新操作的效率。不需要进行复杂的路径映射处理,可以直接将主表数据更新到Mongo数据库中,减少了中间环节,加快了更新速度。
基于第一实施例,提出本申请第五实施例,本申请第五实施例与第一实施例的区别在于:
对步骤S10,获取待更新数据的步骤进行细化,其中细化的步骤可以包括:
步骤S11,通过预设的更新窗口获取待更新数据;
考虑到实际更新中,待更新数据的数量较大,对于高频更新的数据源,若在每次更新后即触发写入ElasticSearch数据库或者Mongo数据库中,高频的更新请求不仅会导致额外的网络开销。同时,也不能充分地利用ElasticSearch数据库中提供的批量处理特性,降低了ElasticSearch数据库的整体吞吐量。
因此,本实施例提出对于高频更新的场景,存在一个更新窗口以待更新文档的最大条数和窗口最大时间作为阈值,触发任一阈值条件,才会将窗口内的待更新文档写入到Mongo数据库中。
具体地,更新窗口可以作为一个队列缓存,用于暂时存储待更新的数据。在多线程或分布式环境下,当大量数据需要进行更新时,将待更新数据放入更新窗口的队列中可以减轻数据库的负载压力。同时,队列还可以提供并发处理能力,允许多个线程同时处理待更新数据,提高系统的性能和吞吐量。
进一步地,在本实施例中,步骤S20,对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤包括:
步骤S25,计算所述更新窗口内所述待更新数据的数量,得到所述待更新数据的条数;
步骤S26,当所述待更新数据的条数满足预设更新条数阈值条件或所述更新窗口的队列时间满足预设更新时间阈值条件时,对所述待更新数据进行去重,得到去重后的待更新数据;
步骤S27,对所述去重后的待更新数据进行路径映射处理,得到所述映射后的待更新数据。
通过设定预设更新时间阈值条件和预设更新条数阈值条件,可以控制更新操作的频率。当满足其中一个条件时,才进行去重操作和实际的更新操作,避免了频繁的更新请求,减轻了系统负担。
可以理解地,对待更新数据进行去重后再批量更新,可以减少对数据库的频繁访问,降低了数据库的压力。尤其是在高并发场景下,减少了大量单独的更新请求,有利于提升系统的稳定性和性能表现。
此外,批量更新较大量的数据可以优化网络传输效率,减少了网络通信开销。将多个待更新数据合并为一个更新请求,降低了网络传输的开销,提高了数据更新的效率。
具体地,对待更新数据去重的过程就是判断更新窗口内的待更新数据是否相同主键,若相同,则会先对待更新数据进行去重,即会使用最新的待更新数据进行聚合文档的更新,减少不必要的更新操作。
本实施例提出了一种准实时数据同步更新ElasticSearch数据库的方案。同时,解决了高频数据更新的场景下,无法充分利用ElasticSearch数据库的批量处理特性的问题。
本申请实施例提出的数据更新方法,通过预设的更新窗口获取待更新数据;所述对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤包括:计算所述更新窗口内所述待更新数据的数量,得到所述待更新数据的条数;当所述待更新数据的条数满足预设更新条数阈值条件或所述更新窗口的队列时间满足预设更新时间阈值条件时,对所述待更新数据进行去重,得到去重后的待更新数据;对所述去重后的待更新数据进行路径映射处理,得到所述映射后的待更新数据,实现一种准实时数据同步更新ElasticSearch数据库的方案。同时,解决了高频数据更新的场景下,无法充分利用ElasticSearch数据库的批量处理特性的问题。
基于第一实施例,提出本申请第六实施例,本申请第六实施例与第一实施例的区别在于:
对步骤S40,根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档的步骤之后进行补充,其中补充的步骤可以包括:
步骤S43,将所述待查询主键发送至还原窗口;
步骤S44,计算所述还原窗口内所述待查询主键的数量,得到所述待查询主键的条数;
考虑到实际还原中,待查询主键的数量较大,对于高频更新的数据源,若在每次更新后即触发写入ElasticSearch数据库或者Mongo数据库中,高频的更新请求不仅会导致额外的网络开销。同时,也不能充分地利用ElasticSearch数据库中提供的批量处理特性,降低了ElasticSearch数据库的整体吞吐量。
因此,本实施例将所述待查询主键发送至还原窗口,其中还原窗口作为队列缓存可以有效管理待查询主键的数据流,将待查询主键暂时存储在队列中,便于后续的处理。通过队列缓存,可以平滑处理大量的待查询主键,避免了突发的请求对系统造成的冲击。
具体地,在映射后的待更新数据更新写入中转数据库(Mongo数据库)后,会将待查询主键发送到下游(还原窗口)。根据待查询主键还原更新后的聚合文档前,需要判断是否满足待查询主键条数或时间窗口大小其中任意一个阈值条件。
若满足任一条件,遍历还原窗口内待查询主键并进行去重,然后,根据待查询主键从Mongo数据库中批量查询出聚合文档,并将聚合文档还原为最终文档,最后批量写入到最终数据库(ElasticSearch数据库)中。
进一步地,在本实施例中,步骤S50,根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档的步骤包括:
步骤S54,当所述待查询主键的条数满足预设查询条数阈值条件或所述还原窗口的队列时间满足预设还原时间阈值条件时,对所述待查询主键进行去重,得到去重后的待查询主键;
步骤S55,根据所述去重后的待查询主键,对所述更新后的聚合文档进行数组还原,得到所述最终文档。
具体地,设定预设查询条数阈值条件和预设还原时间阈值条件,可以控制查询操作的频率。当满足其中一个条件时,才对待查询主键进行去重,然后再进行对更新后的聚合文档进行数组还原,避免了频繁的查询请求,减轻了系统负担。
通过队列缓存和去重操作,可以优化数据处理流程,提高系统的响应速度和并发处理能力。合理管理待查询主键的流动和去重处理,有利于提升系统整体的性能表现。
本申请实施例提出的数据更新方法,通过将所述待查询主键发送至还原窗口;计算所述还原窗口内所述待查询主键的数量,得到所述待查询主键的条数;所述根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档的步骤的包括:当所述待查询主键的条数满足预设查询条数阈值条件或所述还原窗口的队列时间满足预设还原时间阈值条件时,对所述待查询主键进行去重,得到去重后的待查询主键;根据所述去重后的待查询主键,对所述更新后的聚合文档进行数组还原,得到所述最终文档,通过队列缓存和去重操作,可以优化数据处理流程,提高系统的响应速度和并发处理能力。合理管理待查询主键的流动和去重处理,有利于提升系统整体的性能表现。
基于第二实施例,提出本申请第七实施例,本申请第七实施例与第二实施例的区别在于:
对步骤S20,对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤之前进行补充,其中补充的步骤包括:
步骤S01,基于所述待更新数据,对所述待更新数据的数据表进行类型识别,得到数据表类型;
步骤S02,根据所述数据表类型进行配置,得到所述配置文件。
具体地,先根据待更新数据所在的数据表,进行类型识别,得到数据类型,再通过数据表类型得到配置文件。
通过制作相应的配置文件,可以在待更新数据与数据表的结构进行匹配时,确保映射操作能够正确地解析和处理待更新数据。配置文件可以包含数据表的字段名、数据类型以及其他约束条件,使得映射操作能够准确地识别和处理待更新数据。
其中,不同类型的数据表可能具有不同的结构和字段,通过数据表类型可以确定数据表的结构信息,从而生成与之匹配的配置文件,可以确保配置文件能够准确描述数据表的字段、数据类型、约束条件等信息。
此外,通过按照数据表类型生成配置文件,可以实现对配置信息的统一管理。相同类型的数据表可以共享相似的配置文件,便于统一维护和更新,避免重复劳动和信息不一致的问题。
可以理解地,由于通过数据表类型来制作配置文件,配置文件可以适配不同待更新数据的数据表,从而可以定义字段与路径的映射关系,灵活适应不同的数据结构和数据源。
本申请实施例提出的数据更新方法,通过基于所述待更新数据,对所述待更新数据的数据表进行类型识别,得到数据表类型;根据所述数据表类型进行配置,得到所述配置文件,由于通过数据表类型来制作配置文件,配置文件可以适配不同待更新数据的数据表,从而可以定义字段与路径的映射关系,灵活适应不同的数据结构和数据源。
最后,可以将本申请的所有实施例组合,得到如图3所示的数据更新方案。具体地,通过更新窗口获取若干个待更新数据,当所述待更新数据的条数满足预设更新条数阈值条件或所述更新窗口的队列时间满足预设更新时间阈值条件时,遍历窗口内待更新数据进行去重,再根据配置文件生成路径作为前缀加到待更新文档的键前,得到映射后的待更新数据(路径前缀的待更新数据)。根据映射后的待更新数据对Mon数据库的聚合文档进行更新,得到更新后的聚合文档并存储于Mongo数据库中。
得到更新后的聚合文档后,会将待查询主键发送到下游。当所述待查询主键的条数满足预设查询条数阈值条件或所述还原窗口的队列时间满足预设还原时间阈值条件时,遍历还原窗口内待查询主键进行去重,根据待查询主键从Mongo数据库中批量查询出更新后的聚合文档,并将更新后的聚合文档还原为最终文档,最后批量写入到ElasticSearch数据库中。
此外,本申请实施例还提出一种数据更新装置,所述数据更新装置包括:
数据获取模块,用于获取待更新数据;
数据映射模块,用于对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;
主键提取模块,用于提取所述映射后的待更新数据的主键信息,得到待查询主键;
数据更新模块,用于根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;
数据还原模块,用于根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。
本实施例实现数据更新的原理及实施过程,请参照上述各实施例,在此不再赘述。
此外,本申请实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据更新程序,所述数据更新程序被所述处理器执行时实现如上所述的数据更新方法的步骤。
由于本数据更新程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
此外,本申请实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据更新程序,所述数据更新程序被处理器执行时实现如上所述的数据更新方法的步骤。
由于本数据更新程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
相比现有技术,本申请实施例提出的数据更新方法、装置、终端设备以及存储介质,通过获取待更新数据;对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;提取所述映射后的待更新数据的主键信息,得到待查询主键;根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。通过将待更新数据进行数组路径映射处理,得到不包含数组结构的映射后的待更新数据,以及映射后的待更新数据对应的待查询主键;再根据映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;最后,根据待查询主键对所述更新后的聚合文档进行数组还原,得到最终文档并将所述最终文档存储于最终数据库;其中,中转数据库和最终数据库存储的数据结构不同,中转数据库是以扁平化的路径的形式进行存储,最终数据库是以数组的形式存储。上述过程将复杂的数组结构的待更新数据进行映射后,得到简单数据结构的映射后的待更新数据,因为映射后的待更新数据的数据格式和聚合文档一致且提前在中转数据库中存储了相应的聚合文档,从而可以直接以简单的局部更新方式对中转数据库的聚合文档进行更新,而无须对最终数据库中的复杂数组结构进行遍历查询出聚合文档,可以降低与最终数据库的数据交互频率,能够减轻数据库的负载,提高数据库的响应速度和并发处理能力,提高数据更新效率。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本申请每个实施例的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种数据更新方法,其特征在于,所述数据更新方法包括:
获取待更新数据;
对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;
提取所述映射后的待更新数据的主键信息,得到待查询主键;
根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;
根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。
2.根据权利要求1所述的数据更新方法,其特征在于,所述对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤包括:
基于预设的配置文件,识别所述待更新数据的数据结构,得到主键信息、数组信息和待更新键值;
基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息;
将所述路径信息和所述待更新键值进行组合,得到所述映射后的待更新数据。
3.根据权利要求2所述的数据更新方法,其特征在于,所述根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档的步骤包括:
根据所述映射后的待更新数据的路径信息,定位所述聚合文档,得到待更新位置;
将所述聚合文档的待更新位置对应的键值更新为所述待更新键值,得到所述更新后的聚合文档。
4.根据权利要求2所述的数据更新方法,其特征在于,所述基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息的步骤之前还包括:
判断所述待更新数据是否属于主表;
所述基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到路径信息的步骤包括:
若所述待更新数据不属于主表,则基于所述配置文件,将所述主键信息和所述数组信息进行数组路径映射处理,得到所述路径信息。
5.根据权利要求1所述的数据更新方法,其特征在于,所述获取待更新数据的步骤包括:
通过预设的更新窗口获取待更新数据;
所述对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤包括:
计算所述更新窗口内所述待更新数据的数量,得到所述待更新数据的条数;
当所述待更新数据的条数满足预设更新条数阈值条件或所述更新窗口的队列时间满足预设更新时间阈值条件时,对所述待更新数据进行去重,得到去重后的待更新数据;
对所述去重后的待更新数据进行路径映射处理,得到所述映射后的待更新数据。
6.根据权利要求1所述的数据更新方法,其特征在于,所述根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档的步骤之后还包括:
将所述待查询主键发送至还原窗口;
计算所述还原窗口内所述待查询主键的数量,得到所述待查询主键的条数;
所述根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档的步骤的包括:
当所述待查询主键的条数满足预设查询条数阈值条件或所述还原窗口的队列时间满足预设还原时间阈值条件时,对所述待查询主键进行去重,得到去重后的待查询主键;
根据所述去重后的待查询主键,对所述更新后的聚合文档进行数组还原,得到所述最终文档。
7.根据权利要求2所述的数据更新方法,其特征在于,所述对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据的步骤之前还包括:
基于所述待更新数据,对所述待更新数据的数据表进行类型识别,得到数据表类型;
根据所述数据表类型进行配置,得到所述配置文件。
8.一种数据更新装置,其特征在于,所述数据更新装置包括:
数据获取模块,用于获取待更新数据;
数据映射模块,用于对所述待更新数据进行数组路径映射处理,得到映射后的待更新数据;
主键提取模块,用于提取所述映射后的待更新数据的主键信息,得到待查询主键;
数据更新模块,用于根据所述映射后的待更新数据,对存储于中转数据库中的聚合文档进行局部更新,得到更新后的聚合文档;
数据还原模块,用于根据所述待查询主键,对所述更新后的聚合文档进行数组还原,得到最终文档。
9.一种终端设备,其特征在于,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据更新程序,所述数据更新程序被所述处理器执行时实现如权利要求1-7中任一项所述的数据更新方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据更新程序,所述数据更新程序被处理器执行时实现如权利要求1-7中任一项所述的数据更新方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311633578.6A CN117435605A (zh) | 2023-11-30 | 2023-11-30 | 数据更新方法、装置、终端设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311633578.6A CN117435605A (zh) | 2023-11-30 | 2023-11-30 | 数据更新方法、装置、终端设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117435605A true CN117435605A (zh) | 2024-01-23 |
Family
ID=89558463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311633578.6A Pending CN117435605A (zh) | 2023-11-30 | 2023-11-30 | 数据更新方法、装置、终端设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117435605A (zh) |
-
2023
- 2023-11-30 CN CN202311633578.6A patent/CN117435605A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036756B2 (en) | In-memory key-value store for a multi-model database | |
CN107423422B (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
US20180011861A1 (en) | Managing storage of individually accessible data units | |
US8868512B2 (en) | Logging scheme for column-oriented in-memory databases | |
US7058783B2 (en) | Method and mechanism for on-line data compression and in-place updates | |
US9495398B2 (en) | Index for hybrid database | |
CN113986873B (zh) | 一种海量物联网数据模型化的处理、存储与共享方法 | |
CN105900093A (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN110096509A (zh) | 大数据环境下实现历史数据拉链表存储建模处理的系统及方法 | |
CN111241108A (zh) | 基于键值对kv系统的索引方法、装置、电子设备和介质 | |
CN103365987A (zh) | 一种基于共享磁盘架构的集群数据库系统及数据处理方法 | |
CN112699187A (zh) | 关联数据处理方法、装置、设备、介质及产品 | |
CN109491988B (zh) | 一种支持全量更新的数据实时关联方法 | |
CN117435605A (zh) | 数据更新方法、装置、终端设备以及存储介质 | |
WO2018108010A1 (en) | System, device and method for data update notification | |
CN114218277A (zh) | 一种关系数据库的高效查询方法和装置 | |
CN114579617A (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
US10353920B2 (en) | Efficient mirror data re-sync | |
US11726979B2 (en) | Determining a chronological order of transactions executed in relation to an object stored in a storage system | |
CN111949439B (zh) | 基于数据库的数据文件更新方法和装置 | |
CN117632946A (zh) | 基于动态前缀的层级b+树算法、装置及计算机存储介质 | |
CN117807174A (zh) | 索引处理方法、装置、计算机设备、介质和程序产品 | |
CN116450751A (zh) | 事务处理方法及装置 | |
AU2015258326B2 (en) | Managing storage of individually accessible data units | |
CN118035200A (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 |