掌桥专利:专业的专利平台
掌桥专利
首页

一种异构数据差异对比更新方法及系统

文献发布时间:2024-04-18 20:00:25


一种异构数据差异对比更新方法及系统

技术领域

本发明涉及异构数据差异对比更新技术领域,尤其涉及一种异构数据差异对比更新方法及系统。

背景技术

数据存储在企业开发中随着技术的发展愈发重要,而数据存储的效率是数据存储无法逾越的技术门槛。领域驱动服务、NoSQL等技术的发展,异构数据在总数据存储中的比例也在逐年上升。异构数据的存储一般存储方案是使用NOSQL数据库进行存储,存储效率也较快。但是NoSQL数据库在数据分析方面有薄弱之处,数据索引、检索和报表等方面NoSQL存储方案需要研发更多的预处理方案。

综上所述,如何实现全新的、可管理、可配置、能适应大批量企业生产过程数据的结构化存储已成为开发人员关注的焦点。

发明内容

本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。

鉴于上述现有存在的问题,提出了本发明。

因此,本发明提供了一种异构数据差异对比更新方法及系统,能够解决背景技术中提到的问题。

为解决上述技术问题,本发明提供如下技术方案,一种异构数据差异对比更新方法,包括:

根据基于领域驱动设计的规范定义数据模型以及所述数据模型的关联关系;

获取目标领域相关异构数据,并根据所述数据模型以及所述数据模型的关联关系对所述目标领域相关异构数据进行格式规范处理;

将格式规范处理后数据与预存在数据库中的数据进行对比,获取数据差异,并更新所述数据库中存在差异的数据。

作为本发明所述的异构数据差异对比更新方法的一种优选方案,其中:所述规范包括:数据模型规范和数据操作规范;

所述数据模型规范包括聚合根规范、值对象规范以及关系信息规范,将按照规范定义后的内容以文本的方式存储;

所述数据模型包括字段、字段对应的数据列、模型对应的数据表,以及模型之间的关联信息;

所述数据操作规范包括对所述模型规范进行新增、修改更新和删除操作规范,所述数据操作规范还用于系统对接口传入数据的解析。

作为本发明所述的异构数据差异对比更新方法的一种优选方案,其中:还包括:

接口传入请求参数,系统对所述接口传入请求参数进行解析;

加载数据模型,将解析后的数据传入所述数据模型以及所述数据模型的关联关系中,进行格式规范处理;

将格式规范处理后数据与预存在数据库中的数据进行对比,对数据变进行标记,确定对数据的操作类型;

当所述操作类型为新增时,根据模型定义和数据库方言,生成DML-Insert语句保存数据;

当所述操作类型为删除时,根据模型定义和数据库方言,生成DML-Delete语句删除数据。

作为本发明所述的异构数据差异对比更新方法的一种优选方案,其中:所述数据的操作类型包括:

当所述操作类型为新增时,在新增数据时,数据节点的所有下属数据节点,都标记为新增;

当所述操作类型为删除时,在删除数据时,删除任一数据节点,节点的下属数据,都被删除;

当所述操作类型为修改更新时,在修改更新数据时,加载旧数据,并和旧数据进行对比差异,将存在差异的部分保存到数据库。

作为本发明所述的异构数据差异对比更新方法的一种优选方案,其中:所述数据操作规范还用于系统对接口传入数据的解析包括:

所述数据操作规范在用于系统对接口传入数据的解析时,解析调用方、客户端在请求系统数据变更时的参数格式,所述数据操作规范还包括请求的模型、变更类型,以及变更的参数;

所述数据操作规范约束如下:

使用"model"声明需要变更的聚合根模型名称;

参数必须以application/json格式传递请求;

删除某个节点,以及节点的所有下属节点时,在节点内声明"$remove":true;

每个节点的数据,必须存在"id"属性,作为数据的主键,若没有"id"属性,系统将为数据使用雪花Id生成算法生成一个唯一Id作为主键,同时将数据标记为新增数据;

在操作集合数据时,使用$add、$update、$remove作为集合数据操作符,操作符的值可变更。

作为本发明所述的异构数据差异对比更新方法的一种优选方案,其中:所述将格式规范处理后数据与预存在数据库中的数据进行对比包括:

所述预存在数据库的数据以树状结构从存储服务中加载;

分别定义格式规范处理后数据和预存在数据库中的数据的对比路径,格式规范处理后数据和预存在数据库中的数据的路径按照模型定义进行递归对比,在对比过程中不考虑未在模型定义中出现的属性,优先处理有特殊含义的关键字定义;

