数据转移方案
——时 间 戳 方 式
文 档 修 订 记 录
更改类型: *S – START A - ADDED M - MODIFIED D - DELETED
1. 目的
随着医院业务的发展, 医院业务产生的数据量与日俱增, 医院几年内产生的数据都存储 在现有 HIS 业务数据库中,业务数据库负荷不断增大,一张业务表甚至会存储几百万条记鼠标右键失灵 录,这造成业务应用过程中检索数据速度太慢,直接影响了医院的效率。
为减轻现有业务数据库的压力, 提高医院运行效率, 现提出建立一套历史数据库, 将现 有业务数据库中过期的数据转移到历史库,减少业务库的数据量,提高 HIS 系统的运行效 率;另一方面,为减轻报表查询对业务操作的影响,分离业务操作和报表查询关联数据库, 业务查询关联业务数据库, 报表查询关联历史数据库, 历史库需要满足对数据的实时查询的 需求, 必须保持业务库数据与历史库数据的同步。 此外, 历史数据库在满足业务库转移数据 需求的同时,还要遵循一定的标准和规则,为后期的数据挖掘和决策支持提供基础。
2. 转移方案无法连接到app store怎么办?
根据转移方式的不同, 业务库与历史库之间的数据转移可以分两个阶段: 初始化转移和 江苏延迟退休方案2022年正式实施增量转移。初始化转移采用全量抽取的方式(也可看做时间戳方式),抽取一定时间戳前所 有的数据,增量转移采用基于时间戳的增量抽取方式,抽取一定时间戳区间的数据。
采用上述转移方案,需要在现有业务库表中添加时间戳字段。抽取原理如下:
【备注】:
SQL Server 中提供的 timestamp 数据类型是二进制数字,它是数据库中自动生成的惟一二进制数 字。timestamp 通常用作给表行加版本戳的机制。 存大小为 8 个字节。 Timestamp 数据类型只是递增的 数字,不保留日期或者时间。
Timestamp 是单个数据库的计数器,不是服务器的计数器。
每一个数据库都有一个计数器,当对数据库中包含 timestamp 列的表执行插入或者更新操作时,该计数 器值就会增加。该计数器是数据库时间戳。这可以跟踪数据库内的相对时间,而不是时钟相关联的实际时 间。一个表只能有一个 timestamp 列。每次修改或者插入包含 timestamp 列的行时,就会在 timestamp 列中插入增量数据库时间戳值。这一属性使 timestamp 列不适合作为键使用, 特别是不能作为主键使用。 对行的任何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那末旧的键值将无效,进 而引用该旧值的外键也将再也不有效。如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。 如果该列属于索引键,则对数据行的所有更新还将导致索引更新。
使用某一行中的 timestamp 列可以很容易地确定该行中的任何值自上次读取以后是否发生了更改。 如果对行进行了更改,就会更新该时间戳值。如果没有对行进行更改,则该时间戳值将与以前读取该行时 的时间戳值一致。若要返回数据库的当前时间戳值,请使用 @@DBTS。
2.1 添加时间戳
为业务库中每一个数据库表添加时间戳字段,包括 jc、mz、yj、ys、zy 库,并记录每一个 库转移的开始时间戳和结束时间戳。 建议建立一个转移时间戳表, 用于存储每次转移使用的
时间戳区间。
2.2 初始化转移
初始化转移采用全量抽取的方式。全量抽取类似于数据迁移或者数据复制,它将数据 源中的表或者视图的数据原封不动的从数据库中抽取出来,并转换成历史库标准格式。
遍历所有数据库的所有表,如果库表中记录的时间戳在当前库时间戳,则转移数据记录, 如果库表中记录的时间戳大于记录的数据库最大数据库则不进行转移。
例如: jc 库当前记录的最大时间戳为: 0x00000000001267C8,查询 yhlx 表中时间戳小 于记录的最大时间戳的记录,如下:
select * from test浪漫情书 ..yhlx where version < 0x00000000001267C8
然后将抽取出的记录数据进行规范化转换并插入到历史库中。
2.3 增量抽取
增量抽取只抽取自上次抽取以来发动机零部件数据库中要抽取的表中新增或者修改的数据。如何捕获变 化的数据是增量抽取的关键。时间戳是一种基于快照比较的变化数据捕获方式,在源表
上增加一个时间戳字段,系统中更新修改表数据的时候,系统会自动修改时间戳字段 的值。
增量抽取时,读取数据库当前的最大时间戳,根据转移时间戳表中上一次转移的春节最好七字对联 最大时间戳获取本次增量抽取的时间戳区间。转移程序根据时间戳区间转移业务库变 化的数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论