开发者社区> HapplyFox> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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数据捕获的时间精确到毫秒三位,可以保证一般系统数据唯一性,队列中存在当前字段,将当前字段作为标识来更新日志记录表的状态位。

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

相关文章
SQL SERVER 数据库导出表设计
SQL SERVER 数据库导出表设计
0 0
C#中将DataGrid上的修改同步到SQL Server数据库中
C#中将DataGrid上的修改同步到SQL Server数据库中
0 0
C#中将DataGrid绑定到SQL Server数据库,显示数据库中的数据
C#中将DataGrid绑定到SQL Server数据库,显示数据库中的数据
0 0
SQL server 2008 最小化安装(学习专用)
之后下载这两个安装包,根据电脑实际情况下载,这里我选择x64版本的两个轻量级安装包,其他版本比较大,学习的话这两个版本就够了
0 0
VS2017调用SQL server 2019 和C++连接语句字符串
VS2017调用SQL server 2019 和C++连接语句字符串
0 0
函数计算 Python 连接 SQL Server
函数计算 Python 连接 SQL Server 自制脑图
0 0
SQL Server 2000 函数使用---CAST 和 CONVERT
日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
0 0
【Sql Server】进阶之行数据转为列显示
在开发系统维护阶段,经常需要进行各种数据统计,各种报表之类的。 这个时候,行数据转数据显示就发挥作用了。 场景:行数据的某列值想作为字段列显示
0 0
【Sql Server】时间转换和查询时间范围查询不正确的原因
最近在做时间方法封装的时候发现了一个问题! 如果sql语句输出的时间字段转为了字符串输出,那么在使用此字段作为时间范围筛选时发现无效了,没法过滤对应的时间范围内记录
0 0
【Sql Server】基础之统计库龄语句,仅作为语句使用
知识点的综合使用 分组、数据转换、Case when then、max、min、count、sum、left join多表关联等知识点
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
SQL Server在电子商务中的应用与实践
立即下载
SQL Server云化思考与实践
立即下载
RDS SQL Server CPU高使用率性能优化
立即下载