数据异构处理

2024-10-01

数据异构处理(共8篇)

数据异构处理 篇1

0 引言

随着社会的信息化发展,很多部门逐渐建立起各自的业务信息系统,但由于各业务系统建立时间和提供商不同,也导致各种数据的存在形式、来源和记录格式也各不相同,这对各部门、各系统之间实现数据共享带来不便。同时,随着社会高速发展,各企业部门对数据的“实时性”需求也越来越高,因为数据实时性越高,便更有利于企业部门高层作出更及时、更准确的决策。特别对于那些目前仍然主要采用以“文件形式”记录数据的部门来说,将具有多种来源途径和记录格式的文件型数据实时处理、集成,并最终建立统一、透明的“综合数据实时共享平台”,为企业或部门的高端决策提供实时数据支持,已是迫在眉睫。

以“文件形式”记录的数据在存储、提取、使用效率以及统计查询等方面仍存在较多不便。首先各类数据的“多源”存储,给数据文件的获取带来不便,同时也较不稳定;其次,各类数据的“记录格式”不统一,也不利于数据信息的提取;再者,数据的“文件型”记录,造成数据的“多次使用必须多次提取”,特别是对于部分数据在抽取完成后需要进一步处理加工过程时,就很大地影响了数据的使用效率,也加重了系统的负荷;最后,随着各类数据文件的日积月累,一方面容易造成文件的丢失,另一方面也不方便数据的管理和历史信息的查询统计。

针对目前数据文件在这些方面的不足,本文设计并实现了“多源异构海量数据实时处理平台”,该平台能实时从多种数据路径获取并处理多种数据文件,并按照各数据记录格式实时提取并将处理完的数据保存到数据库,不仅克服了文件型数据在保存、使用效率和统计查询等方面的不足,而且实现了各业务系统之间“多源异构数据”的实时共享。同时,将各类数据都统一保存到数据库后,对其他基于数据库开发的信息系统的开发与发展具有很大的意义[1]。

1 系统分析

1.1 系统数据源分析

目前各企业部门业务系统的数据来源途径主要有四种:远程FTP服务器、局域网数据服务器、局域网数据库服务器和本地数据服务器[2]。

(1)远程FTP服务器:系统平台通过互联网连接一台或多台FTP服务器,文件更新频率可能各不一样,对服务器存储的文件有下载权限。

(2)局域网远程数据服务器:在局域网内部,但物理距离较远,建立多台远程数据服务器实现数据共享,主要用作存储各种类型的文件型数据,各文件更新频率不定。

(3)局域网数据库服务器:在局域网内部,有部分数据经过其他系统处理,将处理完的产品数据保存到局域网的数据库服务器,通过权限设置为其他主机提供数据共享。

(4)本地服务器:本地服务器主要存放一些本地的数据文件。

系统数据源总体架构如图1所示。

1.2 系统设计目标

建立“多源异构海量数据实时处理平台”在功能上主要包括以下目标:

(1)系统具有基本的参数设置功能。主要是对各种数据存放位置的设置,比如:设置数据路径、FTP站点、必要信息的增删改查等。

(2)系统能够实时监测各类数据,对于最新更新的数据文件,能够实时获取并处理,并且最终保存到数据库中,同时能够通知其他系统实时使用最新数据。

(3)系统能够完成必要的数据保存、备份以及其他的各种维护功能。

(4)该系统能够24小时不间断运行于服务器端,必须保证数据的实时性、准确性以及系统的稳定性。

(5)基于软件设计的基本宗旨,该系统应具有良好的可扩展性。

2 系统设计

2.1 系统框架

根据本系统大的设计要求和目标,系统总体框架主要分为实时监测模块、实时处理模块和实时保存模块。

实时监测模块主要功能是对所有数据源上的数据文件进行实时监测,当有新增文件或者有文件内容发生变动时,能够实时获取该文件,然后交予实时处理模块处理。

实时处理模块主要功能是实时处理由实时监测模块监测到的新增或者内容发生变动的文件。该模块主要包括文件判断和文件处理两个功能,文件判断主要是用于判断实时监测到的文件是否为需要处理的文件,而文件处理主要包括数据抽取和数据加工。具体处理细节按照各种数据文件的要求不同。

实时保存模块主要是将实时处理完成后的数据保存到数据库中,并且在数据库中形成相应记录以通知其他系统的实时使用最新数据[3,4]。

此外,系统还包括了数据备份、数据清理等一系列必要的数据库维护功能。为了数据的安全,数据备份是必不能少的。本系统处理的数据种类较多,而且各种数据的使用情况各不相同,其中,有些数据需要永久保存,而有些数据只是用作最近时段的实时展示,有效时限较短但占用资源又较大,所以不需要永久保存,对这些数据则需要系统定时清理。同时对于一些存放临时数据的中间表,也需要系统定时清理。

2.2 系统功能设计

系统主要功能包括实时监测、实时处理和实时保存等三大模块。

1)实时监测

系统的实时监测模块主要分为两种方式:“定时扫描”和“实时监测”。主要是根据数据的存储位置和数据文件的特征采用不同方式。

对于远程FTP数据文件实时监测主要是采用“定时扫描”的方式,即指每隔指定时间后对所有文件进行一次扫描,以发现这段时间内是否有新增文件或文件发生变化。对于远程FTP服务器无法使用实时监测路径方法,系统主要结合FTP文件更新频率设置系统定时扫描频率。对于具有固定文件更新频率(即每隔固定时间更新一次文件)的FTP服务器,系统主要按照文件的更新频率设置系统扫描频率。而对于没有固定文件更新频率的FTP服务器,系统扫描频率主要根据实时性要求和系统与FTP服务器负荷而定。系统扫描频率越高,对系统与FTP服务器负荷就越大,所以在保证系统和FTP服务器正常运行的前提下,实时性要求越高,扫描频率就越高,反之相反[5]。

对于局域网远程数据服务器,可以在本系统平台建立映射盘,类似访问本地磁盘一般访问该远程数据服务器中的数据,所以对于该种存储方式的数据可以像监测本地文件一样使用“实时路径监测”,.NET已经提供了该类方法的实现,即当某路径有新增文件或者有文件发生修改时都能得到该文件的具体信息。同时,该方法的实时性较高。

对于本地服务器,也可采用“实时路径监测”方法对文件路径进行实时监测。

对于局域网数据库服务器,主要有两种方法:“定时扫描”和“使用触发器”。“定时扫描”主要和前文相似,每隔指定时间检查目标数据库是否有数据更新。“使用触发器”主要是结合数据库的触发器技术,对目标数据库设置触发器,当目标数据发生更新时,实时通知本系统数据库,对更新的目标数据进行处理。

2)实时处理

实时处理模块作为本系统一个核心模块,主要是处理实时监测模块监测到的最新实时文件。该模块主要包括文件判断和文件处理两个功能。

(1)文件判断:采用实时监测方法监测的是某一个路径下的所有内容,但是并非该路径下的所有文件都是所需要处理的文件,所以根据实际需求,对监测到的文件还需要判断该文件是否为所需文件,判断依据主要依数据实际需求而定。

(2)文件处理:当文件判断确定为所需数据文件后,就将对该文件进行处理。其中,文件处理主要包括数据抽取、数据加工等过程[6,7]。

a)数据抽取:按照各自的文件格式将所需的信息抽取出来。系统处理的大部分文件主要是文本数据格式,对该类数据文件只要进行简单的数据读取就可以[8]。但同时还有一些数据文件可能还使用了加密技术,所以在数据抽取之前还需要按其加密格式对其进行解码,再处理为所需的数据[9]。

b)数据处理:根据各种数据需求不同,处理的需求也不同,目前主要分为以下几种处理方式:数据提取、数值计算和数据统计等,而对于具有时空特性的一些数据,除以上几种方式外,可能还有:插值、生成等值线/等值面、平滑和图层叠加等,最终生成具有时空特性的空间GIS数据[10]。总之,对于各种数据,各自的读取格式、数据计算要求以及最终生成的产品数据形式也各不相同[11]。

3)实时存储

