BCP使用方法数据库(共6篇)
1.BCP使用方法数据库 篇一
碳纤维复合材料因其具有较高的比刚度、比强度、耐高温及抗腐蚀性等优良的特性而被广泛应用于航空航天、船舶及汽车等领域[1][2]。在汽车领域内,随着节能环保、低碳等理念的日益深入,轻量化设计的需求日益迫切。据可靠数据统计,每一代新车型的推出,其质量都会比原来下降10%左右。然而,随着汽车设计优化技术的不断发展,采用传统材料所带来的轻量化的空间越来越小。近年来,随着碳纤维制造工艺不断进步,其在汽车上的应用越来越广泛。从碳纤维复合材料与传统材料的对比中可得,采用碳纤维复合材料对传统材料替换后的车身质量可比原来下降30%~50%。因此,碳纤维复合材料在汽车中的应用极具潜力。
传统的碳纤维复合材料结构优化中,主要采用遗传算法、蚁群算法等启发式优化算法。例如:文献[3]以最大化屈曲载荷为目标,采用遗传算法对带加强筋碳纤维复合材料层合板结构进行优化;文献[4]以结构的质量为目标,采用蚁群算法对碳纤维复合材料层合板结构进行优化。
由于启发式优化算法大多采用随机搜索策略,其寻优效率较低。为了获得较理想的优化结果,通常需要成千上万次迭代,因此实际优化中会造成巨大的计算成本。针对于此,诸多学者提出了碳纤维复合材料拓扑优化的相关理论。
设计变量的参数化是拓扑优化首要解决的问题。参数化包含铺层层数的参数化和铺层角度参数化两个方面。铺层层数参数化可采用传统拓扑优化中的SIMP法[5]及RAMP法[6],以0和1来表征材料的有无。铺层角度参数化是区别于传统拓扑优化的最大不同,也是碳纤维复合材料拓扑优化研究的重点之一。
在实际的优化中,可将不用的铺层角度视为不同的材料。基于此,Sigmund[7][8]基于传统拓扑优化理论提出了两项材料插值模型。该方法采用一个设计变量来控制单元选择其中一种材料。然而,实际工程中铺层角度不仅限于两种,因此Lund教授提出了离散材料优化(DMO)方法[9][10][11]。同时,张卫红教授针对此问题提出了双值参数化(BCP)方法[12]。
DMO方法和BCP方法是碳纤维复合材料拓扑优化中常采用的两种方法。不同的铺层角度参数化方法对优化的效率及优化的结果有很大的影响。本文在对此两种方法作简要介绍的基础上,通过实际算例对两种方法的收敛速率、收敛率以及编码依赖性等方面进行对比,并阐述两种方法的优劣,以对实际工程设计及优化进行指导。
1、DMO方法及BCP方法概述
DMO方法和BCP方法均是基于多材料拓扑理论发展而来的。在备选角度数目相同的情况下,BCP方法采用的设计变量的数目较少。
1.1 DMO方法概述
DMO方法是对两相材料插值模型的拓展,因此它是广义的多材料插值模型。该方法中各单元内材料的取值通过设计变量的插值得到。插值的数学表达式如下:
其中:i表示第i个单元;j表示第j种材料;n表示备选材料的数目;为第i个单元的弹性矩阵;ωi,j为第i个单元第j种材料的权重;Di,j表示第i个单元第j种材料所对应的单元弹性矩阵。
该方法中一种备选角度(即备选材料)需对应一个设计变量。当单元总数为N时,设计变量的总数为N×n。与传统的拓扑优化类似,设计变量可取0和1之间的值。为了使得优化过程中得到明晰的材料分布,也即使得设计变量的取值趋向于0或1,在权重表达式中引入了惩罚系数。此时,带惩罚指数的材料插值表达式为:
其中,xi,j为第i个单元第j中备选角度的人工密度;p为惩罚系数。
由于在实际优化中,(2)式所采用的插值模型难以将设计变量0/1化,且各设计变量不关联。因此文献[9]对该插值模型进行了改进。改进后的插值表达式如下:
采用(3)式进行材料插值时,会造成材料的权重系数和不为1,因此需对材料的权重进行归一化处理。此时,材料的插值表达式为:
其中:为第i个单元第j中备选材料归一化后的权重系数。
1.2 BCP方法概述
如式(5)所示,m种备选角度可视为m种材料,各单元由铺层角度决定的材料弹性矩阵通过各备选铺层角度所决定的材料弹性矩阵加权得到。
其中:i为单元编号;j为备选角度编号;D为由铺层角度决定的材料弹性矩阵;m为备选角度的数量;ω为各角度的权重,其表达式如公式(6)所示。
其中:mv为设计变量的数量;xik为设计变量;p为惩罚指数;Sjk为一系数,其表达式如式(7)所示。
设计变量数目mv与备选角度数量m的关系如式(8)所示。
由式(8)可知,用mv个设计变量即可表示种备选角度。式(6)中的惩罚指数p可对中间密度进行惩罚,驱使设计变量向其边界靠近。例如,当m=4时需要2个设计变量对备选角度进行编码,系数Sjk的取值如表1所示。
2、DMO方法与BCP方法收敛速率及收敛率的对比
为了更好的描述两种方法的对比,引入收敛速率和收敛率两个概念。收敛速率表征优化进程收敛的快慢,采用当优化进程达到收敛条件时所需的迭代次数来描述。由于优化过程中对设计变量进行松弛,当优化目标对设计变量的导数不敏感时,最终优化结果中会存在设计变量不趋向于0或1的情况。在此引入收敛率来对优化结果的收敛状况进行评定,其表达式如下:
其中:N为单元的总数;Ns为收敛时设计变量取值为0或1的单元的数目。
2.1 算例描述
分别基于DMO方法和BCP方法对MBB梁的铺层角度进行优化。由于结构对称,故只需选取结构的右半部分进行优化。其右半部分的几何尺寸、载荷及边界条件如图1所示。平板的厚取1mm。为了便于比较,结构的铺层层数为1。该结构被20×20的正方形网格离散为400个单元。材料的属性如表2所示:
2.2 算例结果及分析
以最小化结构柔顺度为目标,分别基于DMO方法和BCP方法对铺层角度进行参数化,并采用序列二次规划法对结构进行优化。优化过程中,DMO方法和BCP方法所采用的惩罚指数均为2,此两种方法的优化初始变量取值分别为0和0.5。优化终止条件为两次临近迭代的设计变量取值之差小于或等于0.001。优化进程结束时,平板各单元铺层角度的分布图如图2、3所示。收敛过程如图4所示。
由图2和图3的对比中可得,采用BCP方法所得优化结果中可以确定的单元铺层角度的数量多于DMO方法,即采用BCP方法对铺层角度进行参数化时,优化的收敛率较高。算例中采用DMO方法所得优化结果的收敛率为94.5%,而采用BCP方法所得优化结果的收敛率为98.5。
由图4可得,当迭代过程终止时BCP方法所需的迭代次数为12步,而采用DMO方法所需的迭代次数为19步。并且采用BCP方法所得结构的柔顺度要小于DMO方法。因此采用BCP方法所得结构的性能较好。
3、BCP方法编码依赖性分析
采用BCP方法时,则需要一组设计变量来描述一种备选材料。当设计变量与备选材料采用不同的映射关系时,可能会得到不同的优化结果。
3.1 算例描述
结构的几何尺寸及边界条件如图5所示。平板的铺层层数为7。单一铺层的厚度为0.25mm。各个铺层的材料属性如表2所示。为了说明BCP方法对编码的依赖性,算例中分别采用两种编码方式对结构进行优化。变量取值与备选材料的映射关系如表3、表4所示。
3.2 算例结果及分析
以最小化结构柔顺度为目标,分别采用两种编码方式对铺层角度进行参数化,并采用序列二次规划法对结构进行优化。优化中惩罚指数取值为2。设计变量的初值为0.5。优化终止条件为两次临近迭代的设计变量取值之差小于或等于0.001。采用两种编码方式进行优化时的收敛过程如图6所示。
由图6可得,采用第一种映射关系,经过16步迭代后优化进程终止。而采用第二种映射关系时,优化收敛出现了震荡。优化变量取值在不用取值之间不停跳动,以至于优化进程无法收敛。因此,采用BCP方法对备选铺层角度进行参数时,该方法对编码方式具有很强的依赖性。
4、结论
本文对碳纤维复合材料结构拓扑优化中常采用的两种铺层角度参数化方法进行了对比,并通过实际算例详细分析了此两种方法对优化过程的影响。具体结论总结如下:
(1) BCP方法与DMO方法相比,参数化过程中所需变量数目较少。
(2)在编码方式选择合理的情况下,采用BCP方法所需优化迭代次数较少,同时优化后结构的性能也相对较好。
(3)采用BCP方法对铺层角度进行参数化时,优化结果对编码方式具有很强的依赖性。如果编码方式选择不当,优化结果不理想,甚至无法得到优化结果。
参考文献
[1]李威,郭权锋.碳纤维复合材料在航天领域的应用[J].中国光学,2011,03:201-212.
[2]杨小平,黄智彬,张志勇,杨虎平,周宇君.实现节能减排的碳纤维复合材料应用进展[J].材料导报,2010,03:1-5+10.
[3]Le Riche R,Haftka R T.Optimization of laminate stacking sequence for buckling load maximization by genetic algorithm[J].AIAA journal,1993,31(5):951-956.
[4]Wang W,Guo S,Chang N,et al.Optimum buckling design of composite stiffened panels using ant colony algorithm[J].Composite Structures,2010,92(3):712-719.
[5]Murakami K,Irie N,Tomita S.SIMP(Single Instruction stream'Multiple instruction Pipelining):a novel high-speed singleprocessor architecturc[C]//ACM SIGARCH Computer Architecture News.ACM,1989,17(3):78-85.
[6]Stolpe M,Svanberg K.An alternative interpolation scheme for minimum compliance topology optimization[J].Structural and Multidisciplinary Optimization,2001,22(2):116-124.
[7]Sigmund O,Torquato S.Design of materials with extreme thermal expansion using a three-phase topology optimization method[C]//Smart Structures and Materials'97.International Society for Optics and Photonics,1997:52-60.
[8]Sigmund O.Design of multiphysics actuators using topology optimization-Part I:One-material structures[J].Computer methods in applied mechanics and engineering,2001,190(49):6577-6604.
[9]Lund E,Stcgmann J.On structural optimization of composite shell structures using a discrete constitutive parametrization[J].Wind Energy,2005,8(1):109-124.
[10]Lund E.Buckling topology optimization of laminated multi-ma terial composite shell structurcs[J].Composite Structures,2009,91(2):158-167.
[11]Lund E.Kuhlmeier L,Stcgmann J.Buckling optimization of lamin ated hybrid composite shell structures using discrete material optimization[C]//6th World Congress on Structural and Multidisci plinary optimization.2005.
2.浅析数据库系统控制方法或途径 篇二
关键词数据库;安全
中图分类号TP文献标识码A文章编号1673-9671-(2011)041-0118-01
防止数据库中的数据被非法使用和恶意破坏,对付的是居心叵测的“人”,所以比防止意外事故造成的数据损坏要困难的多。恶意破坏可以有多种形式,可能是物理的破坏计算机设备或盗窃计算机设备,也可能是未经授权读取数据(窃取信息)、未经授权修改或删除数据等,都会带来严重的后果。
1安全性措施的层次
数据库安全涉及到很多层面,除了数据库系统应具有安全保护功能之外,还需要从机制、人员行为等多个方面采取措施。所以数据库安全必须在如下几个层次上采取措施:
1)物理层,重要的计算机系统必须在物理上受到保护,以防止入侵者强行进入或暗中潜入。
2)人员层,对用户的授权要严格掌握,以减少授权用户渎职、受贿,从而为入侵者提供访问的机会。
3)操作系统层,要进入数据库系统,首先要经过操作系统,所以如果操作系统的安全性能差,也会对数据库造成威胁。
4)网络层,由于几乎所有网络上的数据库系统都允许通过终端或网络进行远程访问,所以网络的安全和操作系统的安全一样重要,网络安全了,无疑会对数据库的安全提供一个保障。
5)数据库系统层,数据库系统应该有完善的访问控制机制,允许查询和允许修改有严格界限,尽量保证不出现越权的操作。
为了保证数据库安全,必须在上述所有层次上进行安全性控制。如果物理层或人员层存在严重的安全性缺陷,则很有可能其他层的安全性措施将如果虚设。虽然数据库的安全包括若干层次,但只有数据库的系统层是数据库系统要考虑的问题。因此,本文着重对这一部分进行探析。
2数据库系统的安全功能
安全性控制是数据库员的一个重要任务,他要充分利用数据库系统的安全功能,保证数据库和数据库中数据的安全。
安全系统的核心问题是身份识别。不论是计算机系统、银行金库还是其他方面的安全系统,只有有正确的身份(可能是钥匙、指纹、密码等)就可以进入。数据库系统一般是利用用户名来识别具体的用户,利用口令来鉴别用户的真伪。只有有了合法的用户名和口令就可以进入数据库。所以,安全性问题不仅仅是数据库系统和数据库员的事情,用户自己也要提高警惕,一旦将代表自己身份的用户名和口令泄露,别人就可以持此用户名和口令进入数据库。
网络和操作系統都是数据库系统的外围安全防线,现在的数据库基本都运行在网络上,所以用户必须首先得到网络和操作系统的许可才可以使用数据库及其资源。
数据库是另一道安全防线,只有注册到一个正在运行的数据库系统实例,才有可能访问数据库系统中的数据对象。数据库系统都有一套创建和各种级别用户的机制,不同的用户在数据库中有不同的权限。
注册到数据库系统的用户,并不意味着在数据库上拥有全部权限,不同的用户有不同的级别,不同的用户可以访问不同的数据库对象,不同的用户对数据库对象有不同的使用权限,不同的用户可以从数据库员那里获得不同的授权。
综上所述,数据库系统的安全功能可以划分为用户和数据库操作权限两大部分,其核心就是身份识别。为了方便安全,一般数据库系统还提供了用户组合角色。
3用户和角色
安全控制首先是用户,数据库系统通过用户账号对用户身份进行识别,从而完成对数据资源的控制。一般数据库系统将用户分为4类:系统员用户;数据库员用户;数据库对象用户;数据库访问用户。一个用户需要首先是一个数据库系统的登录用户,然后才可以访问某一个具体的数据库,所以登录用户和数据库用户是两个概念。虽然有两道安全防线,但并不意味着要登录两次,一个登录用户只要登录成功,就可以直接访问授权使用数据库。一个登录用户可以是夺冠数据库的用户。
1)用户。①登录用户的:登录用户的主要包括建立新的登录用户、修改登录密码、删除登录用户等。其中建立新的登录用户和删除登录用户的工作必须由系统员来完成。②数据库用户的:数据库用户由数据库员完成,主要包括授权其他登录用户为数据库的用户,或取消某个登录用户为数据库的用户。该工作也可以由系统员代为完成。
2)角色。单独数据库的每一个用户,对数据库员来说可能是一项非常繁杂的工作。如果将具有相同操作权限或相近操作权限的用户组织成“组”则可以简化对用户的工作。具有相同权限的用户可以说担当相同的“角色”。这里的“组”和“角色”表面是是两个概念,实际是一回事。从用户组的角度解释,是先定义用户组,然后用户组权限;而从角色解释,则是先定义权限,然后为用户指定角色。
4权限
权限就是用户对数据库及其对象的使用权利或权限。为了数据库的安全,需要对用户操作数据库的权限进行控制和。当用户连接到数据库后,他们可以执行的操作由其所拥有的权限确定。每个用户根据其角色都有默认的权限。用户若要进行任何涉及访问数据或更改数据库定义的活动,则必须有相应的权限。如果自己没有默认的权限,则必须从其他用户(系统员、数据库员或数据库对象拥有者等)得到相应的授权。权限包括授予或废除执行以下活动的用户权限:①创建数据库或数据库中的项目(语句权限)。②处理数据和执行过程(对象权限)。③授予系统预定义角色的权限(暗示性权限)。
参考文献
[1]宋志敏,南相浩.数据库安全的研究与进展.计算机工程与应用,2001.
[2]吴溥峰,张玉清.数据库安全综述.计算机工程,2006.
3.BCP使用方法数据库 篇三
关键词:Oracle;同步策略;Redo日志
中图分类号:TP311.13文献标识码:A文章编号:1007-9599 (2010) 09-0000-01
Research on Oracle Remote Database Synchronization Method
Chen Zhibo,Tang xian
(Henan Agricultural University,Huayu College,Shangqiu476006,China)
Abstract:This article discusses the distributed environment to achieve synchronization strategy based on Oracle database,and data synchronization system needs to resolve several key issues and put forward a feasible distributed database system as data synchronization solution.
Keywords:Oracle;Synchronization strategies;Redo Log
分布式數据库在逻辑上是一个统一的整体,在物理上则是分别存储在不同的物理节点上,数据库系统间的数据有效同步成为一个必须要解决的问题。因此必须建立一套可靠的远程数据库同步方案。
一、数据库同步策略
在分布式数据库中保证数据同步的策略有两种:分布式事务和多副本数据近似一致方案。
(一)分布式事务采用两阶段提交协议或者三阶段提交协议等类似协议来保证事务的原子性。
(二)多副本间数据近似一致的方案。各数据副本的修改是异步的,也就是说各副本将不保证任何时刻数据库绝对的一致性,而保持松散一致性。
二、数据库同步系统的关键问题研究
(一)Oracle数据库日志
Oracle重做(Redo)日志记录了所有的发生在缓存中的变化,其中包括有数据、索引和回滚段的变更。只有当事务的变更记录在日志中标志为递交,才能认为事务已经完成,变更后的数据才会在后台进程的控制下写回该数据所在的数据文件中。如果用户没有递交,或是由于其它故障而导致没有递交,则对数据库的变更只会存在日志文件中而不会写入数据文件。而如果递交后在写数据文件时出错,这时由于日志文件中已经有了该事务的递交记录,数据库恢复程序会查找到对应的日志记录并在缓存中进行重做,最后再把结果写到数据文件中。
(二)LogMiner工具的使用
Oracle虽然在日志中详细记录数据操作的活动,LogMiner工具可以提取数据库日志的内容,获得对于数据库操作的DML语句,从而可以查明数据库的逻辑更改情况、检查并更正用户的误操作、执行数据更改的事后审计和执行变化分析等。
LogMiner工具的主要用途有:1.跟踪数据库的变化:可以离线的跟踪数据库的变化,而不会影响在线系统的性能。2.回退数据库的变化:回退特定的变化数据,减少point-in-time recover的执行。3.优化和扩容计划:可通过分析日志文件中的数据以分析数据增长模式。
为了使LogMiner重构出的SQL语句易于识别,我们需要将Oracle数据库中的内部编号转化成相应的名称,这就需要用到数据字典,LogMiner利用DBMS_LOGMNR_D.BUILD()过程来提取数据字典信息。
三、数据同步系统的设计
在分布式环境下开发数据交换系统,面对的主要问题还是增量数据如何同步以及数据同步的效率问题。在基于Oracle数据库的环境下,增量数据同步必须解决数据库日志的解析以及增量数据在目标计算机快速入库的问题。
利用LogMiner解析oracle系统日志是实现分布式数据交换系统所要解决前提之一。对LogMiner解析出的日志进行SQL语句分析重构(针对目标数据库的快速入库接口重构)是实现分布式数据同步系统要解决的前提之二。
本文提出的数据同步系统由三大模块构成,分为目的端、数据源端和控制端。1.数据源端根据控制端的要求,操纵地方各局数据库,提供系统所需的源数据。2.目的端根据用户在控制端的设置,在规定的时间内,抽取取数据源端的数据,并进行转换入库。3.控制端操纵数据源端和目的端服务运行,并提供GUI界面供用户设置系统运行所需配置信息。
在系统运行时,控制端先通过用户设置的源数据端信息和目的端信息,连接源数据端和目的端获取数据库表信息和字段信息;用户通过展示的表信息和字段信息,配置源数据端表和目的端表的映射关系;同时指定数据库日志文件的ftp信息和数据同步时间,然后将映射关系,同步时间,ftp上传路径发送给源数据端监听端口;将同步时间发送给目的端监听端口;源数据端在固定时间间隔,启动SQLPLUS运行LOGMNR脚本,进行日志转储,然后根据用户设定的映射关系进行解析、转换、保存;在同步时间到达时,将保存的解析结果上传;服务端在指定时间获得解析结果然后执行入库。
四、结论
本文根据分布式数据库的技术特点,对Oracle远程数据库同步方法进行了研究分析,提出了在分布式环境下实现基于Oracle数据库的数据同步系统的设计方法。本文所提出的数据同步解决方案是一种比较高效的开发技术,具有一定的理论和现实意义。
参考文献:
[1]李素萍.分布式数据库的同步更新技术研究[J].中国科技信息,2008,16:94
[2]杨辛宝,刘玉.Oracle数据库重做日志文件的分析及其应用[J].信息技术,2005,4:23
4.BCP使用方法数据库 篇四
关键词:CAD数据库共享技术WWW平台
0引言
近几年随着计算机网络技术的迅猛发展和日益成熟,高速寬带网特别是IPV6的技术成熟,大容量数据高速的传播已经成为现实,基于WEB的CAD数据库共享技术将成为发展的主要方向。Internet和Intranet技术为不同地理位置的设计人员之间提供了通讯与协作的可能,也为其他用户查阅设计文件和提供反馈信息提供便利条件,这将大大降低项目的周期和提高企业的竞争力。因此,我们认为建立基于WEB的CAD工程数据库系统是解决问题的良好办法。
1CAD产品及相关信息的可视化表达
CAD产品的实体建模及图形数据交换是CAD数据库系统的关键技术之一。目前流行的各种CAD软件,其图形的数据结构较为复杂,标准也不尽相同,如:PKPM的T文件格式、基于AutoCAD的天正建筑等的DWG、D×F文件格式等等。其突出的问题在于,在不同的CAD平台之间进行数据交换时易产生数据的丢失或畸变,且这种静态表达的结构不支持基于虚拟现实的图形实时表达。三维虚拟现实建模语言VRML(Virtual Reality Modelingg Language)是在IN-TERNET上用于进行三维交互模拟的标准编程语言,通过VRML语言描述的三维产品与零部件信息可以在Internet上通过WEB浏览器进行访问,十分方便和快捷。
在CAD的应用中,开发者是通过矢量化的工程图来表达设计思想,而过去的Jnternet界面提供的只是位图形式,不能直接采用。Autodesk公司在目前的版本中采用WHIP技术,使AutoCAD的图形可以直接进入Web,通过Web浏览器观察DWG或DWF(Drawing Web Format)文件,将DWF文件嵌入到HTML网页中,充分地利用了DwF文件基于矢量的性质,且具有较高效率的文件存储和显示性能,但缺陷也十分明显,DWF文件的图形只能静态显示.其主要目的是为工程设计人员提供一个观察和下载工程图形或标准件库的环境,而无法实现模型的三维动态显示,以及详尽表述产品或机构运动的功能,而VRML技术有力地克服了HTML在三维表达方面的缺陷,通过VRML可以实现网络环境下的实体建模,构造虚拟的场景,建立仿真系统和实时参与等等,为设计者提供了直观、形象的设计环境。
2CAD数据库的建立
数据处理是工程cAD开发工作中的一个重要组成部分,其数据库的功能完善和使用方便与否,将直接关系到CAD系统的使用效果。区别于一般的商业数据库,工程数据具有数据量大、种类多、结构复杂等特性。我们可以根据其性质将工程数据分为图形数据和非图形数据:从应用上可以分为产品定义数据和设计与控制数据两种数据。从建立数据库的方面出发,将工程数据分为以下三种:
2.1标准数据主要由国家标准和行业标准组成,基本表现为静态数据形式,多以图表或曲线图形式表达,经过数据化处理后可建成关系数据库。
2.2设计及工艺技术参数由于工程项目的多样化和随机性,根据具体情况,经过计算而得到的数据往往呈现动态模式,需要在设计过程中随机存储,相互间关系较为复杂,建库比较复杂。
2.3图形几何参数由于设计过程的不确定性和产品的复杂性,将设计参数变成几何数据,以确定工程的具体内容等,这类数据的动态模式也十分明显。
对广大中小企业来说,选择较为成熟的关系数据库来开发是一个可行的方案,这样可以减少开发时间,降低开发成本。如:不少企业和单位利用VisuaI FoxPro、VisuaI Basic、C++、等数据库开发软件和AutoCAD等图形软件综合开发出大量行业基础数据库,为数据库的Web化奠定了基础。
CAD工程数据库是将传统数据库移植到Internet中的一种新技术,是数据库发展的趋势。它是一种动态的数据库,而非传统的单向浏览的静态方式。Microsoft公司的ASP技术是基于Active×技术的Web应用程序开发技术,它是服务器端的脚本文件,可以是H丁ML。也可以是VBSc ript或JavaSc ript。
上述的数据库,包括办公系统中的文档数据,均可以利用ASP技术Web化,使用户可以根据需要在浏览器界面获得和参与。当客户需要访问Web数据库时,客户既可以使用本地浏览器下的AP—PLET,也可以使用独立运行的应用程序,通过客户端的编程接口,对远程的数据库进行访问。此时,作为数据库服务器端,除了安装0DBC、相应的数据库驱动程序、TCP/lP协议外,还需要安装Inter-net数据库服务器,并通过它进行发布。客户端也要安装相应的客户端程序,将用户应用程序信息按照DBTP协议提交给数据库服务器,该服务器通过ODBC与后台数据库交互,并将相应的数据按照DBTP协议反馈给客户端。
3CAD工程数据库的访问方法
目前,Internet上Web数据库的访问方式主要有以下几种:
3.1服务器外部应用程序方法如CGI、ISAPI、NSAPI等,该方法是由服务器调用外部应用程序,从Web服务器获得用户的查询请求后,再送到数据库查询,并将结果通过Web服务器送回浏览器。
3.2以ASP为代表的描述脚本方法ASP是Microsoft公司基于Active×技术的Web应用程序开发技术,它可以结合脚本程序和HTML页面建立或执行动态交互式Web服务器应用程序。由于ASP技术可提供方便简捷地访问数据库的方式,且ASP源代码的安全性好,使得开发基于数据库驱动的Web应用程序更加容易。
3.3用Java通过JDBc来实现的方法在APPLET中使用JDBC,就可以在浏览器端嵌入APPLET,再通过JDBC连接到数据库,从而实现对数据库的访问。
以上几种方法都不同程度地受到DBMS、Web服务器、Web浏览器或者操作系统的影响和制约,所以应根据具体情况进行选择。对广大中小企业来说,运用成熟的ASP技术进行数据库的查询是较好的方法之一。ASP访问数据库的原理是当用户使用浏览器请求ASP主页时,WEB服务器响应,调用ASP引擎来执行ASP文件,并解释其中的脚本语言(JScript或VBScript),通过ODBC连接数据库,由数据库访问组件ADO(Active×Data 0 bjects)完成数据库操作,最后ASP生成包含有数据查询结果的HTML主页返回用户端显示。利用ASP技术实现访问数据库的结构流程如图所示:
访问时,客户端通过浏览器向Web服务器发送H-iTP请求,web服务器响应后调用ASP文件,用ADO组件通过ODBC向数据库服务器发送数据请求及数据操作指令,数据库服务器收到请求后进行处理,最后生成HTML文件并将其传给客户端,完成对数据库的查询操作。具体操作步骤如下图所示。
由于ASP在服务器端运行,运行结果以HTML主页形式返回用户浏览器,因而ASP源程序不会泄密,增加了系统的安全保密性。此外,ASP是面向对象的脚本环境,用户可自行增加ActiveX组件来扩充其功能,拓展应用范围。当然,在权限允许的条件下,用户可以对数据库进行添加或删除,并能立即在查询端得到响应,这样既可以保证数据库的安全性又可以使之得到不断完善。
5.BCP使用方法数据库 篇五
关键词:SQL Server;访问速度;数据库
引言
SQL Server数据库作为微软在Windows平台上开发的数据库,已经过多次的功能改进,出现了SQL Server2000版本,虽然SQL Server2000还无法和Oracle、Informix等大型数据库相比,但它在市场上的占有率足以说明了其先进性。很多程序员只注重程序算法的编写,并不对SQL Server2000数据库处理进行深入的考虑,从而导致数据库数据或并发用户增多时,系统执行速度越来越慢,甚至导致死机。本文根据我校在开发成绩录入与管理系统过程中出现的问题,对如何提高SQL Server数据库访问速度进行研究。
我校成绩录入与管理系统中主要包含的数据表为:学生表,成绩表,课程表,专业表,学院表。各个学期成绩表等如图1所示(部分表以及表结构已经省略)。
1合理使用视图和分区视图
视图可以看成是虚拟表或存储查询,可以通过select对视图中的数据进行查询,但是无法插入、更新、删除视图中的数据信息。很多程序员在编程过程中只使用数据表,而其它的一些操作全部利用程序来完成。过去我校的成绩录入与管理系统中,所有的数据操作都利用表来完成,大部分数据交换和数据调用都通过函数来实现,因此随着数据量的增大整个系统的执行速度越来越慢。系统经过改进,把需要利用多个select查询的数据创建成视图,系统速度有了很大的提高。
以图2所示的数据表为例,在一个页面中想要完成学生的成绩查询,并且要知道学生的姓名和课程名称,如果通过程序实现,必须利用三次select语句才能把图2所示三个表中所需要的字段显示出来。这种方法大大影响了数据库访问的速度。若利用视图,则只需进行一次select查询就可以得到想要的数据,其效率远远大于程序实现的效率。
视图是不保存任何记录的,它存储的是查询语句,所显示的记录来自于数据表(可以为多个数据表)。可以依据各种查询需要创建不同的数据表,不会因此增加数据库的数据量。
再举一个例子:我校每个学期都会有20万条的成绩数据,迄今为止成绩录入与管理系统已经运行了5个学期,各学期总成绩就有100万条数据,对于如此大量的数据,如何来管理,就每个程序员来说都是非常头疼的问题。
对此可以引入分区视图来解决。分区视图是指将一个或多个服务器上的数据表数据合并,通过定义check约束,将搜索范围限制到这些表上。分区视图的关键是check约束,如果不定义check约束,查询分析器必须搜索所有的表。具体到我校的成绩录入与管理系统的处理上,我们为每个学期单独创建一个表,表名为成绩[学期][学年]例如:表名为成绩20061。可以利用SQL中设计视图功能创建各个学期表。
在成绩表中需要注意,一定要建立学年、学期列的check约束。接着定义一个视图把以前所有学期的数据使用union all连接起来作为单个的结果集。别出此语句中的搜索条件,将其搜索范围限制在这个表上。这种方法的使用可以大大提高SQL Server数据库的访问速度。
2使用存储过程提高数据处理速度
存储过程最大的优点是将存储处理翻译成可执行码保存在系统表内,当作数据库的对象之一。由于存储过程已事先被翻译成可执行码,可以直接执行,所以其执行速度会很快。对一些功能固定的需求,把它写成存储过程可提高SQL Server数据处理的速度。以我校成绩录入与管理系统为例:我校每学期成绩表中数据都在20万条以上,而且把各个学期的数据连接到一起形成了总成绩视图,数据量超过100万条,要操作这样庞大的数据库,如果使用方法不当,就会严重地降低执行速度。我们考虑将经常使用的功能全部写成存储过程来提高数据库访问的速度,如:学期数据导入、成绩数据备份、总成绩查询等。结果表明执行速度有很大的提高。
对于学期成绩数据导入功能说明如下:在每学期成绩库中有20多万条数据,每学期成绩录入结束以后都要进行学期成绩数据导入。以前使用insert语句进行程序导入,执行速度很慢,甚至有时慢得无法执行,后来通过一个简单的存储过程很快地解决了问题,20万条数据导入,执行时间在10秒左右。
我校教务教学管理中使用学分制,通过学分绩的高低来反映一个学生学习成绩的好坏。计算学分绩的公式是((学生成绩—50)/10)*课程的学分。在学分和学分绩插入操作种需要进行判断:考试成绩不及格,则学分和学分绩都为0;考试成绩在60分以上,则计算出相应的学分和学分绩。最后通过“delete from成绩表”清空成绩表中的成绩数据,以便下学期正常进行成绩录入工作。合理地建立存储过程可以有效地提高数据库访问速度;还可以把一些程序算法封装到存储过程中来提高软件产品的可维护性,即使是条件发生改变时,也不需要修改客户端的应用程序,只要对数据库端编写的存储过程进行修改即可。
3索引设计与优化
目前很多软件为方便使用者学习也在帮助文档中添加索引功能,微软的MSDN是最典型的例子之一。在MSDN中专门有一项索引服务,很多程序员可能熟悉而且经常使用这个功能。通过索引查询信息不但方便而且能大大缩短查找信息的时间。在SQL Server数据库设计中也采用了这种概念,为了加快数据库访问的速度,可以对某些常用的查询条件创建索引。
在我校成绩录入与管理系统开发的过程中,解决数据库访问速度是一个关键问题。以往,期末考试结束以后,很多教师集中进行学生成绩录入,并行用户往往都在100人以上,而且对数据库反复进行插入、更新、删除数据等操作,在这种情况下,程序执行速度非常慢,录入一条成绩数据往往需要1分多钟,而且有时还出现一些莫名其妙的错误,这使开发人员十分困惑。经过对数据库各个表的仔细核查,并对每个表相应的字段建立索引后,问题完全得到解决,经过测试在线用户100人时,录入一条成绩数据大约2~3秒,系统处理速度得到很大提高。下面是建立索引的一个具体例子:在学生表中经常用到的字段只有一个:学号,我们可以对学号建立索引,建立方法如下create index sid on学生表(学号)。
提高数据库访问速度,不但要使用索引,而且还要优化索引;但是不能盲目使用索引,更不能对所有的字段都加上索引,这样不但不会提高速度,反而会因为过多的索引导致表扫描增多,增大查询造成的I/O开销。常用的索引主要分为两种:聚集索引、非聚集索引。在建立索引过程中要根据具体情况来选择不同的索引。聚集索引是表中存储的数据按照索引的顺序存储,检索效率比普通索引要高,但对数据新增、修改、删除的影响比较大。这就是说聚集索引适合固定表,如学生表、专业表、课程表、学院表,而不适合要不断新增、修改、删除成绩信息的成绩表。非聚集索引和聚集索引相反,不影响表中的数据存储顺序,检索效率比聚集索引低,但是对新增、修改、删除的影响很小,在成绩表中就必须建立非聚集索引了。
4结束语
6.BCP使用方法数据库 篇六
关键词:Oracal;SQL;优化
中图分类号:TP311 文献标识码:A文章编号:1007-9599 (2011) 15-0000-02
The Optimization Principles and Methods of SQL on Oracle Database
Zhang Xiaorong
(Xi’an University of Arts and Science,Xi’an710065,China)
Abstract:Oracle is RDBMS applying large,mediamsized and microcomputer.The problem of the database’performace optimization has been the focal point which people show solicitude for commonly,and a key factor affecting it’s performance is that executive efficiency of the SQL query sentence.In this paper we analyzed the need to optimize the SQL query,and Introduced the basic principles and methods of SQL statement optimization in Oracle Database,proved that SQL statement optimization greatly improve the performance of the database.
Keywords:Oracal;SQL;Optimization
一、引言
数据库系统是管理信息系统的核心,从大多数系统的应用实例可以看出,SQL语句的书写技巧以及其性能优劣往往是系统性能是否稳定的关键因素。SQL语句的执行效率直接影响系统的性能和运行速度。而相对于其他SQL操作,数据库中的查询操作所占的比重最大,查询优化也就有着相对重要的地位,构造科学合理的数据库查询系统,是开发数据库应用系统的重要步骤和环节。
二、查询优化的必要性
对于关系型数据库Oracle来说,大多数性能问题都是数据库设计不合理造成的,而SQL语句是对数据库进行操作的唯一途径,应用程序对数据库的操作最终要归结为SQL语句的执行。对于基于Oracle数据库的复杂的多层B/S结构的软件系统,用户终端对数据库的操作往往比较频繁,数据量较大,很多情况下查询过程是非常复杂的,如果能确保每个SQL语句能在最短时间执行,则用这些SQL组合成的系统将有着较高的运行效率。SQL语句的执行效率对数据库系统的性能起决定性作用,对查询语句的优化是提高系统查询效率的根本途径。
三、SQL语句优化原则和方法
Oracle数据库中影响SQL语句执行时间的因素主要是系统I/O(输入/输出)时间和SQL语句解析和执行的速度。因此,SQL语句的优化应遵循以下原则:(1)尽可能减少系统I/O操作。过多的I/O操作会大量占用系统CPU时间,影响SQL语句的执行速度。(2)优化排序操作,减少排序。过多的排序操作会增加SQL语句的解析和执行时间。(3)减少表的访问次数,尽可能避免全表扫描。表的访问次数过多或对比较大的表的全表扫描都会耗费系统资源,影响执行速度。遵循以上原则,Oracle中SQL语句优化的基本方法如下:
(一)合理使用索引:1.在经常使用为过滤器或查询频率较高的字段上建立索引。2.在用于连接的字段上(主键/外键)建立索引。3.在经常使用Group by和Order by的字段上建立索引。4.在经常存取的多个列上依据使用频率建立复合索引。但是,索引也是需要耗费系统开销的。一般过小的表没有必要建立索引。对于超大的表来说,,当返回的行数占表总行数的10%到15%时,使用索引可以极大地节省查询的时间,但当返回行数占40%以上时,使用索引将不再能提高查询效率。而且,由于表的更新同时要更新相关的索引信息,一张表上建立过多的索引会影响表的更新速度。所以,索引的建立需要均衡考虑相关因素,力求恰到好处。
(二)SELECT查询子句中只选择必要的列。SELECT*语句在执行时,Oracle先通过查数据词典获得每一列的字段名,然后才进行查询,如果其中一列被修改,则需要重新解析执行语句,这样将浪费CPU的处理时间和系统的I/O资源,而且也增加了维护的工作量。例如:Select*from phone,优化后可写为Select depart,number from phone。在服务器硬件性能不改变的情况下,优化前语句的执行时间是0.652s,优化后执行时间缩短为0.235s。
(三)正确使用DISTINCT。DISTINCT用来过滤掉重复记录只保留一条,往往用它来返回不重复记录,其执行时将产生一张工作表,通过排序来删除重复记录,这样大大增加了查询以及I/O操作次数,因此应合理使用DISTINCT,在不必要时尽量避免使用,以免系统资源浪费。
(四)可用WHERE子句代替HAVING子句。HAVING子句是在检索出所有记录集后才对结果进行过滤,这个处理需要现对结果进行排序、总计等操作,增大了系统开销。如果通过WHERE子句在汇总前就将汇总信息进行过滤,就可以节省这部分开销。例如,查询次消费金额大于1000元的客户的总消费金额。
优化前:Select Customer,Sum(Order Price)from Orders group by Customer having Order Price>1000;
優化后:Select Customer,Sum(Order Price)from Orders where Order Price>1000 group by Customer;
优化前执行时间为0.344s,优化后执行时间为0.289s。
(五)可用UNION代替OR(适用于索引列)。如果在WHERE子句中的索引列使用OR联接,执行时将会进行全表扫描,此时用UNION代替OR可提高查询效率。注意,此规则适用于多个索引列有效,如果没有索引列,查询效率可能会因为没有使用OR而降低。例如:
优化前:Select S_name,S_salary,S_allowance from Tab_Sal where S_salary>1500 or allowance>2000;
优化后:Select S_name,S_salary,S_allowance from Tab_Sal where S_salary>1500 union(Select S_name,S_salary,S_allowance from Tab_Sal where allowance>2000);
检出记录数321条,优化后执行时间由0.925s缩短为0.691s。
(六)可用UNION ALL代替UNION。UNION操作使多个记录集联接成为一个集。UNION操作在表联接后对产生的结果进行排序,删除掉重复的记录后才返回结果。而UNION ALL操作允许重复,不要求进行SORT UNIQUE操作,从而节省了系统开销。
(七)注意WHERE子句中约束条件的顺序。Oracle数据库是采用自下而上的方式来解析WHERE子句的,因此应该将能过滤掉最多记录的条件写在WHERE子句的最后,而将表之间的连接写在其他约束条件之前,从而提高查询效率。例如:
优化前:Select A.S_name,A.S_salary,A.S_allowance,B.eage from Tab_Sal A,Tab_Num B where A.S_salary>2000 and A.S_name=B.Name;
优化后:Select A.S_name,A.S_salary,A.S_allowance,B.eage from Tab_Sal A,Tab_Num B where A.S_name=B.Name and A.S_salary>2000;
优化前执行时间为0.325s,优化后执行时间为0.236s。
(八)有效整合Sql语句,减少表的访问次数。对于同一张表的多次访问,可以通过将相近SQL语句有效整合,从而减少对该表的访问次数,避免过多的系统资源消耗,有效提高查询效率。举一个简单的例子:
Select Customer,Level,Sum(Order Price)from Orders where Level=3 group by Customer;
Select Customer,Level,Sum(Order Price)from Orders where Level>=4 group by Customer;
整合后:
Select Customer,Sum(Order Price)from Orders where Level>=3 group by Customer;
对如上SQL语句进行整合后,其执行速度提高了一倍。
四、结束语
通过本文提出的SQL优化原则和方法对某企业Oracle数据库进行性能优化调整之后,其系统响应时间已明显下降,程序运行速度有所提高,良好的保障了系统的运行。Oracle数据库内部结构比较复杂,影响其性能的因素较多,但是在系统硬件性能一定的情况下,优化SQL语句是数据库性能得以提高的根本途径。SQL语句的优化方法還有很多,本文提出的只是笔者在使用过程中总结的原则和方法,更多的优化策略需要我们在实际应用中不断地总结和探索。
参考文献:
[1]周志德.Oracle数据库的SQL查询优化研究[J].计算机与数字工程,2010,11:173-178
[2]邓春娜,周晓红.Oracle数据库的查询优化方案[J].信息科学,2010,5:19
【BCP使用方法数据库】推荐阅读:
数据库索引的使用方法10-15
实习八 外文数据库的使用08-18
网络传真使用方法08-11
信用卡的使用方法08-03
地理教学中使用WPS表格分析趋势数据06-21
人字梯的安全使用方法07-03
手动工具的正确使用方法07-19
灭火器的正确使用方法09-24
小学写作常用标点符号使用方法07-28