主分类
A 农业
B 作业;运输
C 化学;冶金
D 纺织;造纸
E 固定建筑物
F 机械工程、照明、加热
G 物理
H 电学
专利下载VIP
公布日期
2021-01-15 公布专利
2021-01-12 公布专利
2021-01-08 公布专利
2021-01-05 公布专利
2021-01-01 公布专利
2020-12-29 公布专利
2020-12-25 公布专利
2020-12-22 公布专利
2020-12-18 公布专利
2020-12-15 公布专利
更多 »
专利权人
国家电网公司
华为技术有限公司
浙江大学
中兴通讯股份有限公司
三星电子株式会社
中国石油化工股份有限公司
清华大学
鸿海精密工业股份有限公司
松下电器产业株式会社
上海交通大学
更多 »

[发明专利]一种基于发布、订阅模式的数据库消息通知方法及系统在审

技术领域

本发明涉及数据处理领域,具体涉及一种基于发布、订阅模式的数据库消息通知方法及系统。

背景技术

在某些业务软件中,数据库中相关业务表数据的变化只有一部分的软件可以感知到,与数据变化无直接关联的软件,需要通过定时/实时查询或者轮询的方式去获取发生变化之后的数据,用于自身软件中的数据业务处理。此类操作会对数据库本身服务造成性能压力,且无法感知数据变化的软件获取数据的方式较复杂。

为简化此类软件数据获取数据的操作,在数据库服务中提供一种消息队列,外部软件可以订阅到该服务中,数据库本身生产数据,数据库向订阅到该服务中的外部软件通过Socket的方式推送发生变化的数据,实现数据库本身于外部软件之间的解耦,降低软件的复杂性。

首先,数据库中业务表数据发生变化之后,通过定义数据发生业务表变化的触发器,自定义向什么消息队列发送数据,并定义数据的数据格式。在触发器中定义数据格式,可以获取除本身业务表之外的其他业务表数据,可以为外部软件提供丰富的数据资源。

其次,通过指定的IP、端口(port)以及相应的数据消息队列,外部软件订阅到数据库服务提供的消息队列中,相当于是在消息队列进程和外部软件中建立一个Socket的长链接(TCP长连接),如果数据库向相应的数据库消息队列中生产了消息之后,数据库消息队列向当前订阅到该消息队列的所有外部软件发布消息。

最后,外部软件接收到有数据库服务发布推送的消息之后,按照既定的格式解析消息数据,用于自身业务逻辑的处理。

本发明在于解决数据库中业务表数据发生变化之后,与该数据相关联的外部软件无法感知数据发生变化的问题。

发明内容

本发明提出一种基于发布、订阅模式的数据库通知外部软件的解决方案。该发明旨在提出一种数据库提供一种消息队列,且允许外部软件通过一定的机制注册到该消息队列上,数据库中指定的业务表数据发生变化之后,向消息队列中生产相应的数据(基于一定的格式),并向注册到该消息队列的外部软件(客户端服务)推送相应的消息,供外部软件使用。

为解决上述技术问题,本发明提供了一种基于发布、订阅模式的数据库消息通知方法,该方法包括以下步骤:

(1)在数据库中建立至少一个消息队列;

(2)在需要通知外部软件的数据库中的相关业务表中创建相应的触发器,并在该触发器中定义所关注的业务表中字段数据的变化处理逻辑、消息队列名称,以及定义在消息队列中存放的数据的格式;

(3)外部软件将自身的数据监听程序的网络连接注册到数据库提供的消息队列;

(4)业务软件对数据库业务表中的数据进行修改;

(5)触发器监测到关注的业务表中的字段数据发生了变化,将变化的字段数据封装成指定消息队列的数据格式,发送到相应的消息队列中;

(6)向外部软件推送相应的数据消息。

根据本发明的实施例,优选的,所述步骤(3)外部软件将自身的数据监听程序的网络连接注册到数据库提供的消息队列具体包括:所述外部软件于数据库提供的消息队列创建一个TCP长链接,用于数据库消息队列向所述外部软件推送数据消息。

根据本发明的实施例,优选的,所述步骤(4)所述业务软件通过以下两种方式对数据库业务表中的数据进行修改:通过数据库链接通知数据库即将修改数据库中某些业务表中的数据,或者通过数据库客户端工具,连接到数据库之后手动修改某些业务表中的数据。

根据本发明的实施例,优选的,所述步骤(6)在向所述外部软件推送相应的数据消息之前需要判断是否有外部软件通过Socket的方式注册到数据库提供的消息队列。

根据本发明的实施例,优选的,如果判断结果为是,则数据库的消息队列作为TCP链接的服务端,向所述外部软件的TCP链接客户端推送相应的数据消息;如果判断结果为否,该数据消息不会持久化存储,在此之后时间段注册到该消息队列的外部软件,只能接收注册时间之后生产且推送的数据消息。

