开发者社区> HapplyFox> 正文

SQL Server 多表数据增量获取和发布 3

简介: 程序结构 新建一个窗体应用程序,新增三个类库,实现各个层次责任分离 BLL 业务逻辑层 Common 公共帮助类层 Models 模型层 SqlMonitoring SQL监视器程序 image.png 程序设计思路 大概的设计思路是这样的: 1、因为是多表数据增量获取,首先通过配置CDC已经完成多表的捕获配置。
+关注继续查看

程序结构

新建一个窗体应用程序,新增三个类库,实现各个层次责任分离

  • BLL 业务逻辑层
  • Common 公共帮助类层
  • Models 模型层
  • SqlMonitoring SQL监视器程序
img_5de3d43facb3bebefcba290c8365c19e.png
image.png

程序设计思路

大概的设计思路是这样的:
1、因为是多表数据增量获取,首先通过配置CDC已经完成多表的捕获配置。
通过CDC实现了数据的捕获,我们需要开一个服务,循环读取捕获表的内容(通过时间戳字段),因为使用时间戳,所以需要对每次的时间进行保存,方便下一次获取数据区间做判断条件。
因此设计一张数据表时间戳记录表,数据结构如下

时间记录表数据结构
主键,架构名,表名称,上次更新时间

img_5d8b32a3bb19afd2bf461923649fdd15.png
image.png
img_999d8ec1ec07eca9032e4932477a7ebd.png
image.png

2、根据时间戳循环读取多表数据,将数据放入队列中。
3、在开启一个服务,循环读取队列里面的数据,为了保证数据有效性,将队列中的数据传送给服务接口的时候还要再本地同时进行备份的保存,只有当数据服务返回正确值得时候,更改日志表的状态位。

日志记录表数据结构
主键,时间节点,序列化数据,状态位

img_73a5c0083466d745135cf1066860b3a5.png
image.png
img_43cf355695652d77306b866e039e0b4d.png
image.png

重点
如果需要更新状态位,那么需要一个标识位来判断,那么这个标识位是什么。大家可以猜一猜,答案就是UpdateTime字段。
数据库CDC数据捕获的时间精确到毫秒三位,可以保证一般系统数据唯一性,队列中存在当前字段,将当前字段作为标识来更新日志记录表的状态位。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Mysql】Mysql数据表区分大小写问题解决方案
原因 由于有的环境下,对数据表的大小写是明确区分的,但是我在导出的时候的数据表全部都是小写的,这个时候需要对环境进行配置 解决 vim /etc/my.cnf 在[mysqld]下加入一行:lower_case_table_names=1 service mysq...
700 0
oracle、mysql、sybase和sqlserver复制表结构和数据
Sql Server(sybase): 1.复制表结构: 新建表student2,并且结构同表syn_xj_student一致。Sql语句如下: select * into syn_xj_student2 from syn_xj_student where 1=2 2.复制表数据,并...
718 0
PHP获取当前url路径的函数及服务器变量:$_SERVER["QUERY_STRING"],$_SERVER["REQUEST_URI"],$_SERVER["SCRIPT_NAME"],$_SER
1,$_SERVER["QUERY_STRING"] 说明:查询(query)的字符串 2,$_SERVER["REQUEST_URI"] 说明:访问此页面所需的URI 3,$_SERVER["SCRIPT_NAME"] 说明:包含当前脚本的路径 4,$_SERV...
840 0
Oracle 数据库增量备份周计划脚本
####------------------------------------------------------------------------------#### ##    shell db_incremental_database_backup.
1202 0
ActiveReports 报表控件官方中文入门教程 (2)-创建、数据源、浏览以及发布
原文:ActiveReports 报表控件官方中文入门教程 (2)-创建、数据源、浏览以及发布 本篇文章将阐述首次使用 ActiveReports 报表控件 的方法,包括添加报表文件、绑定数据源以及如何发布报表等内容。
1053 0
SQL Server 多表联合查询取最新一条数据
所有的SQL语句如下: create database David; use David --雨量站表 create table RainSite ( ID int not null...
891 0
+关注
62
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载