- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据转移方案-时间戳方式
数据转移方案
——时间戳方式
文档修订记录
更改类型:*S – START A - ADDED M - MODIFIED D - DELETED
版本号 日期 主要完成人 更改类型 版本描述 审核人 草稿 2011-12-14 马玉会 S V1.0 初稿 2011-12-14 马玉会 A V1.0 完成稿 版本1 版本2 1. 目的
随着医院业务的发展,医院业务产生的数据量与日俱增,医院几年内产生的数据都存储在现有HIS业务数据库中,业务数据库负荷不断增大,一张业务表甚至会存储几百万条记录,这造成业务应用过程中检索数据速度太慢,直接影响了医院的效率。
为减轻现有业务数据库的压力,提高医院运行效率,现提出建立一套历史数据库,将现有业务数据库中过期的数据转移到历史库,减少业务库的数据量,提高HIS系统的运行效率;另一方面,为减轻报表查询对业务操作的影响,分离业务操作和报表查询关联数据库,业务查询关联业务数据库,报表查询关联历史数据库,历史库需要满足对数据的实时查询的需求,必须保持业务库数据与历史库数据的同步。另外,历史数据库在满足业务库转移数据需求的同时,还要遵循一定的标准和规则,为后期的数据挖掘和决策支持提供基础。
2. 转移方案
根据转移方式的不同,业务库与历史库之间的数据转移可以分两个阶段:初始化转移和增量转移。初始化转移采用全量抽取的方式(也可看作时间戳方式),抽取一定时间戳前所有的数据,增量转移采用基于时间戳的增量抽取方式,抽取一定时间戳区间的数据。
采用上述转移方案,需要在现有业务库表中添加时间戳字段。抽取原理如下:
【备注】:
SQL Server中提供的timestamp数据类型是二进制数字,它是数据库中自动生成的唯一二进制数字。timestamp通常用作给表行加版本戳的机制。存大小为8个字节。Timestamp数据类型只是递增的数字,不保留日期或时间。
Timestamp是单个数据库的计数器,不是服务器的计数器。
每个数据库都有一个计数器,当对数据库中包含 timestamp 列的表执行插入或更新操作时,该计数器值就会增加。该计数器是数据库时间戳。这可以跟踪数据库内的相对时间,而不是时钟相关联的实际时间。一个表只能有一个 timestamp 列。每次修改或插入包含 timestamp 列的行时,就会在 timestamp 列中插入增量数据库时间戳值。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用。对行的任何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。如果该列属于索引键,则对数据行的所有更新还将导致索引更新。
使用某一行中的 timestamp 列可以很容易地确定该行中的任何值自上次读取以后是否发生了更改。如果对行进行了更改,就会更新该时间戳值。如果没有对行进行更改,则该时间戳值将与以前读取该行时的时间戳值一致。若要返回数据库的当前时间戳值,请使用 @@DBTS。
0x00000000000007D0 0x00000000001267C8 转移成功 2 2 MZ 0x00000000000007D0 0x00000000001267C8 转移成功 3 3 YJ 0x00000000000007D0 0x00000000001267C8 转移成功 4 4 YS 0x00000000000007D0 0x00000000001267C8 转移成功 5 5 ZY 0x00000000000007D0 0x00000000001267C8 转移成功 … … … … … … 初始化转移
初始化转移采用全量抽取的方式。全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数据库中抽取出来0x00000000001267C8,查询yhlx表中时间戳小于记录的最大时间戳的记录,如下:
select * from test..yhlx where version 0x00000000001267C8
然后将抽取出的记录数据进行规范化转换并插入到历史库中。
增量抽取
增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。如何捕获变化的数据是增量抽取的关键。是一种基于快照比较的变化数据捕获方式,在源表上增加一个时间戳字段,系统中更新修改表数据的时候,修改时间戳字段的值。select @@DBTS。默认2000(0x00000000000007D0)。
为数据库表添加时间戳,添加完成后,记录当前数据的新的时间戳:select @
文档评论(0)