实时存储模块主要是将实时处理模块处理完成后的数据保存到数据库中,同时在数据库中形成相应记录以方便其他系统的实时使用最新数据[12]。其中,因处理完后的数据形式不同,数据存放形式也有所不同,在本平台中,数据库分为关系型数据库和空间数据库[4],对于一些简单的数据主要存储在关系型数据库的表中;而对一些具有时空特性的空间GIS数据主要存放在空间数据库中[13],比如各种色斑图和等值线/等值面数据等。

3 关键技术

3.1 数据实时处理模型

本系统根据目前数据存在的特点:存储在不同位置或者多种路径、数据格式各不相同、数据文件量增长更新速度较快等,针对因此带来的较多不便,比如因数据文件增长更新速度较快而导致数据文件越来越多,不便于保存,也不利于历史数据的统计与查询,更重要的是,很多数据文件还不能被实时处理和利用。

为此,本系统提出了一种“多源异构海量数据的实时处理模型”,主要包括三层架构:实时监测层、实时处理层和实时存储层。其中,“实时监测层”利用多种监测方法完成对多源数据的实时监测;“实时处理层”完成对“异构”且“海量”数据的实时处理;“实时存储层”完成对产品数据的保存和数据的实时被利用,同时也方便以后历史数据的计算和统计等。由此得出,本模型能够较好解决目前多源异构海量数据在保存和实时处理方面存在的诸多不便,有效提高数据的实时利用效率[5]。

系统三层模型架构图如图2所示。

3.2 数据并行处理

分析系统数据处理需求如下:

1)系统实时监测多种路径的“海量”数据,经常会出现同时有多个文件已经更新。

2)系统处理数据的“实时”需求,需要对每一个实时更新的数据进行实时处理。

再结合各种文件处理复杂度各不一样,有的文件处理较为复杂,耗时较长,所以会出现前一批数据还没处理完,后一批实时数据已经到达,导致系统来不及处理,因此不能满足系统的“实时”要求。

因此,系统采用“多线程”技术,为每一个实时更新的数据创建一个线程进行处理,最终实现并行实时处理海量数据文件[14]。但根据实际监测情况,会出现“很短的时间内有大量文件更新”的情况,且数据处理较为复杂,占用系统资源较大,一段时间内给系统带来较大负荷,因此系统制定如下“并行处理策略”:

1)设置系统最多同时并行处理指定数量的数据文件。具体数量由系统能承担的负荷和实际文件更新频率而定。

2)制定文件“处理优先级”。其中,根据客户对各数据的实时需求,实时需求较高的“处理优先级”较高,反之,实时需求较低的“处理优先级”也较低。

3)对于同一“处理优先级”的多个数据文件,根据文件的更新时间,优先处理较早更新的数据文件。

按照此策略,既能够有效缓解系统在文件更新高峰期时的负荷,同时又能够满足数据处理的“实时”需求。

4 应用实例

4.1 气象应用实例

通过以上对多源异构海量数据实时处理平台的设计,最终实现了基于Super Map的“多源异构海量气象数据实时处理平台”系统,并且已经实际应用在上海市嘉定区气象局日常业务中。

系统能够24小时实时监测多个路径,包括:一台远程FTP服务器、多台局域网远程数据服务器和多台本地数据服务器,对于实时监测的海量气象数据文件实时处理,对每一种格式的数据,按照各自的记录格式进行解码或者数据提取,再按照实际数据需求进行处理,并最终实时保存到各自数据库中。

系统框架图如图3所示。

该系统主要工作在于后台实时监测数据和处理数据,前台展示较少,图4为系统实时处理数据的记录首页。

同时,该系统主要处理的数据文件基本是以文本格式记录,用数值记录各格点的气象要素信息,不能直观地看出总体数值的空间分布和变化。该系统主要结合各样点数据空间分布和待创建表面的类型等特征,对每种特征的数据应用适当的插值方法进行处理,将文本型数据转换为具有时空特性的空间GIS数据[15]。本系统实现的插值方法主要有:距离反比权重插值、普通克吕金插值和样条插值。对于空间呈均匀分布且密集程度能够反映局部差异的样点数据集,比如Micaps的第四类格点数据,主要采用“距离反比权重插值方法”;对于插值字段值的期望(平均值)未知且恒定,数据变化成正态分布的数据,比如系统中的自动站各气象要素数据,主要采用“普通克吕金插值”[16];而对数据呈不均匀分布但输入点较多且较为密集的气象数据,如No Caws的自动站数据和Micaps的第一类地面全要素填图数据和第二类高空全要素填图数据,主要采用“样条插值方法”[17]。通过多种插值算法,最终生成等值线或者等值面等空间数据集[18]。

如图5所示,图的上部为自动站分钟数据,其中包括温度、风、雨量的各种气象要素信息数据,图的下部为将其中的“温度”要素经过“数值提取插值平滑”后生成的等值面数据集。

4.2 运行环境

目前,系统正在以下运行环境上运行:

硬件设备如表1所示。

支持软件如表2所示。

系统在长时间的试运行过程中较为稳定,且能够很好解决目前上海市嘉定区气象局业务所需的气象数据文件处理。

5 结语

本文针对目前各业务系统数据文件的“多源、异构、海量”等特点,结合对“实时性”的需求,设计了一种对“多源异构海量数据实时处理模型”,能够实时监测以多种形式存放在多种路径的海量数据,对所需数据文件能够及时响应,实时并行处理具有多种结构的海量数据文件,最后将处理完的数据实时保存到各自数据库中,确保数据能够实时被使用。同时,系统在数据处理过程中,结合各种数据的空间分布等特征,采用各种适当的插值算法,将文本记录的数据转换成更加直观的具有时空特性的空间数据,使数据得到更好的展示。

该系统的实现,不管是在数据的长期保存、历史资料的查询与统计等管理方面,还是在各种数据的实时利用等方面,提供一个可扩展的数据支撑平台,最终实现各业务系统间的多源异构海量数据的实时共享。同时,本系统的开发对以后基于数据库开发的气象信息系统也具有很大意义,为其他领域的复杂数据处理提供参考。

数据异构处理 篇2

下面是部分工具替换后的比对情况:

目前DataX在淘宝数据平台数据已经广泛地被用于数据同步作业,每天共计有4000+道DataX数据同步作业分布在全天各个时段运行。

DataX/DbSync/TT已经构成了淘宝数据平台数据提供的三大支柱:

其中DataX每天为淘宝贡献2.5T数据量,占淘宝数据平台总体数据同步的23%,占数据库数据同步的96%。

异构数据库数据迁移研究 篇3

随着企业的发展, 企业原有的各种信息系统常常需要升级, 以性能更好、规模更大的系统替代原有的系统。例如企业常常考虑使用Oracle或DB2等大型数据库软件来代替MS SqlServer, 在信息系统升级中, 一个不可避免的问题就是数据迁移。而在不同数据库之间进行数据迁移是其中的一个难点, 因为不同厂商的数据库中定义的数据类型不尽相同, 企业可以选择一些数据库系统自带的工具软件进行数据迁移, 例如Oracle公司的Migration WorkBench、MS SQLServer的DTS (Data Transformation Service, 数据转换服务) 。但是这些工具的针对性不强, 不够灵活[1], 所以许多企业在升级数据库时, 常常自己编写软件来完成数据迁移。

本文设计的系统专门用于MS SQL Server和Oracle数据库之间的数据迁移, 本系统采用了Java为编程语言, 采用Oracle10g和SQL server2005作为数据库环境, 并利用Java语言的跨平台性和JDBC的无差异数据使用来为数据迁移提供技术支撑。

1 系统设计和实现

1.1 总体设计

为实现数据迁移功能, 将系统划分为下面几个步骤: (1) 读取源数据; (2) 生成数据转换的规则; (3) 使用Java语言实现操作[2]。

1.2 系统结构设计

系统结构用来描述系统内部各组成要素之间的相互联系、相互作用的方式或秩序, 即各要素在时间或空间上排列和组合的具体形式。系统功能结构设计如图1所示。下面依照这个结构图来描述各个软件功能模块。

(1) 连接模块。使用此系统之前, 必须先连接数据库。本功能模块用于连接SQL Server数据库和Oracle数据库, 通过输入数据库连接所需的用户名、密码、数据库名称等。