将DML语句提交到数据库进行数据更新,在数据提交时,根据表和操作进行分组组合。

作为本发明所述的异构数据差异对比更新方法的一种优选方案,其中:所述递归对比包括:

在递归过程中,给格式规范处理后数据和预存在数据库中的数据进行递归定位,引入数据路径定义,在递归过程中,使用数据路径作为参数进行数据对比;

路径的定义内容如下:使用$符号作为数据根路径标识,使用[]标识集合索引,在对比时格式规范处理后数据和预存在数据库中的数据分别保存独立的路径信息。

一种异构数据差异对比更新系统,其特征在于,包括:规范定义模块、数据处理模块以及数据对比模块,

规范定义模块,所述规范定义模块用于根据基于领域驱动设计的规范定义数据模型以及所述数据模型的关联关系;

数据处理模块,所述数据处理模块用于获取目标领域相关异构数据,并根据所述数据模型以及所述数据模型的关联关系对所述目标领域相关异构数据进行格式规范处理;

数据对比模块,所述数据对比模块用于将格式规范处理后数据与预存在数据库中的数据进行对比,获取数据差异,并更新所述数据库中存在差异的数据。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上所述的方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的方法的步骤。

本发明的有益效果:本发明提出一种异构数据差异对比更新方法及系统,根据基于领域驱动设计的规范定义数据模型以及所述数据模型的关联关系;获取目标领域相关异构数据,并根据所述数据模型以及所述数据模型的关联关系对所述目标领域相关异构数据进行格式规范处理;将格式规范处理后数据与预存在数据库中的数据进行对比,获取数据差异,并更新所述数据库中存在差异的数据。根据领域驱动设计数据模型的配置进行数据差异对比,并将对比结果进行最小化提交到数据库存储,使数据更新更加高效存储到结构化数据库,为数据的集中存储提供更快捷稳定的支持。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:

图1为本发明一个实施例提供的一种异构数据差异对比更新方法及系统的方法流程图;

图2为本发明一个实施例提供的一种异构数据差异对比更新方法及系统的系统数据差异对比流程图;

图3为本发明一个实施例提供的一种异构数据差异对比更新方法及系统的计算机设备的内部结构图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明,显然所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护的范围。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。

其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。

本发明结合示意图进行详细描述,在详述本发明实施例时,为便于说明,表示器件结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。

同时在本发明的描述中,需要说明的是,术语中的“上、下、内和外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一、第二或第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

本发明中除非另有明确的规定和限定,术语“安装、相连、连接”应做广义理解,例如:可以是固定连接、可拆卸连接或一体式连接;同样可以是机械连接、电连接或直接连接,也可以通过中间媒介间接相连,也可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

实施例1

参照图1-3,为本发明的第一个实施例,该实施例提供了一种异构数据差异对比更新方法及系统,包括:

本发明提供一种在领域驱动设计(以下简称DDD)软件开发模式中,在保存和更新树状的异构数据时,进行数据差异对比并更新到数据库的系统。这个树状数据,是由DDD模型规范定义的,使用不同的数据库方言可使数据存储到各类数据库中,提升数据库的兼容性。具体步骤如下:

根据基于领域驱动设计的规范定义数据模型以及数据模型的关联关系;

其中,规范包括:数据模型规范和数据操作规范;

具体的,数据模型规范包括聚合根规范、值对象规范以及关系信息规范,将按照规范定义后的内容以文本的方式存储;

应说明的是,文本包括纯文本文件(TXT)、Word文档(DOCX)、PDF文件、Markdown文件、CSV文件、JSON文件、XML文件等格式;

更进一步的,数据模型包括字段、字段对应的数据列、模型对应的数据表,以及模型之间的关联信息;

应说明的是,数据操作规范包括对模型规范进行新增、修改更新和删除操作规范,数据操作规范还用于系统对接口传入数据的解析。

更进一步的,获取目标领域相关异构数据,并根据数据模型以及数据模型的关联关系对目标领域相关异构数据进行格式规范处理;

应说明的是,目标领域可以是电商领域、电力系统领域等存在异构数据的领域;

更进一步的,将格式规范处理后数据与预存在数据库中的数据进行对比,获取数据差异,并更新数据库中存在差异的数据。

