(原文发表于2006-06-27 ,修正于2006-07-03)
目前手头上正在负责一个DTS(这里的DTS是Data Transfer System的缩写)系统的开发,我打算写一系列的文章来记录这个开发的全过程,这个记录可以说是实时的--每当遇到一个重要问题或解决一个重要问题,我将记录之。侯捷老师说,“发表是最好的记忆”,这一系列的文章除了权作笔记外,也希望能对后来者有所参考。
在开发任何系统之前,我们都需要弄清楚,这个系统是用来干什么的?主要职责是什么?这些需要通过需求分析得到。DTS是一个工具软件,几乎不涉及业务,所以其功能目标还是比较单纯的。我们都知道,DTS用于在两个数据库之间、或者文件与文件之间、或者数据库与文件之间导入导出数据,参与数据传递的两个表(源表与目标表)的结构可能是完全不同的,但是它们之间的列与列可能存在映射关系(有的列映射可能很复杂,比如会涉及类型转换、列合并、列分裂、转换表达式等),DTS可以基于建立好的映射关系,将数据从源表向目标表传递。我大致总结了一下,DTS系统的主要功能包括:
(1)独立于数据库类型和文件类型,或者说完全支持异构数据库、异构文件之间的传递。(如果有新的数据库类型或文件类型,则只需要添加对应的适配器插件即可)
(2)提供可视化的工具,能建立(或修改)源表结构与目的表结构之间的匹配映射关系(映射关系可以保存、加载)
(3)验证表结构映射关系的完整性、正确性
(4)基于正确完整的结构映射关系,可以实现数据从源表到目的表的导出和增量导出(暂停/继续功能、日志记录功能)
(5)支持多种数据加工方式,如列合并、列分裂等。
(6)支持分支条件,以使在数据转换迁移时可以依据条件动态改变转换流程。
(7)当数据源为数据库时,如果将源表替换为临时视图,仍能实现上述功能。(使用临时视图是为了解决多个源表对应一个目的表的问题)
(8)当不允许创建视图时,仍可以进行多表联合查询数据导出。
(9)记录导出失败的数据,并能依据这些记录,对失败的数据进行重新导出。
(10)定时运行数据导出任务。
就目前我所了解的,这个系统的难点在于以下几个方面:
(1)独立于数据库类型是一个挑战!不同类型的数据库虽然都支持标准的SQL语句,但是它们之间的差异还是巨大的,比如,每种类型的数据库都有自己的数据类型;每种类型的数据库都有不相同的扩展;对于同一个任务(比如分页),针对不同类型的数据库都有不同的实现方式,等等。
(2)增量导出是另一个难点。如果已经导出过的数据发生的变化(更新、删除),由于我们不能修改数据源添加触发器,所以我们的系统接收不到这些事件,如何同步这些已经导出过的数据需要一种策略。
(3)列合并的合并表达式的验证都不简单。而且还要看你对表达式的支持需要到达什么样的级别,比如加减乘除、指数、对数、笛卡儿运算等等。
(4)对不满足转换规则的源数据项的处理。也许不同的任务对这样的源数据项的处理要求是不一样的,系统必须支持用户对处理方式的选择。
还有很多难点可能还没有遇到,也可能还有很多需求没有整理进来,这些会在构建系统的过程中逐步挖掘或发现,到时我会将它们列举在这里。
《DTS开发记录》目录:
1.DTS开发记录(1)--系统总体结构
2.DTS开发记录(2)-- 数据管道及插件
3.DTS开发记录(3)-- 连接与连接对
4.DTS开发记录(4)-- 映射列
5.DTS开发记录(5)-- 挑战增量导出
6.DTS开发记录(6)-- 数据映射
7.DTS开发记录(7)-- 灵活的引擎 IAgileEngine
8.DTS开发记录(8)-- 主键的影响
9.DTS开发记录(9)-- 数据迁移任务 DataTask
10.DTS开发记录(10)-- 可视化的流程编辑
分享到:
相关推荐
在SQL Server 2005下使用DTS的开发工具插件
龙软DTS平台开发,介绍后台基于LUA语法的交易策略开发,是目前国内程序化交易平台的首创。
dts记录,已经能运行
分布式事务服务 ...dts-schedule是二阶事务恢复任务,dts-server是一个独立的系统,提供remote模式下的数据存储、二阶事务恢复等工作,采用组件化开发,引入不同的jar包拥有不同的功能,整个应用通过spring集成
MX Player DTS 包 ~~~MX Player播放器解决DTS音效解码无声的问题
阿里云 专有云企业版 V3.6.2 数据传输服务DTS 开发指南 - 20190322.pdf
lua语言是一种DTS定制开发语言 这个PPT介绍的是lua语言的编写规范和基本的语法介绍。这个文档的目的在于说明lua语言的基本要素,掌握lua语言的数据结构设计。
foobar2000的DTS插件之选用 许多foobar2000迷都说foobar2000无法播放 DTS 文件(.wav;.dts;多声道DTS-CD碟片),原因之一是DTS文件的版本与播放器不相符;原因之二是方法不对。现发几个不同版本的DTS插件供选用。 ...
DTS由美国DTS公司与环球电影公司合作开发的数字影院环绕声系统。同杜比数字有类似之处,也是一种多声道采用压缩码技术。DTS采用CAC(相干声学编码)结构的压缩方式有别于杜比数字的压缩方式,典型的压缩比为3:1,仅...
在Linux下用Qt开发新一代DTS图形数据系统的分析与设计.pdf
mssql dts管理大全mssql dts管理大全
4K UHD 2019 DTS:X 演示碟2019 DTS Demo Disc(UHD)简介: 2019年的DTS演示碟终于与大家见面了。与去年一样,这张碟仅提供UHD 4K版本,还没升级器材的烧友们该加油了。本次的演示内容主要是老片新制,老片重新制作...
Dynamic DTS方案介绍
Microsoft SQL Server 2000 Data Transformation Services (DTS) 包设计器是一种设计工具,在以 SQL Server 2005 Integration Services 包格式升级或重新创建 DTS 包之前,SQL Server 2005 服务器的开发人员和管理员...
DTS 是为 Linux 提供一种硬件信息的描述方法,以此代替源码中的 硬件编码 (hard code)。DTS 即 Device Tree Source 设备树源码, Device Tree 是一种描述硬件的数据结构,起源于 OpenFirmware (OF). 在 Linux 2.6 中...
电网调度员培训仿真系统(DTS)中数据、图形一体化CAD系统的开发.pdf
可用于foobar2000几个版本0.9.4.3、1.0、1.18、的DTS解码器插件foo_input_dts.dll
阿里云DTS.docx阿里云DTS.docx阿里云DTS.docx阿里云DTS.docx阿里云DTS.docx
dts光盘制作器 v14.39,支持cd dvd 无损 有损等格式,
一个DTS的程序代码