(2) Oracle数据区模块。该模块用于显示所连接的Oracle数据库及表的信息。用户通过连接模块进行数据库连接, 如果连接成功, 将在窗口中显示当前连接的服务器下各个Oracle数据库的结构, 采用树形结构显示。显示信息包括服务器、用户名和当前用户可以访问的表。用户可以查看表名称、表中的字段属性及约束条件等详细信息。

(3) SQL Server数据区模块。该模块用于显示所连接的SQL Server数据库及表的信息。用户通过连接模块进行数据库连接, 连接成功后将在窗口中显示各个数据库的结构, 以树形结构显示, 结构分3层, 最上面是现在已连接的SQL Server数据库的服务器名, 第2层为现在可以访问的数据库名。

(4) 操作模块。本模块的主要功能是对选中的表进行操作, 分为两个界面, 左边显示SQL Server数据库信息, 右边显示Oracle数据库信息。

迁移表的操作是新建表与删除表操作, 用户在界面左边选择SQL Server数据库中的一个表, 这时本系统会在连接的Oracle数据库中查找是否存在同样的表, 如果没有, 将会在Oracle数据库中新建立一个表, 表的字段、数据类型、约束条件、主键等信息全部通过读取相应的SQL Server数据库获得, 按照本系统预先建立的数据类型转换对应表, 生成SQL语句并在Oracle数据库中运行该语句以建立相应的表。这个过程完成了以下操作:读取SQL Server数据库->生成SQL语句->在Oracle数据中建立表, 这就相当于完成了从SQL Server到Oracle的表的迁移。

(5) 操作结果模块。本模块用于显示数据迁移完成后的结果。这些信息包括用户选中表中的各个字段信息、表中的具体数据, 还有根据数据类型转换规则执行后的一些字段信息和生成的SQL语句, 以及在目的数据库表中的新数据和系统本身记录下来的操作日志。

(6) 辅助功能。在迁移过程中显示迁移的时间进度表, 提示估计完成时间和剩余时间, 如果迁移过程中出现错误, 将中止迁移操作并且提示错误类型和出错位置等信息。

2 系统详细设计

详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。详细设计的目标有两个:实现模块功能的算法逻辑上要正确且算法描述要简明易懂。这里仅描述这个阶段的关键步骤。

2.1 操作区模块

迁移模块主要完成的工作有:

(1) 连接Oracle和SQL Server数据库。

(2) 从SQL Server到Oracle数据库的迁移。该操作实现过程如下: (1) 从SQL Server数据库中获取到将要迁移的表; (2) 获得表的详细信息:表名、数据类型、约束条件、主键等; (3) 从Oracle数据库中寻找相应的数据库, 如果没有则重新建立新数据库; (4) 完成从SQL Server到Oracle的迁移; (5) 提示迁移成功消息框, 完成迁移日志记录。

(3) 从Oracle到SQL Server数据库的迁移。实现的方法和从SQL Server到Oracle数据库的迁移方法相似, 不再赘述。

2.2 大数据字段的迁移

在数据迁移过程中有一些大数据字段的迁移比较复杂, 所以单独在本节进行分析。例如, 在SQL Server表中有一种二进制数据类型是image, Oracle数据库中没有image数据类型, 但是Oracle有存储为二进制数据的类型, 比如BLOB类型, 这样就可以将SQL Server中的image类型转换为Oracle中的BLOB[4]。下面对步骤进行描述:

首先使用SQL语句以获得一个结果集, 然后调用这个结果集的getBinaryStream方法, 从而获得二进制数据, 接下来将此二进制数据写入到一个临时文件中。接下来, 就可以把数据转换成BLOB型存到Oracle表中[5]。

因为BLOB类型的特殊性, 这里写入BLOB字段与写入其它类型字段的方式不同。由于BLOB必须使用其自身的cursor才能对BLOB进行操作, 所以在写入BLOB之前需要获取cursor。

可以先插入一个空的BLOB, 这会创建一个BLOB的cursor, 接下来再将这个空的BLOB的cursor查询出来。这样通过两个步骤, 就间接获得了BLOB的cursor, 此时才能真正写入BLOB数据了, 代码编写需分成3个步骤来完成这个功能[6]。

(1) 插入空BLOB:

into javatest (name, content) values (?, empty_blob () ) ;

(2) 获得BLOB的cursor:

select content from javatest where name=?

(3) 用cursor写数据:

update javatest set content=?where name=?

通过上面几个步骤就能完成从image到BLOB的转换。而text到CLOB的方法, 以及ntext到NCLOB的转换, 因为都是二进制数据, 所以可以用相同的方法实现, 这里不再赘述。

3 系统测试

为了测试系统的有效性, 特设置测试环境[7]用于测试, 方法是从Oracle数据库中将较大的数据量迁移到SQL Server数据库中, 测试数据使用Oracle中样例数据库SH中的SH.SALES和SH.PRODUCTS两个表, 两个表的数据行约为100万行和1万行。实验主机配置为表1所示。

为了更好地比较, 测试中还选用了SQL Server自带的数据迁移工具DTS, 当迁移完成后记录测试中所花费的时间和内存资源, 如表2所示。

从表2可知, 使用DTS运行时占用内存资源比较稳定, 消耗内存资源比较少;而迁移系统在运行时仅耗内存资源50~120MB。当数据量比较小时, 所需内存资源比较小;当数据增加时, DTS所耗内存资源将随着迁移数据的增加而显著增加。

本系统对两个表的迁移都比SQL Server自带工具DTS要快, 并且数据量越大时, 效率越明显。虽然使用本系统将会耗费更多的内存, 但在目前机器内存普遍比较高的情况下, 多占用一些内存并不影响系统的有效性。

4 结语

文中对异构数据库进行了研究, 对SQL Server和Oracle数据库的数据类型进行了分析, 根据软件工程思想对系统进行了总体设计和详细设计, 并使用Java程序设计了语言实现系统。该系统可以在SQL Server和Oracle数据库之间进行数据迁移, 最后通过搭建测试环境证实了系统的有效性。

参考文献

[1]张玲.数据库迁移测试系统的设计与实现[D].大连:大连理工大学, 2005.

[2]陈海宁, 索旺.Java语言案例教程[M].北京:北京工业大学出版社, 2000.

[3]刘天时, 孟东升.信息系统数据迁移方法研究与应用[J].西北大学学报:自然科学版, 2006 (1) .

[4]于海涛.基于Java的异构数据库间数据迁移[D].长春:吉林大学, 2007.

[5]罗林球, 孟琦, 李晓.异构数据库迁移的设计和实现[J].计算机应用研究, 2006 (1) .

[6]余秋明.异构数据库间数据迁移[D].南昌:南昌大学, 2009.

数据异构处理 篇4

一、异构数据库系统

从异构数据库系统来看, 它的意图是合并和共享各个数据库之间的数据、信息、资源、硬件设备以及人力资源。在集成过程中, 最为重要的技术是以各个局部数据库类型为基础, 构建整体的全局视图。

二、异构数据库数据共享

鉴于异构数据库系统内有语义语法方面的不一致, 要等价转换系统中的数据显得不那么容易。因此, 它的转换意图是转换源数据库中整体有意义的资料和信息, 使得他们都进入到目标数据库。在这个过程中, 尽可能不含有无用信息。本文下面来论述若干数据转换的途径。

1. 使用软件工具进行转换

通过运用数据导入工具, 可以以文件形式将异构数据导入到集成好的数据库表内容。例如, PowerBuilder、Server以及SQL DTS、Oracle分别通过各自的数据管道Data Pipeline和SQL*Loader等, 可以在很大程度上整合和集成系统、文本、表格等以系统格式存在的数据和信息。在编写完成各个分系统所运用的转换代码后, 这些原始数据就能够转换、清理错误的数据、转化数据结构、消除冗余信息、存储以及刷新数据。但是, 数据转换工具本身没有独立性, 必须先要打开行该数据库产品中的前端应用程序, 之后才能运用有关的转换工具。而且, 转换程序比较多, 人工操作成分比较多。

通常情况下, 各数据库都载有此类专用工具, 这些工具密切结合了自身数据库的特征。在集成完成后, 如果没有转换到转换工具一一对应的数据库中去, 则不能使用这些数据转换工具, 而只能运用和集成相同类型的DBMS异构数据库。

2. 利用第三方数据库的转换

