Oracle平台应用数据库系统的设计与开发

正在看的ORACLE教程是:Oracle平台应用数据库系统的设计与开发。Oracle是目前应用最广泛的数据库系统。一个完整的数据库系统包括系统硬件、操作系统、网络层、DBMS(数据库管理系统)、应用程序与数据,各部分之间是互相依赖的,对每个部分都必须进行合理的配置、设计和优化才能实现高性能的数据库系统。本文讨论笔者使用Oracle开发局域网中、小型数据库应用中,系统硬件的选择与使用、应用数据库系统设计与开发方面的一些心得和建议。应用数据库系统包含应用数据库和应用两方面的内容,应用数据库就是生产数据库,与系统数据库相对。

  系统硬件的选择与使用

  与数据库系统密切相关的硬件主要有CPU、内存、集群、存储设备等,这里不对集群进行讨论。

  1、CPU

  CPU的数目和速度直接影响数据库操作的速度,Oracle数据库提供并行查询选项,允许SQL操作以协同方式在多个CPU上执行,可以很大程度的发挥多CPU的性能。为系统添加CPU前,首先要对应用程序的SQL代码做优化,提高应用程序的效率,质量低劣的应用可能会引起CPU资源的无谓的消耗;其次,要了解操作系统对CPU数目的限制及系统的可扩展性。在系统CPU资源已定的情况下,要对各类应用进行分析,在保证关键应用正常运行的前提下,尽可能将大量占用CPU资源的应用放在系统相对空闲的时候进行。良好的工作调度可以有效减少对CPU的竞争使用,加快系统的响应时间。

  2、内存

  数据库系统中,应保证有足够大的内存。在UNIX系统中,如果系统的物理内存小于1GB,可将交换区的大小设为内存的4倍,否则,可设为内存的2倍,交换区要放在磁盘速度最快的硬盘上。Oracle 的SGA区大小直接关系到数据库操作的性能,一般来说,SGA区的大小可设为系统可用内存的55%到57%,SGA区过多占用系统内存反而会降低性能。在应用系统运行中,应定期监测系统的内存使用情况,对关键应用进行分析,根据应用适时调整SGA区各部分的大小。Oracle9i可在不重新启动数据库的情况下修改SGA区的参数,实时改变SGA区的大小。

  3、存储设备

  在网络时代,信息资源的积累和广泛应用对数据存储技术的发展提出了更大的挑战,数据存储模式从传统的总线连接模式进入了网络存储模式。但存储设备依然是硬盘、磁带(带库)、磁盘阵列,在中、小型数据库应用中传统存储模式仍占主导地位。

  磁盘I/O是数据库操作的瓶颈之一,磁盘的合理选择和使用在数据库系统中显得尤为重要。在最初做数据库系统规划时,应充分考虑到系统的容量和预期的增长,尽可能为以后的扩展留足空间。在硬盘和磁盘阵列的选择与使用中,应注意以下几点:

  ·选择支持热插拔功能的硬盘,这样在出现硬盘Oracle 平台应用数据库系统的设计与开发失败时,可以在系统正常运行的情况下更换硬盘;

  ·不要选择太大的硬盘,切记对Oracle 应用程序,1~4GB大小的硬盘是比较合适的,最好购买大量的中小型硬盘,这样在配置RAID时可提供更大的灵活性;

  ·如果选用了磁盘阵列,对于Oracle数据库应用,如果经费能够支持,RAID 0+1是最佳的配置方法。在RAID 5中,读操作性能得到了一定的改善,但写性能损失很大,如果某个硬盘失败,硬盘重建的工作量非常大,RAID 5 适用于DSS(决策支持系统)应用,对OLTP(联机事物处理)应用不太合适;

  ·在实现RAID时,要正确地选择分条的大小,决定分条大小的三个主要因素是:应用程序的特性(DSS、OLTP、批处理)、操作系统与数据库的数据块大小、磁盘阵列中的硬盘数目。数据库的数据块大小应是操作系统数据块大小的整数倍,同样分条大小也必须是操作系统数据块大小的整数倍。如果使用裸设备,分条大小应是操作系统物理数据块的大小。分条可按照水平方向进行,也可按照垂直方向进行。水平分条跨越每个硬盘控制器进行,垂直分条跨越整个硬盘集合进行,分条集合中的成员数应不大于硬盘控制器数。OLTP应用程序,数据访问的数据量不大,一般可选择32KB 或64KB 的分条大小,而DSS应用程序访问的数据量大,可考虑使用64KB、128KB或256KB的分条大小。

  应用数据库的设计与开发

  Oracle数据库软件安装和配置完成后,就进入了应用数据库的设计阶段,应用数据库设计包括逻辑设计与物理设计。合理的逻辑设计会大大提高数据库的性能,增强数据库的可维护性。在设计中根据应用,抽象出实体关系模型,将实体关系图映射为标准化(数据完整、与应用无关、存储优化)的关系模型(数据库对象),当前有一些辅助工具(Oracle Designer等)来实现实体关系图到SQL代码的映射;数据库的物理设计就是数据库对象的存储设计,即如何为数据库对象分配存储空间。

  在进行数据库对象的设计前,数据库的管理和开发人员对应用和应用的数据及其应用关系要有一个详尽的理解,根据应用进行数据库对象的规划和设计,大概包含以下几个方面:

  ·确定需建立的数据库用户,明确用户的系统权限和表空间限额,为用户设计资源限制profile;

  ·确定应用数据应分多少个表进行设计,各表分别属于的用户,各用户对各个表的操作权限;

  ·明确各表的结构,确定表的主键及约束;

  ·明确哪些表是应用运行的关键表,哪些是事务表;

  ·分析哪些表是主表,哪些表是从表,确定表和表之间的外键约束,选择合适的表作为表连接的驱动表;

  ·根据应用,确定在哪些表上对哪些列建立合适的索引;

  ·根据表和索引的设计,确定要创建的表空间和回滚段,为表空间和回滚段选择合适的磁盘,尽可能创建本地管理的表空间,减少数据库空间管理方面的工作;

  ·明确需要编写的触发器及过程;

  ·为数据库对象选择备份和恢复策略。

  在数据库设计阶段,有时未必能完全确定合适的数据库对象的特征,应用设计和开发中还可能发现不合适的地方,需要回过头来进行调整和修改。但设计阶段的工作越细致,出现问题的可能性就越小,工作的效率就越高。

  创建数据库对象时,要根据数据库对象的特点,结合存储设备的大小、数量及速度等,对数据库对象分类进行存储,最大限度地消除或减少资源竞争。在数据库对象创建时主要应遵循以下原则:

  ·应用数据应放在单独的表空间,不要将应用数据放在系统表空间,为防止无意的使用系统表空间,将应用用户的系统表空间限额设为0。

  ·索引和表应放在位于不同硬盘上的不同的表空间,这样会提高数据库操作的速度。

  ·需要同时被访问的表要分开存放,利于并发访问的实施。

  ·如果磁盘数量有限,可把不常联合访问的表放在相同的磁盘上。

  ·预分配的原则。创建数据库对象(表空间、回滚段、表、索引等)时,根据对象的情况设置合适的storage参数非常重要。创建对象设计时,对对象的容量和预期的增长有一个估计,这样才能确定存储参数的大小。一般来说,应预先给表和索引等数据库对象分配足够的空间,数据库段不要太多地做动态扩展,因为会影响数据库性能。一个段(segment)由一个区(extent)构成是最理想的,initial 参数可以稍大一点,如果可能,可设为最大容量的大小,initial必须是db_block_size的整数倍;next参数的设置比较灵活,根据应用进行相应的设置,但也必须是db_block_size的整数倍;为了减少数据库碎片的产生,pctincrease参数应该尽量设为0;更新操作比较少的段,pctfree要设置得小一点,更新操作很多的段要设置得大一些;inittrans和freelists的值要相等,大小与并发事务数相关。

  ·分而治之的原则。大的数据库表和索引可考虑进行分区存放,不同的分区可位于不同的磁盘上,更好地均衡I/O。Oracle可以只对表的某些分区进行查询,这样会提高查询的速度;可对分区进行数据的删除、装载,还可以移动分区,对表的管理和控制具有更大的灵活性;可以有更多的策略选择,更好地执行备份和恢复操作。注意,对某些分区进行操作后,在Oracle8i下必须重建全局索引。

  ·大小和增长趋势类似的表最好放在相同的表空间,可以有效控制硬盘碎片的产生,提高空闲块的可重用性。

  ·相同备份和恢复策略的表最好放在同一个表空间,这样有助于备份和恢复工作的完成。

  ·对响应时间要求苛刻的应用所访问的对象放在速度快的磁盘上。