在一个可选的实施例中,定义数据更新接口,用于调用方、客户端传入需要保存、更新的数据。接口使用HTTP协议进行约束和发布。在接口中请求和响应的数据以application/json的格式传递。

更进一步的,接口传入请求参数,系统对接口传入请求参数进行解析;

更进一步的,加载数据模型,将解析后的数据传入数据模型以及数据模型的关联关系中,进行格式规范处理;

更进一步的,将格式规范处理后数据与预存在数据库中的数据进行对比,对数据变进行标记,确定对数据的操作类型;

应说明的是,当操作类型为新增时,根据模型定义和数据库方言,生成DML-Insert语句保存数据;

应说明的是,当操作类型为删除时,根据模型定义和数据库方言,生成DML-Delete语句删除数据。

应说明的是,当操作类型为新增时,在新增数据时,数据节点的所有下属数据节点,都标记为新增;

应说明的是,当操作类型为删除时,在删除数据时,删除任一数据节点,节点的下属数据,都被删除;

应说明的是,当操作类型为修改更新时,在修改更新数据时,加载旧数据,并和旧数据进行对比差异,将存在差异的部分保存到数据库。

其中,数据操作规范还用于系统对接口传入数据的解析包括:

数据操作规范在用于系统对接口传入数据的解析时,解析调用方、客户端在请求系统数据变更时的参数格式,数据操作规范还包括请求的模型、变更类型,以及变更的参数;

应说明的是,数据操作规范约束如下:

使用"model"声明需要变更的聚合根模型名称;

参数必须以application/json格式传递请求;

删除某个节点,以及节点的所有下属节点时,在节点内声明"$remove":true;

每个节点的数据,必须存在"id"属性,作为数据的主键,若没有"id"属性,系统将为数据使用雪花Id生成算法生成一个唯一Id作为主键,同时将数据标记为新增数据;

在操作集合数据时,使用$add、$update、$remove作为集合数据操作符,操作符的值可变更。

应说明的是,将格式规范处理后数据与预存在数据库中的数据进行对比包括:

预存在数据库的数据以树状结构从存储服务中加载;

分别定义格式规范处理后数据和预存在数据库中的数据的对比路径,格式规范处理后数据和预存在数据库中的数据的路径按照模型定义进行递归对比,在对比过程中不考虑未在模型定义中出现的属性,优先处理有特殊含义的关键字定义;

将DML语句提交到数据库进行数据更新,在数据提交时,根据表和操作进行分组组合,以便于批量提交DML,提升数据存储效率。

应说明的是,递归对比包括:在递归过程中,给格式规范处理后数据和预存在数据库中的数据进行递归定位,引入数据路径定义,在递归过程中,使用数据路径作为参数进行数据对比;

路径的定义内容如下:使用$符号作为数据根路径标识,使用[]标识集合索引,在对比时格式规范处理后数据和预存在数据库中的数据分别保存独立的路径信息。

应说明的是,将数据对比步骤输出的对比结果,与数据模型进行匹配,根据数据模型中的物理表定义,生成DML语句。生成所有的DML语句后,根据DML语句对应的数据表,以及操作类型(UPDATE/DELETE)分组,相同的数据表和操作类型使用批量提交模式提交到数据库中,批量数据提交使用jdbc驱动的batchExecute或batchUpdate函数。

在一个优选的实施例中,还可以通过如下方式进行异构数据差异对比更新:

从聚合根模型开始遍历所有字段;

若字段是基础字段,检查参数中是否包含此字段,存在这个字段,说明字段需要更新,反之不更新;

若字段的类型是一个模型名称,判断字段是否是集合,若是集合,则根据参数定义中的集合操作符进行集合更新,否则加载字段对应的数据模型,进行递归遍历。

应说明的是,在递归过程中,需要给参数和旧数据进行递归定位,引入数据路径的概念,在递归过程中,使用数据路径作为参数进行数据对比,路径的定义内容如下:使用$符号作为数据根路径标识,例如$.id标识根数据中的id属性,使用[]标识集合索引,例如$.children[4].id,标识根数据中的children集合中的第5个元素的id属性。在对比时参数与旧数据分别保存独立的路径信息,例如:参数$.children.$update[3]对应旧数据的路径为$.children[2]。

在一个优选的实施例中,一种异构数据差异对比更新系统,包括:规范定义模块、数据处理模块以及数据对比模块,

规范定义模块,规范定义模块用于根据基于领域驱动设计的规范定义数据模型以及数据模型的关联关系;