在转换规模较大的数据库时, 由于它的数据量非常大, 再加上不能使用工具软件的, 这就要运用其他小型的桌面数据库来进行转换, 如Access、Excel等。在转换具体的数据库过程中, 要从字段、表和关系定义出发, 借助原始数据库, 先通过中间数据库的转换, 读出数据, 并导入到对应的目的数据库内。

在这种方法中, 要求所需转换的模块比较少、扩展性能很强大, 它的缺点是要撰写大量SQL语句才能完成实现转换, 而且这种过程比较复杂, 但是质量并不高, 转换过程也比较冗长。

3. 设置传递变量的转换

在数据库应用程序中, 要充分运用数据库连接和开发工具功能, 先设定若干个有差异的传输变量, 这样就可以在源数据库与目的数据库进行转换, 而且可以链接和直接转换两个数据库异构数据库之间。在现存的数据库系统扩展过程中, 这种转换方法相对而言容易些, 且转换速度和转换的质量也是比较高的, 但是它的通用性非常差。

4. 通过数据库组件的转换

在转换过程中, 要充分运用数据库中应用程序里面的开发技术, 首先要设定ODBC, 在此基础上, 直接运用相关的数据工具进行数据转换。借助ODBC组件, 源数据库与目的数据库能够存取相关数据, 直接转换相关数据。信息数据的类别成为了组件存取数据的核心内容。假如源数据库并不能一一对应于目的数据库中的数据类型和数据定义, 则必须等价地转换这些数据的类型, 进而开展数据转换工作。如果进行完全等价, 则存在很大难度 (图1) 。

5. 利用XML实现转换

就XML来讲, 它和平台性并没有关系、可以扩展, 而且互操作性非常强大。它的数据语义描述能力以及传送能力都非常好, 作为数据源交互媒介, XML是非常不错的选择。就XML来看, 它自身的灵活、可扩展等特征使得它能够很好地描述不同应用类型的数据、甚至还可以描述存在很大差异的应用数据, 尤其适用于专门记录数据库数据的应用。除此之外, XML自身还具备自我描述性特征, 这就能够使它在不同的应用程序直接处理和交换相关的数据。这样, 也不必根据该数据二制定与与之有关的应用程序。

从XML来看, 它还能够在Web浏览的基础上实现多种形式的可视化显示, 从中间过程的转换处理程序来看, 需要访问管理系统内部的数据信息以及输出XML文档。为了能够很好地在XML文档和数据库之间传输和转换信息数据, 这就要求在文档以及数据库的结构间构建起相关的映射关系。建立映射关系, 标志着实现了中间转换处理过程中的程序功能。在XML的基础上, 数据库系统集成的核心内容是构建数据公共映射的相关模型, 这样就可以完成XML模式和数据库模式这二者之间所存在的映射关系, 这样一来, 关系模型就被映射到该公共数据模型上, 而后再通过公共模型映射到关系模型上。这个模型务必要达到下列要求:从模型的设置来看, 它应尽量简单, 要有很强的可操作性, 还要非常容易转换相关的数据库模型。因此, 这种模型的描述性也要非常好, 可以系统地描述和读取相关的数据模型, 要与偶非常强大的可扩展性。这种模型不仅要能够映射相关的数据结构和数据操作, 还要约束好数据库的完整性特征, 以这样就能够规避完整性不够而导致后来的插入以及删除异常。

从异构数据库来看, 它所牵涉到的数据形式主要有以下几种:结构化、半结构化以及非结构化等3种类型的数据。结构化数据的存在范围很广泛, 它在各类的信息系统数据库中都是大量存在的, 而且在关系数据库的存在最具有代表性。通常情况下, 半结构化数据都是存在于Web页面中, 它包括普通的文档、文件、各类电子邮件等内容。从XML来看, 它能够很好地处置和设定这两类数据。

XML可以用来转换数据转换, 这样就能够共享异构数据库中的相关数据, 这种方案的可行性也比较强。它的核心是构建起一一对应的映射模型。数据库异构和技术数据库异构问题的实习主要通过以下两种方式:第一是以客户端为基础提出相应的解决方案。比如, 可以借助PowerBuilder来进行软件开发, 通过把异构数据库和客户端链接到ODBC或其它数据库专用接口上, 此种类型的解决方案通常适用于C/S类型;第二是以服务器端为基础提出相应的解决方案。这就是说, 为例减少客户端的工作压力和工作负担, 通常都是在服务器端处理信息, 这种类型以B/S方式为主。

三、结语

在应用这些技术解决异构数据库问题时, 通常都要构建不少子系统, 它们构成了集成计算机信息系统, 这样就可以实现复杂度更高、更高水平的性能。然而既有的异构信息系统, 通常情况下信息孤岛情况是普遍存在的。这就是说, 在各个子系统间, 它们都是相互分开的、实现信息交换和信息共享的难度很大。这就要我们运用系统集成手段来处理这些问题。从上文分析可以看出, 信息集成技术是为了更好地处理和转换系统中复杂度更高的、分布更为广泛的、结构各不相同的多媒体信息数据和转换、交换、集成以及共享普通结构数据。在这个过程中要以异构数据库为基础实现系统集成, 这样就可以增强系统的可移植、互操作、互换以及稳定等特征。

为了更好地交换和共享异构数据库中的相关信息, 要处理好异构数据库中的数据转换。在转换过程中, 要处理好相关的理论与技术措施。这样以来, 就能够很好地破解数据转换、信息技术发展以及数据库升级所带来的各种问题, 也能够尽可能地运用已有资源, 更好地服务于经济社会的发展。

摘要:在企业开展信息化过程中, 异构数据库中的数据共享是非常关键的问题。本文首先厘清了异构数据库的目标, 在文章的第二部分提出了异构数据库数据共享中的转化方式。希望这些方式能够尽可能地运用既定资源, 节省开发资源。

关键词:异构数据库,数据共享,转化方式,软件工具,第三方数据库

参考文献

[1]杜宝伟.信息化建设中异构数据的共享策略和方法[A].2012油气藏监测与管理国际会议暨展会论文集[C], 2012

[2]万静, 刘健, 王学伟, 易军凯.基于XML的异构数据库信息共享方法研究[J].北京化工大学学报 (自然科学版) , 2010 (05)

[3]许晓林.一种基于本体的异构数据库集成方法[J].煤炭技术, 2007 (09)

异构数据库间数据同步的方法实现 篇5

为了提升业务管理平台的易维护性、可延展性、数据安全性, 大多数业务管理平台选择将数据分层管理, 以轻量级业务管理平台为例, 既只将数据分离为数据采集层和数据应用层两层。数据的分离意味着不同数据层之间为了实现数据交互以满足业务需要就必须按照业务规则将数据采集层的数据同步到数据应用层。

数据同步在时间维度上可以分为实时数据同步和非实时数据同步。实时数据同步要求数据存储到采集层与同步到应用层同步进行, 几乎不存在时间差。非实时数据同步要求数据存储到采集层与同步到应用层异步进行, 即将数据存储到采集层之后根据业务需要按照规定的触发时间 (固定周期的固定时间点) 将数据采集层的数据同步到数据应用层。

本文以石油行业信息系统数据统计模块中针对数据实时性的迫切需求为背景进行讨论。支撑系统的数据由数据采集层和数据应用层组成, 拥有各自独立的数据库进行数据的管理。数据采集层采用指标维度的组合方式存储数据, 即一个数据单元是由一个指标及其对应的维度组 (多个维度的组合) 来唯一存储定位。系统开发初期使用ETL工具进行两个异构数据库之间的数据同步。数据应用层采用维度组与指标组联合定义事实表结构, 事实表与维度组所对应的维表关联形成星形模型, 通过BI工具进行建模, 按照业务规则将各项数据灵活地展现出来。

ETL的工作方式是在一个固定的周期或固定的时间点 (例:每天晚上十二点整) 批量地将数据采集层按照相应的业务规则同步到数据应用层, 这种方式必然会造成两个数据库之间在某些时间周期内存在数据差异性的问题, 无法满足用户“即填即用”的业务需求。由于ETL方式对于实时性数据要求的局限性, 最后探讨并提出了通过存储过程实现部分数据实时同步、通过ETL方式实现部分数据非实时同步的数据同步方案。

一、相关技术分析