为解决上述技术问题,本发明提供了一种基于发布、订阅模式的数据库消息通知系统,该系统包括:

消息队列创建模块,在数据库中建立至少一个消息队列

触发器创建模块,在需要通知外部软件的数据库中的相关业务表中创建相应的触发器的相关业务表上创建触发器,并在该触发器中定义所关注的业务表中字段数据的变化处理逻辑、消息队列名称,以及定义在消息队列中存放的数据的格式;

消息队列注册模块,外部软件将自身的数据监听程序的网络连接注册到数据库提供的消息队列;

数据修改模块,业务软件对数据库业务表中的数据进行修改;

消息监测封装模块,在触发器监测到关注的业务表字段的数据发生了变化时,将数据封装成指定消息队列的数据格式,发送到相应的消息队列中;

消息推送模块,向所述外部软件推送相应的数据消息。

根据本发明的实施例,优选的,所述消息队列注册模块,外部软件将自身的数据监听程序的网络连接注册到数据库提供的消息队列具体包括:所述外部软件于数据库提供的消息队列创建一个TCP长链接,用于数据库消息队列向所述外部软件推送数据消息。

根据本发明的实施例,优选的,所述消息推送模块,在向所述外部软件推送相应的数据消息之前需要判断是否有外部软件通过Socket的方式注册到数据库提供的消息队列。

根据本发明的实施例,优选的,如果判断结果为是,则数据库的消息队列作为TCP链接的服务端,向所述外部软件的TCP链接客户端推送相应的数据消息;如果判断结果为否,该数据消息不会持久化存储,在此之后时间段注册到该消息队列的外部软件,只能接收注册时间之后生产且推送的数据消息。

为解决上述技术问题,本发明提供了一种计算机存储介质,其包括计算机程序指令,当执行该计算机程序指令时,执行上述方法之一。

本发明的技术方案取得了以下技术效果:

1)解决与数据库无直接关联的外部软件无法被动感知其感兴趣数据的变化,只能通过主动获取、查询的方式感知数据的变化,从而进行相应的业务逻辑处理的问题。

2)松耦合的实现外部软件同数据库之间发布、订阅数据交互。

附图说明

图1是本发明的总体架构图

图2是基于全局唯一ID的文档生命周期管理处理系统结构图

具体实施方式

名词解释:

TCP:(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。

Socket:通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。

消息队列(message queue):一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列互交。消息会保存在消息队列中,直到接收者取回它。

发布-订阅(publish–subscribe):一种消息传播模式,消息的发送者(发布者)不会将消息直接发送给特定的接收者(订阅者)。而是将发布的消息按特征分类,无需对订阅者(如果有的话)有所了解。同样的,订阅者可以表达对一个或多个类别的兴趣,只接收感兴趣的消息,无需对发布者(如果有的话)有所了解。

生产者(producer):向消息存储中间件(如消息队列)中生产(新增)消息一个或者多个线程。

消费者(consumer):从消息存储中间件(如消息队列)中获取消息的一个或者多个线程,某一条消息获取之后,在消息存储中间件中该数据被删除。

触发器(trigger):一种提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个业务表进行操作(insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。

<业务处理方法>

专利申请的基于发布、订阅模式的数据库通知外部软件的总体架构如上述图1,总体架构图中只描述了在一个数据库服务中存在两个消息队列的情况,实际业务场景中可能存在多个消息队列。上述图1中包含了一个改变数据库数据的业务软件,以及多个数据库业务表、两个消息队列以及订阅了不同消息队列的外部软件群。

下面描述下从业务软件触发修改数据库业务表数据,到其他与数据库无直接关联的外部软件接收到消息队列发布的消息的一个过程。

(1)在数据库上建立两个消息队列。

申请号: 201710506648.X 申请日: 2017-06-28
公开/公告号: CN107423142A 公开/公告日: 2017-12-01
申请/专利权人: 北京明朝万达科技股份有限公司
发明/设计人: 董晓斌;喻波;王志海;安鹏;吴宏毅
主分类号: G06F9/54
分类号: G06F9/54;G06F17/30;H04L29/06;H04L29/08
搜索关键词: 一种 基于 发布 订阅 模式 数据库 消息 通知 方法 系统
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
我不想注册,点击直接下载立即登录,下载文献升级会员,免费下载
地址: 100097 北京市海淀*** 国省代码: 北京;11
代理公司: 暂无信息 代理人: 暂无信息

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京明朝万达科技股份有限公司,未经北京明朝万达科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:https://www.vipzhuanli.com/patent/201710506648.X/,转载请声明来源钻瓜专利网。

专利分类
×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

400-8765-105周一至周五 9:00-18:00

tel code back_top