数据处理模块,数据处理模块用于获取目标领域相关异构数据,并根据数据模型以及数据模型的关联关系对目标领域相关异构数据进行格式规范处理;

数据对比模块,数据对比模块用于将格式规范处理后数据与预存在数据库中的数据进行对比,获取数据差异,并更新数据库中存在差异的数据。

上述各单元模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个优选的实施例中,系统是通过以下定义、发布、系统处理操作三个步骤来实现的:

步骤一:定义规范

规范的定义包括两个部分,分别为DDD数据模型规范,和数据操作规范。一个是数据模型,一个是数据操作。

按照DDD规范定义数据模型,包括聚合根、值对象、关系的元素进行定义,并将定义内容,以文本的方式存储。

定义数据操作规范,包括对数据聚合根、值对象的新增、修改和删除操作规范,此规范也将用于系统对接口传入数据的解析。

步骤二:发布接口

定义数据更新接口,用于调用方、客户端传入需要保存、更新的数据。接口使用HTTP协议进行约束和发布。

在接口中请求和响应的数据以application/json的格式传递。

步骤三:系统处理

系统处理数据遵循将系统已有的数据与接口传入的数据进行合并后保存到数据库的基本逻辑,详细步骤如下:

根据接口参数加载模型定义信息(步骤一的输出物)

根据接口参数确定对数据的操作类型

新增数据,根据模型定义和数据库方言,生成DML-Insert语句保存数据。新增数据时,数据节点的所有下属数据节点,都标记为新增。

删除数据,根据模型定义和数据库方言,生成DML-Delete语句删除数据。删除任一数据节点,节点的下属数据,都将被删除。

更新数据,需要加载旧数据,并和旧数据进行对比差异,将存在差异的部分保存到数据库。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种异构数据差异对比更新方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

根据基于领域驱动设计的规范定义数据模型以及数据模型的关联关系;

获取目标领域相关异构数据,并根据数据模型以及数据模型的关联关系对目标领域相关异构数据进行格式规范处理;

将格式规范处理后数据与预存在数据库中的数据进行对比,获取数据差异,并更新数据库中存在差异的数据。

实施例2

参照图2,为本发明的一个实施例,提供了一种异构数据差异对比更新方法及系统,为了验证本发明的有益效果,通过实验进行科学论证。

新增数据时,执行的DML语句如下:

insert into t_order(id,code,status,....)values('系统自动生成的雪花Id','20231102235959014440712','payed',....);

insert into t_order_detail(id,commodityCode,orderCode,count,summary,...)values('系统自动生成的雪花Id','6941592728504','20231102235959014440712',1,10.00,...);

insert into t_order_detail(id,commodityCode,orderCode,count,summary,...)values('系统自动生成的雪花Id','6941592728505','20231102235959014440712',2,20.00,...);

在上述请求参数中,声明操作Order模型,具体内容为:新增一个订单,并给出订单编号和状态;新增两条订单明细,并给出明细中商品的编码、数量和价格,系统根据领域驱动设计(DDD)模型定义,在订单明细表中的订单编码字段中,自动填写聚合根订单的编码作为关联信息。

删除一个订单时,执行的DML语句如下:

delete from t_order where id='20231102235959014440712';

delete from t_order_detail where orderCode='20231102235959014440712';

在上述请求参数中,声明删除Order聚合根。系统在查询数据库后,发现存在两个订单明细,执行了两次DML操作,分别为删除订单聚合根,以及订单的对应的明细信息。

更新订单信息时,新增一个明细、修改一个明细和删除一个明细,执行的DML语句如下:

update t_order set code='20231102235959014440712',status='payed'where id='20231102235959014440712';

update t_order_detail set commodityCode='6941592728505',count=2,summary=1000.00where id='1234567890111222';

delete from t_order_detail where id='1234567890';

insert into t_order_detail(id,commodityCode,orderCode,count,summary)values('系统自动生成的雪花Id','6941592728504','20231102235959014440712',1,10.00);

在上述请求参数中,声明更新Order聚合根。同时对订单明细值对象分别进行新增、修改和删除操作,对比旧数据后,按照DDD模型生成对应的订单更新、订单明细新增、订单明细修改和订单明细删除DML操作语句。

总体来说,本发明的方法中,差异对比是一种在数据模型限制内,通过异构数据路径进行差异递归对比差异,并标记数据更新状态后提交到结构化数据库的算法。

应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

技术分类

06120116526167