通过ETL技术进行数据同步, 可以对多种操作 (数据源的数据抽取、转换, 维护) 过程进行简化和自动化管理, 定期或按调度接收数据, 并将其输入数据集市或数据仓库目标数据库的集成工具。ETL可以从多个不同的业务系统、多个平台的数据源中抽取数据, 完成转换和清洗, 将结果数据装载到各种系统里面。其提供了图形化的开发环境, 可维护性较强, 能自如应对业务的复杂变化, 兼容多种数据源。

虽然ETL技术具有非常强大的数据处理能力, 但其无法实现数据的实时同步, 即无法满足用户在数据采集层进行数据填报后随即在数据应用层进行数据分析、查询等操作。

存储过程 (STORED PROCEDURE) 是一组为了完成特定功能的SQL语句集, 是数据库中的一种重要对象。它能够接受输入参数, 并以输出参数的形式将多个数据值返回给调用程序, 包括执行状态, 并能够执行其他存储过程, 经过第一次编译后再次调用不需要再次编译, 是一种高性能的数据操作。

虽然存储过程是一种高性能的数据操作, 但其后台需要大量的SQL语句支撑其实现, 没有成熟的开发工具支撑, 面对灵活多变的业务, 其维护难度极大。

系统中数据采集层与数据应用层为异构数据, 数据采集层同步到数据应用层的数据量庞大, 并且一部分数据必须满足实时同步的业务要求, 所以数据采集层到数据应用层的异构数据同步既要满足大数据同步的要求, 又要满足实时数据同步的要求。通过对实时数据相关业务的分析, 发现其业务具有很强的稳定性, 故采用存储过程的方式实现实时数据的同步, 其他非实时数据采用ETL技术实现数据同步。同时选择两种不同的异构数据同步方式既满足了数据实时性的要求, 又满足了大批量数据同步的现实业务要求。

二、数据结构描述

数据采集层的数据存储是以指标、维度组合的方式实现存储, 即一个数据单元由一个指标及其对应的维度组 (多个维度的组合) 唯一存储定位, 如表1。

数据应用层按照维度组与指标组组合定义事实表 (如表2) , 事实表与事实表中各个维度对应的维度表相关联形成星形模型 (如图1) 。其中, 事实表中的一行数据代表数据采集层中所有维度相同的指标的数值信息。

三、数据实时同步 (存储过程数据同步)

数据实时同步实现步骤。系统中存储过程通过数据采集层与数据应用层之间的业务关联性构建视图实现数据采集层与数据应用层的异构数据转换。根据数据结构描述章节中提到的两个异构数据库间表结构的特点, 在视图中应用“行转列”方式, 对数据采集层的数据进行抽取和转换, 生成满足数据应用层要求的数据集, 并将数据集数据存储到数据应用层对应事实表中。

1) 创建存储过程。填报机构、填报年份、填报月份、报表编号四个参数, 定位数据采集层中唯一的报表实体, 并支撑数据抽取和转化视图数据抓取范围。考虑到存储过程的使用效率, 故将其建立在数据应用层中, 并建立数据应用层到数据采集层的DATABASE LINK连接支撑数据抽取和转化视图数据抓取。

2) 数据抽取和转换。根据数据采集层与数据应用层的业务逻辑以及数据模型特点, 通过“行转列”方式实现从数据采集层到数据应用层的SQL逻辑视图。

维度根据指标分组, 并将其行转列。具体实现代码如下:

维度行转列的执行结果, 如表3所示。

指标根据行转列后的维度组分组, 并将其行转列。具体实现代码如下:

指标行转列的执行结果, 如表4所示。

3) 数据存储。将数据抽取与转化视图生成的结果数据集定义为一个游标对象CURSOR, 具体代码模型如下:

CURSOR游标名称IS SELECT*FROM结果数据集SQL

获取到游标对象后, 可以通过LOOP循环获取每行数据, 逐行数据进行插入操作, 具体实例实现代码如下:

4) 日志记录。事实表表结构发生变化或者机器网络故障等突发情况下, 存储过程执行势必会受到影响, 通过事实表存储过程调用已创建的日志记录存储过程来定位事实表存储过程的执行情况。

日志记录存储过程包含报表编号、填报机构、填报年份、填报月份四个参数, 该参数组定位唯一存储过程的执行情况, 如果执行有异常, 那么在EXCEPTION WHEN OTHERS THEN之后, 将SQLERRM错误信息作为返回结果参数传递给日志记录存储过程, 通过SQLERRM的内容, 能够很容易分辨出执行存储过程中存在的问题, 方便开发人员进行存储过程的问题跟踪。具体实例实现代码如下:

四、批量数据同步 (ETL工具)

数据准备区:考虑到数据采集层随时都可能进行更新等操作, 被频繁的访问, 为了不影响数据采集层对应数据库的IO性能, 所以建立数据准备区, 减少数据转换/清洗操作对采集层的影响。

CSV文件:对于一次维护并且较长时间不变的数据可以用CSV格式文件 (ETL工具也支持其他文件格式) 进行维护并通过ETL工具同步到数据应用层, 如系统中涉及到的维度, 维值。

批量数据同步实现步骤:

1) 数据抽取。通过ETL工具将数据采集层的数据抽取到数据准备区有两种方式:全量抽取和增量抽取。

全量抽取:ETL工具将所有数据采集层中的表、视图等数据对象抽取出来, 并转换为满足业务需要的表数据对象。

增量抽取:只抽取数据库中以上次抽取结束时间为起点的所有新增或修改的数据。

增量抽取较全量抽取应用更广, 如何捕获变化的数据是增量抽取的关键。对捕获方法一般有两点要求:准确性, 能够将业务系统中的变化数据按一定的频率准确地捕获到;性能, 不能对业务系统造成太大的压力, 影响现有业务。数据抽取如图3。

2) 数据转换、清洗、加载。数据转化、清洗由两部分组成, 第一部分数据准备区到数据应用层的数据转换/清洗, 第二部分CSV文件中数据到数据应用层的数据转换/清洗。

数据准备区到数据应用层的数据转换、清洗、加载, 如图4。

CSV文件中数据到数据应用层的数据加载, 如图5。

五、总结

随着信息时代的高速发展, 对于企业, 如何能使决策者随时查看生产过程数据, 以便快速地做出更为灵活的商业决策, 是企业信息化建设的关键, 但是面对不断膨大的海量数据, 结合企业自身业务的特点, 采用灵活的数据同步方法, 不仅降低了企业信息化建设费用, 同时也满足了企业对数据的需求。系统采用了数据存储过程和ETL工具数据同步两种数据同步方法, 即满足了数据实时性的要求, 又保留了大批量数据的处理能力, 同时为后续的业务扩展提供了空间。

摘要:本文针对系统中异构数据库间数据同步对数据实时性要求的不同, 提出了通过ETL实现非实时数据同步, 通过存储过程实现实时数据同步相结合的同步方法。该方法在实际使用过程中, 取得了良好的应用效果。

数据异构处理 篇6

1 数据交换过程

数据交换能有效实现数据之间信息共享, 数据交换在现实中的应用意义重大。例如能实现企业业务之间的数据资源共享、业务协同, 彻底的冲破了信息孤岛的现象。数据交换理论在不同的数据环境中实现途径存在不同。在数据交换平台中, 主要包含以下几个部分:数据配适器服务、数据传输服务、数据安全服务、数据转换服务以及平台控制服务。数据交换的过程主要包括:数据提取、数据转换、数据传输、数据接收以及数据控制与管理。

数据交换中的第一环节是数据提取, 数据的提取同时也是对数据的识别, 通过连接上原始异构数据源, 对需要进行交换的原始数据进行提取, 对数据进行分析处理, 使得用户能实现数据信息之间的准换。那么可以通过数据信息提取法形式进行提出信息的原始数据源主要分为以下三种:第一, 数据库资源, 数据库资源是指专门对企业数据进行存储的各种关系数据库, 比较典型有SQL Server、Oracle、DB2;第二, 文件数据源。文件数据源是指, 在单位业务系统中, 具有特定格式的文件, 例如企业的工资表以及财务报表等形式;第三, XML文档。该种形式的文档能实现结构化的数据交换。在科技化的信息交换中占据着重要的地位。而在数据交换中的数据传输、以及数据交换平台相关的数据传输, 都是数据交换系统中比较重要的环节。在数据交换中, 数据转换技术其中最为核心的部分, 该项技术能实现数据的格式化转换, 下文将对数据转换技术进行详细的分析。

