(计算机科学与技术专业论文)大型金融系统中oracle数据库移植工程的研究和实现.pdf_第1页
(计算机科学与技术专业论文)大型金融系统中oracle数据库移植工程的研究和实现.pdf_第2页
(计算机科学与技术专业论文)大型金融系统中oracle数据库移植工程的研究和实现.pdf_第3页
(计算机科学与技术专业论文)大型金融系统中oracle数据库移植工程的研究和实现.pdf_第4页
(计算机科学与技术专业论文)大型金融系统中oracle数据库移植工程的研究和实现.pdf_第5页
已阅读5页,还剩74页未读 继续免费阅读

(计算机科学与技术专业论文)大型金融系统中oracle数据库移植工程的研究和实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江大学硕士学位论文摘要 摘要 数据库移植,就是不改变原有系统的后台数据库管理系统,并仍然保持原有 系统架构、系统数据,前后端应用程序不变的一种系统升级方法。这种系统的变 更通常是出去商业或者系统整体性能的考虑。整个移植过程一般非常庞大,其中 主要包括存储空间的移植、数据库对象的移植、数据库数据的移植、代码的移植、 系统测试等很多方面的技术问题。 数据库移植的根本目的在于系统升级,解决当前系统功能上和性能上存在的 问题。所以,在我们的移植工程中首先要保证逻辑的正确,做到移植前后的等价 性,然后要对移植后的系统进行性能调优。这两部分都是移植工程中的重要组成 部分。然后,由于我们不会改变原有系统的逻辑架构,因此我们的测试工作就集 中于原有系统和移植后系统的对比测试上。对比测试也可以相应分为正确性测试 和性能测试两部分:j 下确性测试就是严格要求移植后的系统在逻辑功能上和原有 系统保持一致,相同的输入只能带来相同的输出;性能测试就是在相同的系统精 简和软件运行环境中,对比移植系统和原有系统的性能,以期望得到改进。另外, 本文还介绍了不同o r a c l e 服务器之间的同步问题以及我们的解决方法。 本文基于p n a 金融系统,详细阐述了在s y b a s e 到o r a c l e 的数据库移植过程 中上述几个问题的解决方案和技巧,并对我们可能遇到的其它问题作了分析。其 中,我们着重讨论了特殊代码的转换,移植系统的性能调试等方面,从而涵盖了 数据库系统移植工程的各个方面,又不失其一般性,能其它的数据库移植工程也 有很好的参考价值。 最后,本文介绍了数据库系统移植工程的发展方向,即在对源代码系统功能 理解的基础之上,结合移植工程,实现数据库系统的重构。 关键词数据库移植,对比测试,性能,s y b a s e ,o r a c l e 浙江大学硕士学位论文 a b s t r a c t a b s t r a c t d a t a b a s em i g r a t i o ni sas y s t e mu p g r a d ep r o j e c t ,w h i c hi st oc h a n g et h ed a t a b a s e m a n a g e m e n ts y s t e mw h i l es t i l lm a n t a i n i n gt h ee x i s t i n gs y s t e ma r c h i t e c t u r e ,d a t a , b u s i n e s sl o g i ca n da p p l i c a t i o ni n t e r f a c e s u c has y s t e mu p g r a d ei su s u a l l yo u to f b u s i n e s so rs y s t e mp e r f o r m a n c ec o n s i d e r a t i o n s t h ee n t i r em i g r a t i o np r o c e s si so f t e n v e r yl a r g e ,w h i c hi n c l u d e sd a t a b a s eo b j e c t sm i g r a t i o n ,d a t am i g r a t i o n ,c o d em i g r a t i o n , s y s t e mc o m p a r et e s t i n g ,a n dm a n y o t h e rt e c h n i c a la s p e c t s t h ep u r p o s eo ft h ed a t a b a s em i g r a t i o ni st ou p g r a d es y s t e m s ,a n dt or e s o l v et h e e x i s t i n gp r o b l e m so ft h ec u r r e n ts y s t e mf u n c t i o n sa n dp e r f o r m a n c e t h e r e f o r e ,o u rf i r s t g o a li st oe n s u r et h a tt h el o g i ci sc o r r e c t ,a n dt h e nw ea r eg o i n gt oe n h a n c et h e p e r f o r m a n c eo ft h es y s t e m t h e s et w op a r t sa r eb o t ha ni m p o r t a n tp a r to f t h em i g r a t i o n p r o j e c t a l s o ,b e c a u s ew ew i l ln o tc h a n g et h el o g i co ft h eo r i g i n a ls y s t e ma r c h i t e c t u r e , w ef o c u so nt h ec o m p a r et e s tb e t w e e nt h eo r i g i n a ls y s t e ma n dt h es y s t e ma f t e r m i g r a t r i o n c o m p a r a t i v e t e s tc a na l s ob ed i v i d e di n t oc o r r e c t n e s st e s t i n ga n d p e r f o r m a n c et e s t i n g :c o r r e c t n e s st e s t i n gi st oe n s u r et h el o g i cf u n c t i o no ft h es y s t e m a f t e rm i g r a t i o ni st o t a l l yt h es a m ew i t ht h eo r i g i n a ls y s t e m ,t h es a m ei n p u tc a no n l y g e n e r a t et h es a m eo u t p u t i ti sa l s oc a l l e dv a l i d a t i o n ;p e r f o r m a n c et e s t i n gi st oi m p r o v e t h ep e r f o r m a n c eo ft h eo r i g i n a ls y s t e mu n d e rt h es a m ec o n d i t i o n s i na d d i t i o n ,t h i s p a p e ri n t r o d u c e dt h es y n c h r o n i z a t i o nb e t w e e n d i f f e r e n to r a c l es e r v e r t h i sp a p e rb a s e do np n af i n a n c i a ls y s t e m ,a n de x p l a i n e dt h ea b o v e - m e n t i o n e d p r o b l e m sa n dm i g h t b ei s s u e si nm i g r a t i o np r o g r e s si nd e t a i l w ef o c u s e do ns p e c i a l c o d ec o n v e r s i o na n dt h ep e r f o r m a n c ei m p r o v e m e n t ,a n da l s oc o v e r e da l la s p e c t so f d a t a b a s em i g r a t i o n t h i sp a p e rc a nb eag o o dr e f e r e n c ev a l u et oo t h e rp r o j e c t sl i k et h i s f i n a l l y , t h i sp a p e ri n t r o d u c e dw h a tw ew i l ld oi nt h ef u t u r ei nd a t a b a s es y s t e m m i g r a t i o np r o j e c t t h a ti s ,r e f a c t o r i n gt h ed a t a b a s es y s t e mb a s e do nt h eu n d e r s t a n d i n g i nt h ec u r r e n t l o g i c 。 k e y w o r d s :d a t a b a s em i g r a t i o n ,c o m p a r et e s t ,p e r f o r m a n c e ,s y b a s e ,o r a c l e 浙江大学硕:上学位论文 图目录 图目录 图1 1p n a 系统结构框架2 图3 1o r a c l ed i r e c tp a t hl o a d 示意图3 7 图3 2c l i p p e r 系统中o r a c l em i g r a t i o n 流程图3 9 图5 1d b d i f f 程序结构示意图6 4 i i i 浙江大学硕士学位论文表目录 表目录 表2 1 s y b a s e 和o r a c l e 的数据类型对应关系1 3 表2 2s y b a s e 中各种时间类型1 7 表2 3s y b a s e 和o r a c l e 各种系统函数对比2 7 表2 4s y b a s e 和o r a c l e 时间函数应用2 9 表3 1o r a c l e 优化器的模式4 7 表3 2 数据库优化参数的设置5 0 i v 浙江大学硕上学位论文 浙江大学研究生学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发 表或撰写过的研究成果,也不包含为获得迸姿态堂或其他教育机构的学位或 证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意。 学位论文作者签名:球璐 签字日期伽孑年6 月7 日 学位论文版权使用授权书 本学位论文作者完全了解迸鎏盘堂有权保留并向国家有关部门或机构 送交本论文的复印件和磁盘,允许论文被查阅和借阅。本人授权逝鎏盘堂可 以将学位论文的全部或部分内容编入有关数据库进行检索和传播,可以采用影 印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:搽 导师签名: 签字同期:芦曙年占月7 同 ,习放 替嗍:研年 乒1 日 浙江大学硕士学位论文第l 章绪论 1 1 项目背景 1 1 1 概述 第1 章绪论 本论文讨论的重点是以围绕一个金融软件系统一p n a 而进行的。p n a 系统 是一个运行多年的大型金融服务软件系统,该软件系统对数量庞大的基金证券交 易数据进行全面的分析,还对金融系统管理下资金历史、当前运行状态等进行计 算和评估,来帮助未来决策,向投资者提供资产回报率等投资性能数据。每天, 它都要对至少几百支基金中的上万次交易数据进行及时的的导入,分析,并输出 报表。在实际运行环境中,它在数据库中的数据存放通常都在2 0 0 g 以上,这些 数据不均匀地分布在1 8 个数据库,5 9 0 多张表上。并主要集中于其中的两个数据 库大约1 5 2 0 张表上。本文的写作重心就在p n a 系统的数据库上,将讨论一下关 于这个核心数据库的移植问题。 1 1 2 金融系统简介 本文所介绍的p n a 会融系统管理着大批的资金,主要以基金和其它的一些形 式进行投资组合和其它的一些金融活动。为了更好的对资金进行管理,系统对资 金的运行状态进行了跟踪,并实施分析比较和评价,然后根据分析的结果来进行 未来的决策。在p n a 系统中,所有的数据都是以每一份基金为单位展开的,每个 基金都有自己的属性,并以基金的名称作为唯一标识符号。基金的属性有创建者, 开始日期,货币类型等,并且在各个交易发生的时候都保存有一份记录。一份基 金在某一时刻的一组数据对应着一个投资组合,用来表示基金当前的投资组成比 例或者其他用途。所有的数据都存储在p n a 的核心数据库上。 浙江大学硕士学位论文 第1 章绪论 概括地说,该金融系统完成这样的工作,它接受运行状态信息数据、商业系 统的属性数据和特征数据,根据一定的核算数据和规则,对输入数据进行计算, 经过分析得到一些特定的能显示整个商业系统运行状态属性和发展趋势的结果。 然后,用这些结果产生出报表和其它的一些形式的显示传递给用户。 系统主要是对历史上和当前的交易信息数据进行处理,处理类型在最初阶段 是按月的,即处理数据的时间单位是月,交易信息和初始数据都是m o n t h l y 的。 在后来的开发过程中,对以天为单位的数据也增加了处理能力,即交易信息和初 始数据都是d a i l y 的,用户可以选择对具体数据是按月还是按天进行计算。这两 种计算在实际处理过程中还是存在着一定的差异的,但是不在本文的讨论范围之 内。所有的m o n t h l y 和d a i l y 的数据都以一定的格式存放在p n a 的核心数据库中, 以便用户和开发人员按需进行访问。 图1 1p n a 系统结构框架 浙江大学硕士学位论文第1 章绪论 上面的图1 1 简单描述了整个p n a 系统的架构,包括系统的各个模块和模块 之间的关系和行为。整个系统大致上主要由信息解析模块、计算处理模块、结果 显示模块等几个部分组成。 在图1 1 中,图中左上角虚线圆圈中是输入信息解析的部分。信息收集模块 把输入以文件的方式传递给信息解析模块,而后者对输入文件进行解析并把得到 的结果存入数据库系统1 。 数据库系统1 是整个软件系统的核心。它接受由信息解析模块解析的输入信 息,为后继的处理提供数据来源;同时,它也储存了一些系统级别的控制信息。 例如,由d a e m o n 程序启动的调度程序是是用来调度系统内的各种任务的,而调 度模块的功能则要靠修改数据库系统1 中的调度表来实现。有此可见,本数据库 是p n a 系统的核心数据库,我们本文的工作重点也围绕它来展开。这个核心数据 库现在是由s y b a s e 数据库来搭建的。我们的工作就是要将s y b a s e 数据库产品移 植到o r a c l e 产品上。 接着,l a u n c h e r 从调度表中读取任务的状态信息,从而决定启动的任务。过 程管理模块是由l a u n c h e r 启动并用来执行一定任务的程序。对于不同的数据库记 录,p n a 系统会运用不同的过程管理器来处理,并启动相应的计算模块进行计算。 处理的结果通过w h a r e h o u s e 客户端传递给w h a r e h o u s e 服务器。 w h a r e h o u s e 的客户端与计算引擎相连接,接收由计算过程处理得到的结果。 w h a r e h o u s e 服务器和客户端的功能是把结果写入数据库并以w a r e h o u s e 文件的形 式进行存储,在整个系统中与前面输入文件解析和数据处理模块在功能上相对独 立。 结果显示模块顾名思义就是报表的显示以及维护系统,它的对象主要是公司 内部的分析人员,同时也包括一部分公司的客户。 综上所述,p n a 金融软件系统是一个处理大规模数据的综合性复杂系统,它 功能上模块的明确划分也为我们这次的数据库移植工作带来了便利。 浙江大学硕士学位论文 第1 章绪论 1 1 3 项目研究的发起 在数字竞争日益激烈,数字全球化日益加剧的今天,一套完善化的商业系统 也要随着人们的需求变化不断升级发展和适应环境。这就要涉及到我们要谈到的 系统移植问题。同时,作为一个有着不短的历史的系统架构,随着现在数据的爆 发式增加,它的性能问题也随之凸显出来。从这一点上来说,我们要在尽量不改 动系统结构的基础上,尽可能地提高系统的性能,以满足我们同常的需要,进行 数据库的升级和移植是一条很不错的途径。 如图1 1 所示,p n a 系统由一个中心的数据库( s y b a s e ) 和众多的功能模块 所构成。各个模块按功能不同划分,分别作为u n i x 中单独的进程,并行地运行 在系统中,并将中心数据库作为操作的数据来源和主要的数据输出地。 很显然,p n a 系统是一个以数据库为中心的系统,我们本次的工作也是以数 据库为中心,围绕着移植工作展开。由于数据量本身的庞大和操作上时间的集中, 使得原有系统存在一定的性能问题,而这个性能问题的瓶颈就是数据库。同时, 由于s y b a s e 系统本身的限制,用户对数据库管理系统的配置优化也有限。为了改 善原有系统的性能,继而实现对原有系统的扩充和重构,决定把数据库从s y b a s e 移植到o r a c l e 。 p n a 系统在实际的运行环境中是由多个同构系统组成的,它们分别运行在全 球多个城市中。我们所谓的同构,就是说系统的架构和程序逻辑是基本相同的, 不同的是数据库中的部分内容。因为p n a 是一个基于基金交易的系统,所以不同 地方、不同时间的数据当然会不一样。但是,其中某些数据,比如汇率、基金基 本信息等应该是想通的。这样的话,我们的系统又要具备很好的同步机制,来保 证系统中程序和数据在各个子系统中的同步。而这项功能在原来的s y b a s e 系统中 并没有能很好地实现。因此,如何在保证数据正确性进行移植的同时很好地实现 数据库间通信也是本次移植工作的重要组成部分。 4 浙江大学硕上学位论文第l 章绪论 1 2 研究内容和目标 如1 1 介绍的项目背景所示,本文的研究内容主要是关于数据库移植的一些 基本概念,基本方法,具体实现,以及特点和难点等等几个方面。 具体来说,课题研究的主要内容是要分析研究s y b a s e 和o r a c l e 体系架构及 使用方面的不同,并根据我们这个庞大的金融系统的实际情况制定计划并完成符 合我们要求的数据库移植计划,最后实现这个数据库移植并测试它的正确性,以 达到最终的目的。这中间要考虑的东西很多,从架构原理到实现,再到用户级别 的使用,我们需要一套完整的移植框架。 通俗一点来讲,我们的最终目的是让用户感觉不到使用习惯上的差别而完成 数据源的移植工作并提供足够的正确性以保持和原有数据库系统相一致。当然, o r a c l e 的性能提升问题和同步问题也是我们考虑并要解决的重要内容。 p n a 系统是一个运行了十多年的老系统,o r a c l e 数据库移植工程解决了一些 旧系统的弊端并最终达到提升使用效率的目的,给它带来了更好的性能和更强的 扩展性,这对此金融系统未来的发展也有着重要的意义。 1 3 数据库移植计划 数据库移植工程在全球已经有很广泛的应用,同时也出现了不少现成的不同 产品间的数据库产品移植工具。比如这次我们会用到的大名鼎鼎的o m w b ( o r a c l em i g r a t i o nw o r k b e n c h ) 1 9 l 就是一个比较出色的数据库移植工具。该项工 具由o r a c l e 开发,提供了从各种数据库向o r a c l e 移植的很多功能,为我们的移植 工作提供了比较好的支持,在某种程度上节省了许多简单的重复性劳动,提升了 我们的工作效率。然而,由于各种数据库产品之间的实现还是有很多根本架构上 的不同,采用的s q l 标准也不尽相同,这个导致了在很多问题上,并不是简单的 语法变化就可以实现保证正确性的数据库转换。完全依赖数据库产品可能存在一 些正确性的隐患,因此,很多地方还似乎要根据具体分析来进行人工参与的。 这样的话,我们决定在数据库移植开发的前期借助数据库产品中的自动移植 浙江大学硕士学位论文第1 章绪论 工具省去我们很多的重复工作,但在某些关键性问题上仍然需要我们人为的工 作,或者对工具进行相应具体的配置。因为具体来说,s y b a s e 和o r a c l e 在物理数 据存储策略、事务机制、临时表机制等等方面都有着很多不同,我们需要根据不 同情况区别对待,正确处理好每一个移植问题,例如不同数据库之间的类型匹配。 概括的说,数据库移植工程涉及的难点主要在两方面。其中之一是s q l 语言集。 各种数据库产品选择使用的s q l 语言集都不一定想通。即使很多数据库( 比如本 文重点s y b a s e 和o r a c l e ) 都是符合s q l 9 2 的规范标准,但他们也大都根据自己 的数据库特性对s q l 语言集进行了相应的扩展。我们在移植过程中就要分析这些 数据库产品之间s q l 语言集的对应关系以作出相应的应对策略。另外一个难点是 数据库逻辑段的转换。具体来讲,很多系统都把复杂的商业逻辑存储在数据库产 品的逻辑段中,例如存储过程和触发器,以提高系统的运行效率,完成复杂的商 业过程。但是各个数据库系统对这些逻辑段的处理方式不尽相同,于应用程序的 连接也不是完全兼容。这就需要我们开发人员对这些数据库中的逻辑代码更加重 视,以更好地开发、测试、维护这些逻辑,达到我们数据库移植的目的。 一个完整的数据库系统一般分成数据库服务器端部分和应用程序部分,两者 互相结合。而数据库又包括数据库对象和数据库数据。所以我们进行数据库移植 的工作就大致大致可以分成一下几个部分:数据库对象的移植、数据的移植、应 用程序的移植、测试。 1 4 本文结构组织 根据上述研究内容和研究目标,文章其余部分内容组织如下: 第一章绪论:概括介绍了研究背景以及本文的重点。 第二章关于o r a c l e 数据库移植的研究:具体研究了o r a c l e 数据库移植中我 们遇到的方方面面的技术问题,总结并提出相应的解决办法。详细论述了关于表、 索引、存储过程等在内的数据库对象的移植问题。 第三章在p n a 系统中进行数据库移植:介绍了具体p n a 项目中应用程序代 码层面的移植。以c l i p p e r 为例讨论了相关问题的出现和解决。 6 浙江大学硕士学位论文第l 章绪论 第四章数据库移植中的几个问题:着重讨论并总结了我们在o r a c l e 数据库 移植中碰到的几个特殊的问题。比如数据库性能问题和多节点数据库系统的同步 问题。 第五章数据库系统移植的实现和测试:着重讨论了我们测试正确性的方法、 步骤以及结果。 第六章总结和展望:总结本文的观点以及得出的结论,并指导了下一步我 们的研究方向 1 5 本章小结 在本章中,我们概括介绍了本文所涉及的项目背景、研究目标以及相关技术, 并大致制定了数据库移植的计划,总结了我们可能遇到的数据库问题。最后,本 章介绍了本文的大致安排和相关内容。 7 浙江大学硕:t 二学位论文第2 章关于o r a c l e 数据库移植的研究 2 1 综述 第2 章关于o r a c l e 数据库移植的研究 o r a c l e 是以高级结构化查询语言( s q l ) 为基础的企业级大型关系数据库,通 俗地讲它是用方便逻辑管理的语言操纵大量有规律数据的集合,也是目前最流行 的客户服务器( c l i e n t s e r v e r ) 体系结构的数据库之一。而s y b a s e 也同样是拥 有很多优越特性的基于客户服务器体系结构的数据库。相较而言,进行o r a c l e m i g r a t i o n 移植工作有公司项目的商业目的,因此在这里我们并不会对s y b a s e 和 o r a c l e 的各方面作一个全面的比较,而是比较详细的介绍一下o r a c l e 的相关特性, 并对我们在o r a c l em i g r a t i o n 中需要注意的一些问题做一个总结,以供以后进一步 的开发工作所参考【5 l 。同样的,为了做到专题性,在本文中我们不就一些数据库 的共性或者基本概念做详细讲解,需要的读者可以参考相关文献。 一般来说,我们把数据库中用来储存和表示数据的实体成为对象( o b j e c t ) , 它通常包括数据的逻辑存储空间,表( t a b l e ) ,索引( i n d e x ) ,视图( v i e w ) ,约 束( c o n s t r a i n t ) ,触发器( t r i g g e r ) 和存储过程( s t o r ep r o c e d u r e ) 等等相关组成 部分。在本次移植工作中,我们要做的工作是把原先在s y b a s e 上的所有相关数据、 程序、服务等等全部移植到全新的o r a c l e 环境,因此基于两者数据库架构和原理 的一些不同,这些数据库对象也有很大的不同。所以对于我们移植者来说,我们 就要深刻的理解这些不同并对不同的情况作出相应合适的移植计划,这样才能达 到我们的移植目的一让用户感觉不到使用习惯上的差别而完成数据源的移植工 作并提供足够的正确性以保持和原有数据库系统相一致。当然,利用o r a c l e 的一 些新特性来达到性能上的提升是我们所推崇的,这点将在以后一章罩提及,下面 就开始本章的重点:基于数据库本身的移植工作。 8 浙江大学硕- 七学位论文第2 章关于o r a c l e 数据库移植的研究 2 2 存储空间的移植 进行数据库的移植,顾名思义先要进行数据库后台级别的移植,再进行c o d e 级别的移植。所以在这里先介绍一下存储空间的移植。 s y b a s e 和o r a l c e 数据库在逻辑存储策略上有着比较大的不同。s y b a s e 的存储 策略是将数据库建立在一个或多个逻辑设备( 1 0 9 i cd e v i c e ) 上,并将数据储存在 这些上面。一个数据库的逻辑设备通俗地说就是数据库在介质上的存储空间,这 里的话,一般就是指逻辑磁盘上的一组连续磁盘空间。数据库及事务日志所需要 的磁盘空间都是按逻辑数据库设备来进行分配和管理的。数据库设备是被映射到 一原始分区或一操作系统文件的逻辑设备,一个数据库设备可以存放多个数据库, 一个数据库也可以分跨存放在不同的数据设备中,并在这些设备上有自己的逻辑 段。逻辑设备和逻辑段的概念是为了最大限度的优化数据库的i o ,提高并行性, 从而提高性能。这就s y b a s e 数据库的基本架构【1 0 l 。 s y b a s e 数据库分为系统数据库和用户数据库两类,主要的系统数据库有: m a s t e r :存储服务器配置,用户及用户数据库等信息; m o d e l :创建用户数据库的模板; t e m p d b :用于创建临时表。 o r a c l e 的数据库概念简单地说就是一系列的数据文件的集合。一个o r a c l e 数 据库由一个或多个逻辑存储单元表空间构成,表空间存储着数据库中所有的 数据。o r a c l e 数据库中的每个表空间由一个或多个文件组成,这些文件就是数据 文件,它们是o r a c l e 所在操作系统上的物理结构。 o r a c l e 数据库中的所有系统和用户数据的物理存储都在数据文件中,这些数 据主要有1 3 】: 系统表空间( s y s t e m 表空间) :包含所有系统及用户对象信息; 临时表空间:系统用来暂存数据完成事务数据完成事务的区域; 用户表空间:用于存放用户数据; 重作r 志:用于存放事务同志,实现事务回滚。 9 浙江人学硕上学位论文第2 章关于o r a c l e 数据库移植的研究 在使用的时候。一般s y b a s e 系统在一个实例( i n s t a n c e ) 上开放一个特定的 端口,可以创建多个并列的用户数据库,并在每个实例特定的m a s t e r 数据库中注 册。于是通常情况下,一个s y b a s e 的系统由多个数据库所组成,每个数据库将各 自的数据和日志等储存在多个各自的逻辑设备上,即这些东西对各个数据库来说 是独立的。这样的分布式存储是从提高性能的角度设计的,为的是可以提高数据 访问的并发度。 而另一方面,o r a c l e 则在系统级别丌放公共的对外端口,每一个实例对应了 一个唯一的数据库。数据库中有用户的概念,属于其中某一个特定用户的对象集 合,我们称之为“方案( s c h e m a ) ,这个方案和我们普通意义上说的数据库是有 点类似的。因此,综上所述,s y b a s e 和o r a c l e 的数据库在很多概念和架构上是不 同的,但是对于我们使用者或者用户角度来说,可以简单的将s y b a s e 中数据库的 概念等同于o r a l c e 中s c h e m a 的概念。这也是我们数据库存储空间移植的理论基 础,因为我们平时在访问数据库或别的的数据库对象时,s y b a s e 中的数据库名和 o r a c l e 中的s c h e m a 名称都起到了名字空间的作用,对于使用来说并没有什么不 同。所以,我们贯彻了这个数据库移植的方针,也实现了前面提过的本次移植工 作的要求。这样,我们在转换时只需把两者对应,在这个前提下转换别的部分, 比如s q l ,以便我们更好的对比测试我们转换的结果和维护我们的转换工作。当 然,在使用它们的时候还是有不同的,我们在访问各自数据库中的表的时候要遵 循如下语法: 也就是说,在o r a c l e 中,对同一s c h e m a 下表的访问是通过“”来完成的, 这点在移植过程中需要注意。 我们原来的p n a 数据库建立在s y b a s e 上的,一共有18 个数据库分散在大小 不等的1 0 0 多个逻辑设备。为此我们就在新的o r a l c e 数据库中,创建相对应的1 8 个方案,来完成存储空间移植的工作。比如,原先系统下有一个p ap r o f i l e 数据 库,用于存储有关基会的一些数据,现在我们就在新的系统中创建p ap r o f i l e l o 浙江大学硕士学位论文第2 章关于o r a c l e 数据库移植的研究 方案,并在此方案下创建原来p ap r o f i l e 数据库中所有的表,索引等对象。 前面讲过,每个s c h e m a 上的各种对象存放在不同的t a b l e s p a c e 上,每个 t a b l e s p a c e 又由多个系统文件所组成。因此,我们为了提高系统的并发度,应该 将表中的数据和在表上建的索引等分别放在不同的t a b l e s p a c e 上,同一个 t a b l e s p a c e 的多个文件也应该存放在不同的物理磁盘。例如在方案p ae x t r a c t 下,我们共创建p ae x t r a c t 和p ae x t r a c ti d x 两个t a b l e s p a c e 来分别存 放原数据库的数据和索引;而每个表空间,由多个大小为2 g 的系统文件组成, 我们也将这些文件分别存放在不同的物理磁盘上。这一个原则是我们在以后的移 植工作中一直要用到的。 更进一步的分析,我们对并行度要求比较高的表,还应该采用表分区 ( p a r t i t i o n ) 来实现数据的分块存储。在o r a c l e1 0 9 中,表分区一般分为区间分区, 列表分区,h a s h 分区,混合分区等【引。在p n a 系统中所有的相关的数据都是与基 金数据相关的,关键字是基金的名称( f u n dg r o u pi d ) ,相同的基金在不同的时 间交易数据又有所不同,无规律的分布在不同的月份里;不同的基金的交易方式 和交易量又有很大的差别,导致了各个数据在计算量上差别很巨大。我们需要对 这个加以足够重视以实现比较好的性能。对于表的分区,一般情况下我们应该能 够将数据大致平均地分部在各个分区上。由于p n a 系统中数据是以时间为单位分 部的,因此将主要数据按月份分为1 2 个区是顺理成章的。不过另一方面,p n a 的计算是每天晚上启动的,启动以后会计算当月或者前一个月的数据,因此,在 某一个时间单元里面,数据库对数据的访问也是集中在某个月份的。也就是说这 样的分区方法并没有达到我们提高数据表访问并行度从而提高性能的目的,也无 法很好得解决磁盘竞争冲突等问题。由此我们引入了新的分区方法一h a s h 分区。 对数据表的h a s h 分区可以很好的解决以上所说的并发度和竞争冲突的问题,不 过也存在它的缺陷。所以,经过针对p n a 系统的分析和讨论,我们决定选择区间 和h a s h 组合的分区方式,这样既做到了各个分区数据量的大致均等,又使不同 的f u n d 分区存放,提高了系统访问的并发度。 这样我们大致完成了数据库存储空间移植的设计。在这小节里我们对不同数 浙江大学硕士学位论文第2 章关于o r a c l e 数据库移植的研究 据库实现的架构作了简单分析,并根据各自的原理和特点作出了相应的转换设 计。以后在类似的存储空间移植过程中,我们也应该以这种方法考虑问题,而不 是单一的对照转换,以实现良好的系统性能和可扩展性。 2 3 具体对象的数据库移植 在这一小节我们会考虑具体对象的数据库移植,这些具体对象包括:表、索 引、视图以及数据类型。p n a 系统中所有核心数据库的表合计超过6 0 0 张,视图 1 0 多张,索引也有6 0 0 多个。下面来具体介绍各个数据库对象针对各自的特点如 何实现它在新系统中的移植工作。 表是关系数据库中最重要的对象之一,因为它是存放具体数据的逻辑单元。 不同的数据库产品虽然对表的物理存放有着各自的差别,但对表的结构和逻辑却 基本保持了一致,基本的s q l 语法,包括建表和使用表的语法也基本相同。 视图和索引也是关系数据库中重要的对象,但是和表一样,对于我们的移植 工作来说,它们在不同的数据库中的差别并不是那么显著,只需转换一下基本的 语法就可以了。所以,以上所述各种对象的移植,重点在于各种具体数据类型的 匹配,这才是我们这部分移植工作的重点。明确了我们的目标以后,我们就将工 作的重点放在对数据类型的对比和分析上。常见的数据类型分为数字类型、时间 类型、字符类型和特殊类型四种。在实际使用中,o r a c l e 对数据类型的要求严格 程度远大于s y b a s e ,这个应该是基于尽量减少出错的可能性,而达到企业级应用 的正确性这个角度考虑的;而s y b a s e 相比较而言就灵活很多,对于使用者来说更 加方便但却隐藏着可能存在的错误。正确的选择合适的匹配类型,从而减少移植 后出错的概率,是本次移植工作的基础和核心内容,很大程度上决定了整个移植 工作的最终正确性。 o r a l c e 数据库中,数字类型主要有n u m b e r ;时间类型主要有d a t e 和 t i m e s t a m p ;字符类型主要有c h a r 和v a r c h a r 2 ;特殊类型则包括其余不 是那么常用的类型,有l o n g 、l o n gr a w 、r a w 、b l o b 、c l o b 等。我们在 这里主要考虑前三种类型。 浙江大学硕士学位论文第2 章关于o r a c l e 数据库移植的研究 s y b a s e 数据库中,数据类型也大致可以分为数字类型、时间类型、字符类型 和特殊类型四种。其中数字类型又可以分为精确数值、近似数值、整数、二进制 数、货币等几类。精确数值有d e c i m a l 与n u m e 砒c ;近似数有f l o a t ;整数 有i n t ,s m a l l i n t ,t i n y i n t ;二进制数有b i n a r y ,v a r b i n a r y ;货币有 m o n e y ,s m a l l m o n e y 等。字符类型有c h a r 和v a r c h a r 。日期类型主要 有d a t e t i m e 和s m a l l d a t e t i m e 。除此之外,都可以视作特殊的数据类型。 特殊的数据类型有b i t 、i m a g e 等等f l o l 。 表1 中我们简单地列举了s y b a s e 与o r a c l e 的类型对应,我们在移植过程中 可以正确找到其相对应的类型并做出正确处理。但是在实际匹配中,根据实际问 题的不同,我们往往会遇到很多问题。比如说p n a 系统对精度的要求,对格式的 要求,这些就要求我们具体问题具体分析,以求在尽可能保证正确性的情况下完 成数据库的移植工作。 表2 1s y b a s e 和o r a c l e 的数据类型对应关系 s y b a s e o r a c l e 数字类型 d e c i m a ln u m b e r n u m e r i cn u m b e r f l o a t n u m b e r i n tn u m b e r s m a l l i n tn u m b e r t i n y i n t n u m b e r m o n e y n u m b e r s m a l l m o n e yn u m b e r 字符类型 c h a r c h a r v a r c h a r v a r c h a r 2 浙江大学硕士学位论文第2 章关于o r a c l e 数据库移植的研究 日期时间类型 d a t e t i m ed a t e s m a l l d a t e t i m ed a t e 其他 t e x tc l o b i m a g eb l o b b i tn u m b e r ( 1 ) 2 3 1 数字类型 数字类型数据库中是最常见的一种对象类型,它本身并不复杂,转换起来也 比较方便。可是往往有时由于具体的要求,表中存放数据对精度的要求比普通数 据高很多,这样就出现一定问题了。特别是p n a 这样大型的金融系统,平时每天 都涉及大量的金融数据i o 和相关的计算,需要最大程度地保证数据精度,减少 计算误差,保障客户利益。在p n a 系统中,原来的数据库上用s y b a s e 中的f l o a t 类型来表示浮点数,为了提升精度,在新的o r a c l e 系统中我们用n u m b e r 来表 示各种数字,进行各种金融计算。n u m b e r 类型的数字根据其参数的不同,可以 表示成各种精度的整数或者小数,比如n u m b e r ( 3 2 ,1 0 ) ,等等。然而有一个问 题需要注意,我们发现,简单地将s y b a s e 中的f l o a t 替换成o r a c l e 中的n u m b e r 会产生一个问题。 让我们看一个例子。在我们处理的计算中间过程中,需要从数据库里取出一 个浮点数并在之后的应用中和其他计算结果相比较,要求误差在于分之一以内。 假设我们读取的是1 4 9 8 7 5 ,那么我们在s y b a s e 系统中,用这样的语句来读取并 为以后的比较作准备: 相同的,o r a c l e 中我们也用同样的语句来读取。可是我们却发现,在s y b a s e 中s e l e c t 的结果是1 4 9 8 7 ,而在o r a c l e 中,这个结果变成了1 4 9 8 8 。 1 4 浙江大学硕士学位论文第2 章关于o r a c l e 数据库移植的研究 为了作测试,我们分别在我们的两个s e r v e r 上运行如下的语句,来定位问题 的所在。 缘:o 。s y b a s e :s e l e c t r o u n d ( 1 4 、9 8 7 5 苫镀。i j 锈? | 曩o u t p u t l1 4 9 8 8 4 。参。| 。聋? j j j ? 罄? s ? jj 警。二4 j 锈 4 :i j ?= 。:j 。| 一一1 j 篷 纛奠o r a c k :剿e e tr o u n d ( 1 4 , 9 8 7 5 ;3 ) f r o m d u a l ;,侧瞅豫1 的8 8 1 ,j 。“,- 7 i :+ 7 7 。i 这里我们看到,返回结果是一样的,因此,r o u n d 函数对于两个数据库系统来 说是一致的,不是它的问题。经过分析,我们终于知道这个问题其实是由两种数 据库系统中类型的不匹配导致的。真正的原因在于,s y b a s e 中f l o a t 和o r a c l e 中 的n u m b e r 存储方式是不同的。具体来讲,s y b a s e 中f l o a t 以二进制形式存储,而 在o r a c l e 中,n u m b e r 是以十进制形式来存储的,这就导致了在实际处理过程中, 两者对精度的处理是不同的。也就是说,s y b a s e 用的是二进制的精度,而o r a c l e 用的是十进制的精度。在上面的例子中,这个数以二进制表示是一个循环小数, 并不如十进制来的精确,因此他转换为十进制输出后,只能转化为不精确的小数, 从而输出1 4 9 8 7 。这就是我们在转换过程中发现的问题的根源。这种差异的存在 是很普遍的,但是如果累积起来,随着计算的增多却可能成为很显著的误差,这 在我们的移植过程中是不允许的。 另一方面,我们看到o r a c l e 在这方面处理的比较好,n u m b e r 类型表示的更

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论