现在的位置: 首页 > 综合 > 正文

如何实现100%的动态数据管道(一)

2013年10月07日 ⁄ 综合 ⁄ 共 1093字 ⁄ 字号 评论关闭

    大家都知道,PB的数据管道是个非常有用的数据传输的工具,支持多种数据库之间的数据传输,并且有完善的传输错误控制机制.

    看到过一些网友实现的数据管道,综合起来有这么几种:

    1.数据管道对象,预先建立好,然后在程序中,调用这些管道对象,实现数据传输,这样可以在编译好的程序中进行数据传输'

    2.也有动态修改管道SQL语法的,但是只能修改检索条件.

这样的做法,如果传输不同条件的数据,或者表还是必须在开发环境下建立必要的数据管道.

    我现在考虑的数据管道要实现以下的功能:

    1.可以任意在两个数据库之间传递数据;

    2.可以任意在两个表之间传递任意集合的数据,所谓任意就是开发环境下不用建立任一个数据管道对象,管道对象通过程序生成;

    3.可以根据用户所选,生成一批数据管道,并且一次性传输数据.

    4.支持多种数据库之间传递数据(包括相同的和不相同的DBMS的数据库之间).

如果能够实现以上3点,那么只要连接上源数据库,目的数据库,选择需要传递那些表,并写好传递的数据集的范围(SQL条件),点击"传输",你就可以坐下来喝杯咖啡了(因为管道传输效率太低了,等吧).

    不过要实现这个功能,谈何容易,其实其中一个重点应该就在于如何针对多种数据库,生成不同的管道语法,我现在就不知道如何利用pb的相关dll的功能,不然如果能够分离出生成数据管道语法的功能,那真是对PB论坛的一大贡献啊.

    闲话少说,先说说低级一点的处理方式,下面是我的概要设计和分析:

        1.首先确定构建动态数据管道需要那些必要的元素,这些元素从那里取?

        经过分析,需要知道源表有那些列,这些列的类型,是否允许空,是否是主键,列的标度,缺省值等等,这些表需要从系统表中取,而且不同的数据库,系统表往往都不一样,表结构也不一样.

        还需要构建管道的SQL语句,对于传输表数据,只需要指定where条件即可,这个可以通过用户直接输入SQL得到.

        2.PB代码中如何构建管道语法比较方便?

        考虑到必须支持多种数据库,不同数据库数据类型类型可能各不相同,同时保存表列的 而且随着支持的数据库不断增加,控制更加复杂,如何使程序更加轻便,清晰,稳定并且易于扩展?我考虑一下,首先不管是什么数据库都是支持标准SQL的,那么以建立目的表所需要的基本SQL元素为依据,可以建立一套中间的视图(或者表),通过这些视图(或表),PB程序中可以方便的利用datastore对视图进行操控,并生成管道语法.

        待续...

抱歉!评论已关闭.