2 数据异构性分析

2.1 系统异构

数据系统的异构性是指, 数据源在其存在的数据系统环境、数据库管理系统以及实际数据操作系统中所表现出来的异构, 在数据形态上表现出来较大的显性, 对于数据系统的异构分析具有较强的现实意义。最为常见的数据异构就是数据库管理系统的不同。数据库管理系统从文件管理系统中发展而来, 能实现数据的结构和数据管理, 在数据模型基础上, 对物理数据模型进行异构。而操作系统的不同是指, 操作系统在各个数据库系统中, 其最为基本的操作系统可以是Windows、Unix, 但是信息在不同的操作系统中, 也具有着不同方式的表达, 因此数据也存在很多差异性。不同数据来源于不同存储格式, 有的数据来源于XML文件, 有的数据来源于其它格式, 存储异构的问题需要在数据交换技术中被解决。

2.2 模式异构

数据模式异构中, 数据长度不同比较明显。不同长度的数据, 即使其属于同一字段, 但是在不同数据形式之间的交换长度的定义也存在很多不同。例如, 不同长度的编译器中, 不同数据类型所能分配到的数据长度有着明显的差异性。数据模式的异构性还表现在数据精度的不同方面, 字段的属性的精度不同, 数据交换的双方都必须是数字类型。当一个数据的精确度是小数点后面两位, 那么来过一个要进行数据交换的数据精度也需要是精确到小数点后两位。

3 数据转换技术

3.1 XML文件数据模型交换

在异构数据之间进行转换技术, 就是对数据库中的中数据进行数据转换, 其核心就是对异构数据中包含的问题进行分析。数据模型实际上就是对数据固态特征的抽象化, 能充分展示出数据库管理的形式框架来。而数据模型同时也是数据库中数据的约束条件, 通过数据库的结构部分、操作部分对其约束。对XML数据交换模型进行分析, XML文件是模型中的中间数据, XML丰富的表现形式能将数据表示与结构相互分开[5]。

3.2 数据配置

在数据配置模块中, 主分为三大部分, 分别为注册集成、数据匹配以及数据卸载。这三部分对数据配置模块进行大力支持, 能帮助其实现功能。要想完成数据交换中的数据配置, 这三个模块在形式上缺一不可。其中, 数据注册集成, 实现了对应用系统中的需求集成, 将配置信息已统一格式写入XML文档中。数据匹配是指, 在传输的数据中, 为数据匹配提供规则, 实现数据转换。数据卸载是指, 在数据交换成功之后将需求运用的数据退出平台中, 并对数据信息进行卸载。

3.3 数据平台管理

数据的平台管理是指, 对数据日常交换中产生的日志以及数据浏览进行管理与维护。在数据平台管理模块中, 主要包括四部分:日志管理、用户管理、系统数据信息维护以及数据交换监控。其中日志管理是指, 在进行数据交换环节中, 会产生一些由于数据接收、数据发送等的历史数据记录, 用户数据访问记录档案等。而用户管理是指, 对数据交换平台进行直接管理, 例如信息交换的密钥、重点信息存储等。系统的维护是指, 在进行数据交换环节中, 难免会产生一些数据故障, 此时就需要系统维护对故障进行处理, 实现数据搜索的优化[6]。

3.4 数据映射之间的关系

在实际的异构数据交换技术中, 存在着以下的数据之间的映射关系。

Equal相等关系:该种关系比较简单, 所表达的含义是数据源中数据与目标数据相同, 在数据长度、数据类型以及数据精度等方面都能相互吻合。

Const固定值关系:该种关系是指需要被转换的目标数据与规定的数据常亮。

Null空值关系:该种数据关系是指, 在实际准换中, 目标数据为空。

Custom自定义关系:该种关系是指从数据用户的自定义公式中得出目标数据。

Double Config双配置表关系:数据源配置表能衍生出目标数据。

DBMapping数据表映射:该种数据关系是指在数据表的简单计算下, 能计算得出目标数据。

4 结语

随着科技信息技术不断发展, 各行各业中为了实现工作效率, 并将工作流程进行简化, 在企业数据管理中建立众多数据库系统。为了实现各个部门、单位之间的数据信息共享, 需要一种数据转换技术在各个数据库系统中运用, 实现数据资源的交换。对于数据交换平台汇中的异构数据转换技术的研究能实现数据库系统中的数据转换, 在时代发展中发挥着重要的作用。

参考文献

[1]王亚玲, 刘迪, 曹占峰.基于优先级的任务调度模型在数据交换平台中的应用[J].中国电力, 2008 (4) .

[2]芦大鹏, 郭荷清, 郑毅强.数据交换平台中的中介结构研究[J].计算机应用与软件, 2008 (10) .

[3]陈艳, 刘燕, 杨彦臣.XML技术在森林资源数据交换平台中的应用研究[J].河北林果研究, 2007 (3) .

[4]展翔.基于XML技术的异构数据库数据交换技术的研究[D].武汉:武汉理工大学, 2007.

数据异构处理 篇7

网络与数据库技术的发展,促使油田信息化的不断进步与完善。过去由于受到技术的限制,企业内部应用的软件部分为单机版软件,而且数据库以小型数据库居多,数据库表以DBF格式的居多,现在软件大多需要更新换代,新的开发数据库系统都集成到以B/S方式为基础的Oracle这类大型数据系统上,这就涉及到了原有数据库的数据与现有数据库的相互转换。例如,油田公司这两年推广的A系列项目的数据库都使用的是大型数据库Oracle,这就涉及到了如何将小型数据库系统中的数据迁移到大型数据库系统中的问题。如果以前应用小型数据库(例如:VF中的DBF)的旧软件还需要应用,那么还要把大型数据库中的数据再转换成小型数据库的数据格式再导入。

2 利用PowerBuilder的数据管道Data Pipeline

PowerBuilder通过对不同数据库采用不同接口的形式同时支持多种关系数据库,并提供了数据管道技术,这是实现两个数据源之间数据传输的一种常用数据处理技术,它在数据库系统转换、原始数据录入、数据导出、移动存储、分布式数据库复制等方面应用非常广泛。通过数据管道,应用程序能够在不同的数据库之间移动数据,也就是说,可以把一个或多个源表中的数据复制到新表或已存在的目的表中,可以删除目的表及其数据后重建目的表,也可以只把最新数据传送到目的表中。而且,这种数据迁移既可以在同一个数据库的不同数据表之间进行,也能在不同数据库管理系统的不同数据库之间进行。除了迁移常规数据(比如数值型、字符型等)外,数据管道还可以在数据库之间迁移图像、声音之类的大二进制对象(Blob型数据)。用数据管道复制数据时,可以复制表中的所有数据,也可以复制部分数据,甚至还可以复制出加工了的数据。

2.1具体操作方法

在使用数据管道前首先要创建数据管道对象。创建数据管道对象时,需要确定源数据库、目的数据库,要从中复制数据的源表,要存放数据的目的表,要执行的数据管道操作类型,运行数据管道事务提交的频率,容许出现的最多错误数,是否要把表的扩展性一起传送到目的数据库中。

(1)启动画笔栏的“Pipeline”图标,系统显示“Select Data Pipeline”对话框.

(2)修改某数据管道对象时,通过单击从列出的对象中选择要修改的数据管道对象,然后单击“OK”按钮,进入数据管道画笔工作区;要创建新的数据管道对象时,单击“New”按钮,系统显示“New Data Pipeline”对话框.

(3)“New Data Pipeline”对话框分成了两个组:“Data Source”组框用于选择数据源,这些数据源的作用与创建数据窗口时的数据源的作用完全相同,它们生成指定的SQL SE-LECT语句;“Database Connections”组框用于指定提取数据的源表所在数据库的数据库配置和目的表所在数据库的数据库配置,如果所需的数据库配置没有在列表框中列出,那么必须使用数据库配置画笔定义相应的数据库配置.

(4)选择了源数据库、目的数据库以及数据源后,单击“OK”按钮,系统根据所选数据源的不同,出现不同的画面,按定义数据窗口数据源相似的方法定义数据源。