(0)

相关推荐

  • Oracle平台应用数据库系统的设计与开发

    正在看的ORACLE教程是:Oracle平台应用数据库系统的设计与开发.Oracle是目前应用最广泛的数据库系统.一个完整的数据库系统包括系统硬件.操作系统.网络层.DBMS(数据库管理系统).应用程序与数据,各部分之间是互相依赖的,对每个部分都必须进行合理的配置.设计和优化才能实现高性能的数据库系统.本文讨论笔者使用Oracle开发局域网中.小型数据库应用中,系统硬件的选择与使用.应用数据库系统设计与开发方面的一些心得和建议.应用数据库系统包含应用数据库和应用两方面的内容,应用数据库就是生产数

  • 浅谈Oracle数据库的建模与设计

    正在看的ORACLE教程是:浅谈Oracle数据库的建模与设计.要开发一个基于数据库的应用系统,其中最关键的一步就是整个系统所依据的数据库的建模设计,从逻辑的到物理的,一个环节疏于设计,整个的应用系统便似建立在危房之上,随着开发过程的不断深入,它要随时面临着各种难 以预料的风险,开发者要为修改或重新设计没有设计好的数据库系统而付出难以预料的代价.所以,一个良好的数据库设计是高效率的系统所必须的. 一.逻辑建模 数据库设计的方法因具体数据库而异,但是建模阶段的相同的,所以可以用一些通用的工具来进行

  • Android UI设计与开发之使用ViewPager实现欢迎引导页面

    本系列文章都会以一个程序的实例开发为主线来进行讲解,以求达到一个循序渐进的学习效果,这样更能加深大家对于程序为什么要这样写的用意,理论加上实际的应用才能达到事半功倍的效果,不是吗? 最下方有源码的下载地址,几乎源码的每一行都有注释,写的通俗易懂,非常清晰,如有不懂的可以留言,本博主一定尽心尽力,为大家答题解惑,希望大家多多支持,好的,话不多说,让我们回归到今天的正题. 一.实现的效果图 也许是养成了这样一个习惯,每次看别人的代码前,必须要先看实现的效果图达到了一个什么样的效果,是不是跟自己想要实

  • 5个Linux平台程序员最爱的开发工具汇总

    Linux程序员经常抱怨,自从他们使用了免费开源的系统平台后,作为一名程序员,却并没有在代码编辑器上得到足够的重视.他们往往会认为Linux平台上的代码编辑器太少了,以至于影响他们的编程工作.但是事实并非如此,在Linux平台上有太多的代码编辑器供你使用了,下面我们分享了5个最受Linux程序员欢迎的代码编辑器,继续在编程的路上前行吧! 1.Eclipse Eclipse是一款很酷的开源代码编辑器,同时它也是最受程序员亲睐的代码编辑器之一,它拥有代码高亮和智能提示等强大的功能.在Eclipse中

  • 微信公众平台 发送模板消息(Java接口开发)

    前言:最近一直再弄微信扫码推送图文消息和模板消息发送,感觉学习到了不少东西.今天先总结一下微信公众平台模板消息的发送.因为这个自己弄了很久,开始很多地方不明白,所以今天好好总结一下. 微信公众平台技术文档:模板消息接口 一.概述 模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息. 关于使用规则,请注意: 1.所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入

  • Android UI设计与开发之实现应用程序只启动一次引导界面

    这篇文章算是对整个引导界面开发专题的一个终结了吧,个人觉得大部分的引导界面基本上都是千篇一律的,只要熟练掌握了一个,基本上也就没什么好说的了,要是在今后的开发中遇到了更好玩,更有趣的引导界面,博主也会在这里及时的跟大家分享,今天的内容主要是教大家的应用程序只有在第一次启动的时候显示引导界面,以后在启动程序的时候就不再显示了. 其实要想实现这样的效果,只要使用SharedPreferences类,就会让程序变的非常简单,下面来详细介绍一下这个类的使用方法 一.SharedPreferences的详

  • Android UI设计与开发之仿人人网V5.9.2最新版引导界面

    这一篇我将会以人人网的引导界面为实例来展开详细的讲解,人人网的引导界面比较的新颖,不同于其他应用程序千篇一律的靠滑动来引导用户,而是以一个一个比较生动形象的动画效果展示在用户们的面前,有一种给人眼前一亮的感觉,话不多说,进入正题. 一.实现的效果图 欢迎界面: 引导界面1 引导界面 2 引导界面 3 二 .项目的目录结构 三.具体的编码实现 1.欢迎界面的xml布局,activity_welcome: <?xml version="1.0" encoding="utf-

  • 微信营销平台系统–刮刮乐的开发

    下载 jquery扩展wScratchPad.js, 原站的页面打不开,我这里提供一个下载地址 wScratchPad-2.1.0.zip 然后(冷静),一些没节操的博主,直接转别人的文章,验证的过程都省了,应该坑了不是小白.我这里修正一下 在这个扩展里面,怎么才能过去用户的刮开的面积 复制代码 代码如下: $("#wScratchPad3").wScratchPad({ cursor:'',  //设置鼠标的样式 color:'gray' ,  //设置覆盖物的颜色,跟image2功

  • oracle 优化的一点体会

    关于oracle 优化的内容很多,概念庞杂,不过可以总结出一个大纲性的东西作为需要考虑的方向,然后再逐步细化.oracle优化按重要性需要考虑设计.开发.调整几个方面. 首先是设计,这是最重要的部分,借用TOM的话:"性能是设计出来的,不是调整出来的".设计分为逻辑设计和物理设计,逻辑设计一般要遵循3NF,同时也要根据应用的需要引入逆规范化的设计,应为NF设计虽然消除了数据冗余,但随着规范化越高需要连接的表可能越多,同样对性能有影响,所以需要平衡考虑,至于何时要3NF,何时要逆规范化,

  • Android支付宝支付设计开发

    在移动支付领域,支付宝支付占用巨大份额,根据艾瑞咨询公布的报告数据:2014Q3,支付宝斩获了82.6%的市场份额,在移动支付的霸主地位越来越稳固.财付通支付的发力点在微信支付和手Q支付,在移动支付格局中取得了10.0%的市场份额,排名第二. 支付宝在移动支付领域的统治地位,使得我们有必要梳理支付宝移动开发流程.本文写作的目的就是梳理支付流程,从架构层面讲述如何在移动应用中嵌入支付宝支付功能,以及指出哪些地方存在开发陷阱. 准备       按照说明,首先需要申请支付宝支付账号.这方面根据网站说

随机推荐