(5)定义了数据管道对象的各种选项后,就可以在数据管道画笔中运行数据管道了。单击数据管道画笔工具栏上的“Execute”图标或从“Design”菜单中选择“Execute”菜单项。

对于耗时较长的运行过程,随时都可以终止数据管道的运行,方法很简单:单击数据管道画笔工具栏“Execute”图标位置上的图标,此时图标的图案是只红色小手。数据管道运行结束后,小手图案又变成“Execute”图标图案。

3 利用VFP6.0的自动升迁

VFP6.0提供Oracle和SQL Server两个升迁向导。这两个升迁向导可以创建Oracle数据库或SQL Server数据库,实现数据库各表中的功能。VFP的数据库在升迁之前必须把所有的表都放在数据库里,自由表不能直接升迁,而实际上升迁上去的又只是表,数据库本身不能转到Oracle里。要把VFP数据升迁到Oracle上,必须先在Oracle里建立相应的数据库。

具体操作方法如下:

(1)先取得要导入的ORACLE的服务名,例如ORA10。

(2)配置ODBC,利用Oracle的服务ORA10创建DSN,命名为TEST。

(3)启动VFP,打开项目数据库,利用DSN创建连接Conn_test。

(4)选择“工具”、“向导”、“升迁”单击。

1)选择ORACLE升迁向导;

2)选择要升迁的本地数据库Library;

3)选择可用的数据源(test)或连接(conn_test);

4)输入用户名和口令;

5)选择要升迁的基表;

6)改变匹配字段的数据类型,即本地字段数据类型与服务器字段数据类型的映射;

7)选择表空间user_data;

8)选择表空间文件(采用默认值);

9)指定簇信息;

10)设置升迁选项;

11)单击完成。

4 格式转化

PL/SQL Developer软件是一个为ORACLE数据库开发存储单元的集成开发环境(IDE),使用PL/SQL Developer可以很方便地管理Oracle数据库。转换数据只是其中的极小部分的功能。具体操作如下:

打开PLSQL Developer软件后,点TABLE,找到要导出的表,右键单击,选择“Edit Date”,这时在“SQL”标签的右下角有一个“Expot Query Results……”的图标,单击后出现菜单“CSV File”,“TSV File”,“HTML File”,“XML File”,选择“CSV File”后存储路径,打开*.csv文件,另存为*.xls。然后用VFP导入。至此Oracle转化为dbf格式完成。

5 结语

数据转换中最重要的工作是建立正确的数据库连接数据,包括合适的驱动程序和正确的身份认证。如果源数据库类型与目标数据库类型相差较大转换时,一般可以采用过渡的方法,先将源数据库转成一种通用格式(如文本格式、表格格式或SQL数据等),然后再利用通用格式转换成目标格式。当针对一些简单的数据转换,也可以用VFP、Access等数据库软件自带的导入导出功能来实现转换。

数据转换是一项极为重要的数据库操作技术,它关系到应用系统的可移植和二次开发能力。数据转换可以很好地解决信息技术的发展和数据库的升级带来的问题,能够最大限度的利用现有资源,避免重复开发的浪费。数据转换灵活应用将会给油田应用软件开发带来极大的便利。

摘要:由于油田软件的更新换代,需要应用大型数据库管理系统以满足油田日益增长的业务需求,这就涉及到如何将现有小型数据库系统中的数据转移到一个大型数据库系统中的问题。本文对工作中经常使用的几种有效的数据转换方法进行了介绍。

关键词:数据库,数据,转换

参考文献

[1]Microsoft Corporation.Visual FoxPro6.0中文版程序员指南.北京希望电子出版社,2000.

[2]冯晓利,叶晓虎.学用Visual FoxPro6.0中文版.清华大学出版社,1999.

异构数据库同步问题研究 篇8

关键词:数据同步,一致性,变化捕获

本章在分析数据同步技术现状的基础上,针对异构数据库环境,提出了一种“基于SQL还原法”的适合于企业级数据同步的技术。该方法运用触发器或日志分析工具对源数据库变化进行捕获,还原出源数据库发生变更的SQL语句并记录日志,然后通过从日志文件中获取被还原的SQL语句,执行更新目标数据库,从而达到数据同步。该方法具有完全异构、灵活性好、通用性强、安全性高的特点。

一、数据同步方法分类

对象变化捕获是数据同步的基础,它直接决定了数据同步的更新方式和选时方式,所以数据同步常常按照其变化捕获的不同进行分类,一般可以归纳为以下六种基本方法。

1、基于快照法:

快照(Snapshot)是数据库中存储对象在某一时刻的即时映像。通过为同步对象定义一个快照或采用类似方法,可以将它的当前映像作为更新副本的内容。

2、基于触发器法:

在源数据库为同步对象创建相应的触发器,当对同步对象进行修改、插入或删除等DML(Data Manipulation Language)命令时,触发器被唤醒,将变化传播到目标数据库。

3、基于日志法:

数据库日志作为维护数据完整性和数据库恢复的重要工具,其中已经包含了全部成功提交的操作记录信息。基于日志法就是通过分析数据库日志的信息来捕获同步对象的变化序列。

4、基于API法:

一些小型数据库和非关系型的数据库没有触发器和日志机制,可以在应用程序和数据库之间引入一类中间件,由它提供一系列API[包括ODBC驱动程序),在API上来完成应用程序对数据库修改的同时,记录下同步对象的变化序列。

5、基于影子表法:

许多情况下,源数据库无须了解同步对象的每一次操作,只要知道最后总共发生了什么变化就足够了。因此,可以在初始化时为同步对象表T建立一个影子(shadow)表S,也就是作一份当时的拷贝,以后就可在适当时机通过比较当前T和S的内容来获取净变化信息。

6、基干控制表变化法:

基于控制表变化(Control Table Change)法就是为每个要同步的源表T创建一个控制表C,C只包含T的主键字段Pk和一些控制信息字段,当T中某个记录发生变化时,C中同主键Pk的记录也随即被修改。这一过程通常可以通过触发器实现,到时候只需根据C就能知道T的变化信息。

上述的6种同步方法各有利弊。为解决完全异构的数据库同步的问题,本文将保留优点、摒弃缺点,提出一种更加适用于企业级数据同步的方法,这里称它为“基于SQL还原法”。“基于SQL还原法”同步技术的核心思想就是为源数据库创建用户日志文件,当源表发生变化时,就立刻在日志文件中记录变化并还原SQL操作语句,然后通过从日志文件中获取被还原的SQL语句,将源表中的变更数据更新到目标表。

二、数据同步过程

“基于SQL还原法”的数据同步过程如下图所示。

整个同步流程可分为三个功能相对独立的处理步骤:变化捕获(Change Capture)、数据分发(Data Distribute)和数据更新(Data Update),它们是组成数据同步的三个主要环节。

三、变化捕获技术

变化捕获是捕获源表的变化序列的过程。由于绝大多数数据库的日志格式不公开,直接读取逻辑日志有困难,所以要对源数据库的变化进行跟踪、捕获。仔细分析第一大节所述的6种同步方法,不难看出每种方法(除了影子表法)归根结底还是依赖于触发器或日志,触发器法和日志法是最基本的变化捕获的方法,目前流行的商用数据库都提供触发器机制或日志分析工具,因此本方法将采用触发器法或日志分析法来捕获源数据库的变化。

1、触发器法:

在源数据库为需要同步的每一个源表分别创建插入(INSERT)、删除(DELETE)和修改(UPDATE)三个触发器,当源表发生插入、删除或修改操作时触发器被启动,利用触发器中记录影响行变化的临时表来获取源表的变化信息,将发生的操作还原为SQL语句,并记录日志文件,日志文件应至少包含操作时间、被还原的SQL语句等必要信息。

2、日志分析法:

另有一部分数据库的触发器机制没有上述功能表,则可以通过读取数据库的日志来获取同步对象的变化,因为数据库日志已经包含了全部成功提交的操作记录。由于大部分数据库的日志格式不公开,需用专用的日志分析工具或接口来解析数据库的逻辑日志将发生的操作还原为SQL语句,并记录日志文件,日志文件同样应包含操作时间、SQL语句等必要信息。

四、SQL语句还原技术

在获得同步对象的变化信息后,就可以根据源表与目标表的映射关系,还原出目标表的SQL语句。“基于SQL还原法”将统一按照SQL92标准进行SQL语句还原,而不针对某一具体的数据库DML,因为目前几乎所有的流行数据库都支持SQL92标准,这样支持面就更广泛了。

还原SQL语句不外乎三种情况:如果源表是插入操作,则被还原成目标表的INSERT语句;如果源表是删除操作,则被还原成目标表的DELETE语句;如果源表是修改操作,有两种情况,若是采用触发器法,则被还原成目标表的DELETE和INSERT两个语句,即UPDATE语句被拆分为先删除后插入两个子操作,因为从触发器的两个临时表可以直接还原出DELETE和INSERT两个语句;若是采用日志分析法,则被直接还原成目标表的UPDATE语句,因为日志分析的结果就是UPDATE语句,没有必要再拆分成两个语句。

1、数据类型格式的统一:

由于不同数据库的数据类型和引用格式与SQL92标准有所差异,所以在SQL语句还原过程中要进行类型格式的转换。“基于SQL还原法”采用接口的方式来统一转换,接口内预置有一张Oracle,SQLServer,DB2,Sybase等流行数据库的数据类型与SQL92标准的数据类型的映射表。

2、含有多媒体类型的SQL语句:

倘若同步对象中含有多媒体类型的字段,因为SQL92标准里没有对多媒体类型进行定义,所以只能根据数据库本身的DML语法来还原处理多媒体类型字段的SQL语句。例如Oracle,DB2都用BLOB来保存图像、声音等大数据对象,但是它们的用法却不尽相同。

综上所述,因此在还原过程中要根据各自的DML语法进行对应转换。

五、数据分发技术

分发有时也称传播(Propagate),负责节点之间的数据发送和接收。一般情况下,它把更新数据从源节点传输到目标节点。

1、连接方式

连接方式一般认为有基于消息(Message-based)式和基于会话(Session-based)式两种。

基于消息式连接又称消息队列(MessageQueuing)式或保存并转发(Store-and-Forward)连接。源节点事先把要分发的数据保存在本地日志中,到时再按照发送和接收消息包的方式来传递数据,传递消息包通过源节点和目标节点的出/入(Outbound/Inbound)消息队列来完成。典型的有通过Ftp,Email或使用诸如MQ这样的消息中间件来实现。

基于会话式连接也称点对点(Peer-to-Peer)连接。该方式不需要事先准备分发数据,允许在分发时才捕获变化。节点之间的数据传播以会话方式进行,每个节点可以同时发送和接收数据。基于会话式连接在效率、可标量性等方面优于基于消息式连接,但在可靠性方面却不如基于消息式连接。

2、分发模型:

分发由不同的节点承担会产生不同的分发模型,从而影响同步的组织形式和效率。一般可分成推式(Push)、拉式(Pull)、推拉结合等三类模型。

(1)推式模型:如果由源节点承担分发任务,传播内容表现为由源节点主动地发送给目标节点,称为“推式(Push)”模型。推式模型的优势在于效率较高;但可调度性差,它的传播信息都是事先定好的。

(2)拉式模型:如果由目标节点承担分发任务,传播内容表现为由目标节点向源节点申请而来,称为“拉式(Pull)”模型。拉式模型的优势在于容易调度,源节点可以减少传播信息,随着参与节点数量的增多而表现得更为明显;但是它的效率较差,且不能实现实时的信息传播。

(3)推拉结合模型:如果分发任务由第三节点承担,称为“推拉结合”模型。当节点增多而又有大量同步任务,特别是需要把同步工作独立出来时,推拉结合模式最为合适。而当节点数目比较少或同步任务比较轻松时,它的性能和成本都不合算。

考虑到同步的实时性要求,“基于SQL还原法”采用推式模型来实现分发。

六、数据更新技术

数据更新是指根据同步对象的变化信息来修改目标数据库,从而保证数据的一致性。在通常情况下,它紧接着分发环节执行,有时甚至被捆绑在一起。

1、更新操作

更新数据内容可以是同步对象的完全拷贝、变化序列或净变化。目标数据库在按不同操作处理它们时,对主键的要求也不一样。

(1) CREATE操作:用更新数据创建一个新表,一般用于初始化。源表和目标表是否有主键以及主键域是否等价都非必要条件。

(2) INSERT操作:将更新数据作为新记录插入已存在的表。有两种情况,已定义主键时,目标表的主键字段数一定多于或等于源表;而没有定义主键时,目标表包含重复记录的现象就不可避免。

(3) DELETE操作:删除已存在表的相关记录。源表和目标表都必须有主键而且主键域必须等价。

(4) UPDATE操作:修改已存在表的相关记录。只有在更新数据是完全拷贝的情况下,才可以不定义主键;否则源表和目标表都必须有主键而且主键域必须等价。

2、例外处理

数据更新并不肯定成功,失败的原因包括传输中断、超时、硬件故障以及违反原有的约束条件等,其中有部分可以通过DBMS的恢复机制得以解决,这里把不能恢复的更新失败称为“例外(Exception)”。例外的产生会延长数据不一致性的潜在期(Latency),严重时会造成数据库挂起,甚至引起系统崩溃。

如何处理例外主要取决于例外对数据一致性的破坏程度以及用户承受程度的影响,一般可供选择的处理方式有:

(1)Redo方式:要求重新分发更新数据;

(2) Ignore方式:忽略本次例外,留待下次同步时再解决;

(3) Execute方式:执行预先定义的一组指令,这是一种最为灵活的处理方式。

经过以上表明,运用“基于SQL还原法”实现的系统在理论上能够满足实际需求,体现了它的功能特性,达到了预期的目标。

相比于其它各种同步方法,“基于SQL还原法”具有以下技术特色:

1、完全异构:“基于SQL还原法”同步技术是完全异构的。同步能够在所有数据库至少是与关系数据库(RDB)兼容的数据库之间进行,而且能够做到不同表结构之间的同步更新。

2、DBMS无关性:“基于SQL还原法”同步技术可以做到DBMS无关。目前的许多同步方案,特别是数据库厂商提供的数据复制方案,都依赖于与厂商自己的DBMS核心关系紧密的实现技术,而“基于SQL还原法”采用ODBC或JDBC接口连接各种数据库,各大数据库厂商都制作了符合ODBC或JDBC标准的驱动,这样利用这些接口,就不用考虑太多底层的DBMS特性,可以透明地操作各种DBMS。

3、通用性:“基于SQL还原法”同步技术的变化捕获结果是按SQL92标准的SQL语句形式出现的,可以给任何支持SQL92标准的数据库作同步。如果不用标准的SQL语句,就必须写对应的数据库DML操作,这样一来就必须知道是哪种数据库,因为不同数据库的DML语句不尽相同。“基于SQL还原法”做的事情就是从源数据库获取变更操作的SQL语句,在目标数据库执行该SQL语句实施更新。

七、小结

数据同步作为分布式环境中的一项关键技术,文章在分析数据同步技术现状的基础上,针对异构数据库应用环境,研讨了一种“基于SQL还原法”的适合于企业级数据同步的技术。文章从数据同步的变化捕获、数据分发和数据更新等三个环节阐述了“基于SQL还原法”的基本工作原理,并着重讨论了实现该方法的变化捕获与SQL还原技术及其异构处理问题。

参考文献

[1]张正明,伶俐鹃,异构数据库系统集成的研究[J].计算机科学,2004,31(10增刊):372-374.

[2]张震,异构数据库同步系统的研究与实现[J].计算机应用,2002年10月,43-45.

[3]李扬,耿昌宇,张丽芬.基于Socket通讯模式下的跨平台数据同步[J].北京理工大学学报,2002,22(1):81-84.

[4]仲跻来,袁海等.数字同步技术网维护技术[M].北京:人民邮电出版社.2001:1-6.

[5]王存思,黄庆荣,傅清祥,异构数据库间的数据复制技术及其应用[J].福州大学学报(自然科学版),2001,29(3):21-23.

[6]张晓,张羽.远程数据库迁移技术研究[J].计算机应用研究,2005第4期.

上一篇:奇异的世界下一篇:音乐艺术人才培养