前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇数据库设计范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。
2、概念结构设计:对用户需求综合、归纳与抽象,形成概念模型;
3、逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型;
4、数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构;
5、数据库实施:建立数据库,编制与调试应用程序,组织数据入库,程序试运行;
基站网元需要对数据的各种操作方式作出快速的响应,以及用户信息的固化存储,防止断电后引起的数据丢失,基站的系统资源有限制,不能选用耗费系统资源的物理数据库,专用通信网络使用SQLite数据库,集成了内存的高效操作以及支持物理存储,无需安装,应用广,商用性好。基站控制器,调度台服务器,网管服务器等网元需要存储各种不同的用户信息以及呼叫服务信息,计费信息等各种海量数据,它们对操作数据的反应时间没有很严格的需求,但对数据库存储能力有较大的需求,可以采用应用比较广泛的MySQL数据库。一级网元,作为整网的数据存储以及处理中心,数据量以及数据安全性是需要首先考虑的问题,Oracle是最值得信赖的大型关系型数据库。虚拟数据库使上层软件开发人员无需关心任何物理数据库接口,只需要使用虚拟数据库提供的一套接口,即可自由灵活进行数据的管理操作。
1.1虚拟数据库的基本操作数据库的基本操作分为插入,更新,删除,查询,针对每张表的操作方式,也是基于基本的四类操作,根据操作条件进行操作,总可以将数据转化成SQL语句进行操作。
1.2虚拟数据库的实现虚拟数据库操作的底层接口是各种物理数据库提供的API,虚拟数据库需要将这些API集中地封装起来,并根据用户的需求选择使用。封装结构可以如下所示。示例中仅封装了几个常用的数据库API,也可以根据需求追加定义其他API进入封装结构,也可以根据用户需求随时将其他数据库API封装进来。
2数据下发过程
2.1数据正常下发过程(1)底层网元首先向上层网元上报数据资源审计请求,并将底层网元的数据标识(通常为MD5校验码)带给上层网元。(2)计算底层网元数据审计标识,判断底层数据是否与上层网元数据一致,如果一致,发送数据审计结果正确给底层网元,否则发送数据不一致给底层网元。(3)根据结果判断,如果无需同步,向上层网元发送数据审计流程结束,如果需要同步,向上层网元发送数据请求,数据请求中包含请求数据表,以及数据指针,用于标识上次请求到的数据位置。(4)按照请求数据,从数据库中取出数据,以及数据指针,封装进数据下发包。(5)数据循环向下层网元发送,直到底层网元不在请求数据为止,同时底层网元上报数据审计流程结束,完成数据下发过程。
2.2数据异常下发过程(1)底层网元在无法打开本地的数据库情况下,判断为本地数据库已经损坏,向上层网元发送数据库崩溃通知。(2)生成下层网元的数据库,根据网元类型,通过FTP向底层网元发送数据库文件或者数据文件。(3)底层网元接收完成数据库后,打开数据库,上报数据资源审计请求。
3结束语
【关键词】计算机;数据库;Oracle;优化
一、前言
数据库是承载数据的载体,存放和提供数据的“库房”,为我们进行数据查询、修改、管理等操作提供便利。建立数据库可以帮我们提升工作效率,通常适合较为庞大的系统数据存储。
例如,国网新疆电力目前覆盖全疆14个地州(市),涉及用户达2000多万人口,管理40多个部门和下属单位。这么复杂的机构需要高效稳定的IT系统支撑国网新疆电力公司。国网新疆电力目前有多个IT系统,比较重要的系统有综合管理数据库、营销系统数据库、ODS系统、财务系统。这么多系统数据日增长量超过2TB,这需要有效的优化手段解决数据库的性能问题。
目前通用的方式为采用Oracle数据库来对这些数据进行存储管理,面对厂里人员的变动则需要进行数据更新,随着系统长期运行、用户数和数据量不断增大以及业务不断变化,系统运行期间就会涉及到数据库优化。本文就从Oracle数据库优化进行简单的讨论,针对在优化过程中的一些注意事项、优化事项进行分析,为我们在工作中能够熟练的掌握优化技术。
二、Oracle数据库介绍
Oracle数据库,英文全名为Oracle Data-base,又被称为Oracle RDBMS或者直接简称为Oracle。目前最流行的B/S和C/S架构的系统中均应用到了数据库,由于它们的架构设计中都具有自己的服务器,而数据存在这些服务器中,则需要数据库对其进行储存。目前对于数据库的使用越来越广泛,随着人们对于数据库的研究越来越深入,逐渐出现了数据库云,将计算机的云计算应用到了数据库之中,这样使得多个数据库联合组成了更加庞大的数据库网,它们之间实现了数据共享,因此对于知识、信息的涵盖将会变得更广。云计算的实现,带给计算机网络发展巨大的空间,使得将世界的计算机联合起来形成一层一层的网络,与此同时也将数据库采用云管理,为数据库的发展提供更加广阔的空间[1]。
三、数据库优化方案介绍
多数研究者在面对Oracle数据库优化课题时,都会存在这样的思想误区,即认为只有在系统出现运行问题时才需要进行系统性能调整。而事实上,对Oracle数据库的性能进行调整和优化是一个漫长而复杂的过程,是贯穿于整个系统运行周期的。因此,在进行系统性能优化时,应按照以下流程来进行:对系统各功能组件和硬件设备进行正确的配置对数据库结构进行调整对SQL语句进行优化调整参数进行磁盘I/O与服务器网络性能的调整。以上流程是一个密切联系的整体,只有保证严格按照这一流程进行Oracle数据库系统性能调整,才能确保系统的性能达到最佳状态,真正实现Oracle数据库的优化设计。
图1所示是进行数据库优化时需要考虑的内容。优化是数据库体系的延续,数据库的结构和运行的机制决定了数据库的优化模式,所以说数据库的体系结构是优化的基石。如果对数据库的体系结构有深刻的理解,优化便水到渠成。反过来,通过优化数据库,可以更深入的了解数据库体系结构。数据库各个方面都有优化的余地,主要的优化方向分为实例的优化、数据库的优化、SQL语句的优化。其中SQL优化是重中之重。
对Oracle数据库进行优化,应该遵循优化SQL查询语句――索引优化――合理分布数据库物理文件――分析及优化Oracle内存分配原则。具体如下:
(一)SQL查询优化
SQL查询,主要针对数据库的信息进行搜索,寻找自己的需求信息。数据库内的一切操作都是经由SQL语句进行执行,因此SQL语句的执行效率很大程度上决定了Oracle数据库的性能。进行SQL语句的优化,首先应该构建原始数据库BASICPROJECT,其中包含了与生产数据库基本一致的数据库对象;其次,应该充分的利用SQL Trace、awrsqrpt、sqlplus中的autotrace、explain等跟踪技术对语句进行优化重写 [4]。我们在建立SQL语句的时候要尽量的避免出现相关子查询,以及选择语句的使用,这样就能从数据建立的时候减轻查询的负担。针对联合查询连接遇到5张或者5张表单以上的选择时,建议采用优化器对SQL语句中所包含的表单进行物理大小排序,建立起一定的查询顺序,来提升查询的效率。
(二)索引优化分析
索引技术是提升检索速度和系统性能的主要技术,对于数据查询来说,合理使用索引可以极大的提高查询的命中率和效率。索引是将表中数据的逻辑值映射到rowid中,所以在查询时使用索引功能能够快速的定位出查询数据的物理地址,从而找出数据。
索引对数据库的性能影响是巨大的,但索引不是万能的,数据库对索引的使用是有选择的,我们可以强制使用索引,也可以强制不使用索引。一般的情况下数据库会自动的判断是否使用索引,除非你明确的在SQL语句中指定。
所有索引的原形都是树状结构,由根、枝干和叶子组成。根和枝干中存放键值范围的导引指针,叶子中存放的是条目,条目中存放的是索引的键值和该数据行ROWID。索引的叶子间通过指针横向的联系在一起,前一个叶子指向下一片叶子,这样的目的是数据库在找到一个叶子后就可以查找相临近的叶子,而不必再次去查找根和枝干的数据块。
有的DBA发现了索引并不能提高查询速度,反而对整个数据库的性能有较大的不良影响,出现该问题主要是和SGA数据管理方式有关。当Oracle进行数据高速缓存管理时,普通数据的驻留权限要比索引数据的权限要低,当两者在空间上竞争时,索引数据往往会驻留;如果是大型表建立索引时,索引数据占了大部分的缓存空间,使Oracle只能通过磁盘读写来获得数据,所以在大型表分区后,伴随索引也得进行相应分区,索引的使用应该有一个指定的合适路径[5]。
(三)分布表空间
在整个数据库工作过程中,各相关进程会将数据库中的事务分别写到联机日志文件、归档日志文件和数据文件当中,这会不可避免的造成这三类文件之间的I/O冲突;并且归档日志文件因其特殊性,无法同系统、业务和索引这些表空间共存,这就需要一个独立的磁盘来完成合理分布表空间的功能,对各项数据进行合理的分配,以避免文件之间的I/O冲突。
(四)数据缓冲区的调整分析
数据库的缓冲区是SGA不可缺少的组成部分,它的作用是对磁盘的读入数据进行存储,存储的数据为用户共享。如果需要修改数据时,首先要从数据文件中将数据读取出来存储在数据缓冲区;如果用户对数据缓冲区的设置太小,那么数据的操作性能将会受到很大的影响。用户越多,该问题越突出,该问题的出现使得很多人去关心如何判断数据缓冲区大小,如何确定缓冲区的效率,该类问题可以通过计算命中率来进行确认。
数据缓冲区V$sysstat中的consistent_gets、db_block_gets是consistent mode和current mode模式下的数据读取总量,physical reads是整个磁盘物理数据读取总量,这两个数据的读取总量的比值就是所谓的命中率,如果两个数据比值<90%,那么就需要对该缓冲区大小进行调整[2]。
(五)共享池调整分析
共享池同样也是SGA的重要组成部分,它主要包含了数据字典高速缓存与库高速缓存,这两者的作用是对整个SQL程序进行语法分析、编译以及执行。
库高速缓存中会将解析过的SQL语句、PL/SQL(存储过程、函数、包)进行缓存。如果为了工作的需要,将解析过的SQL信息重用会提高整个数据库的性能,可以将解析过的SQL信息存储在共享池中,这就需要共享池的设置要足够的大。通过对V$librarycache查询实例来观察整个库高速度缓存的活动情况,其中的reloads和pins,它们分别是库高速缓存执行阶段的未命中数目和库高速缓存中被执行的次数,如果库缓冲区的失败率超过的1%,那么就需要对其进行调整。除此之外,还有些情况也需要共享池的设置要大,字典数据高速缓存的总丢失数和总的存取数的比值应该接近零,当这个数值超过10%,那么就需要对其进行调整。如将表定义的详细信息长期的存储在共享池中,将其进行重用,提高数据库的整体性能[3]。
通过V$rowcache来对数据字典高速缓存活动进行详细查询,其中的get misses和gets分别代表的是字典数据读取的失败和成功次数,通常要求的比值小于10%,若超过则需要进行及时的调整。
(六)日志缓冲区优化方案
日志缓冲区主要是保存了对数据库修改信息,设置的大小一般为2兆以内的内存,最小为500K。日志缓冲区也不能过小,否则会增加日志的写盘次数,从而为I/O接口增加负担。日志缓冲区中的常见指令为:immediate gets表示成功立即得到日志缓冲区次数;immediate misses 则表示未成功立即获取日志缓冲区次数。V$latch中的gets和misses表示成功获得缓冲日志次数以及未成功获得日志缓冲区次数,其失败率要小于1%,如果超出则需要对数据库进行调整。
(七)合理的使用工具
有时候想直接在SQLPLUS中看ASH/ADDM/AWR报告,用下面方法比较方便,因为AWR数据在数据库中默认只保留7天,当我们进行性能对比分析需要保留时段之前的AWR时,可以采用脚本定时将AWR报告输出保存。
ASH (Active Session History)
ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。
生成ASH报告:
SQLPLUS>@?/rdbms/ashrpt.sql
ASH内存记录数据始终是有限的,为了保存历史数据,引入了自动负载信息库(Autom-atic Workload Repository ,AWR) 由后台进程MMON完成。ASH信息同样被采集写出到AWR负载库中。由于内存不是足够的,所以MMNL进程在ASH写满后会将信息写出到AWR负载库中。ASH全部写出是不可接受的,所以一般只写入收集的10%的数据量,而且使用direct-path insert完成,尽量减少日志的生成,从而最小化数据库性能影响。
写出到AWR负载库的ASH信息记录在AWR的基础表wrh$active_session_hist中,wrh$active_session_hist是一个分区表,Oracle会自动进行数据清理。
AWR(Automatic Workload Repository)自动工作负载信息库
AWR是Oracle 10g中的一个新特性,类似于10g以前的statspack。不过在使用上要比statspack简单,提供的性能指标要比statspack多很多,能更好的帮助DBA来发现数据库的性能瓶颈。
AWR 是Oracle安装好后自动启动的,不需要特别的设置。收集的统计信息存储在SYSAUX表空间SYS模式下,以WRM$_*和WRH$_*的格式命名, 默认会保留最近7天收集的统计信息。每个小时将收集到的信息写到数据库中,这一系列操作是由一个叫MMON的进程来完成的。
AWR存储的数据分类:
WRM$表存储AWR的元数据(awrinfo.sql脚本)
WRH$表存储采样快照的历史数据(awrrpt.sql脚本)
WRI$表存储同数据库建议功能相关的数据(ADDM相关数据)
生成AWR报告:
SQL>@?/rdbms/admin/awrrpt
根据向导来完成AWR报告的生成。需要注意的是,在选择时间范围的时候,中间不能有停机(如果显示的中间有空白行,表示有停机情况)。在选择报告类型的时候一般使用默认的HTML,方便查看。
查看数据库的AWR的设置:
SQL> select snap_interval, retention from dba_hist_wr_control;
SNAP_INTERVAL
RETENTION
--------------------------------- ----------------------------------
+00000 01:00:00.0(每小时收集一次) +00007 00:00:00.0(保留7天)
修改默认设置:
begin
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 20,
retention => 2*24*60);
end;
修改成每20分钟收集一次统计量,保留最近的2天统计量信息。
手动收集一次数据库的统计信息:
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
我们还可以通过DBMS_WORKLOAD_REPOSITORY包完成对基线、默认设置的修改等操作。
ADDM (Automatic Database Diagnostic Monitor AWR)
是Oracle内部的一个顾问系统,能够自动的完成最数据库的一些优化的建议,给出SQL 的优化、索引的创建、统计量的收集等建议。
ADDM报告生成:
SQLPLUS>@?/rdbms/addmrpt.sql
Oracle 性能调整最重要的就是对最影响性能的SQL的调整。在一个应用中,能够影响到数据库的只有SQL,也只能是SQL。我们不能一味依靠增强硬件,修改系统、数据库参数来提高数据库的性能,更多的应该关注那些最影响性能的SQL语句。ASH报告、AWR报告、ADDM报告都是能够找出最影响性能的SQL语句的工具。 在分析ASH报告、AWR报告的时候,最重要的就是关注SQL Statistics,SQL Statistics中最应该关注的是SQL ordered by Gets和SQL ordered by Reads两个指标。大量的Gets(逻辑读)会占用大量的CPU时间,大量的Reads(物理读)会引起IO的瓶颈出现。一般情况下,大量的Gets会伴随着大量的Reads出现。当然,我们可以通过增大SGA的大小来减少Reads的量。通过这两个指标找到了最影响性能的SQL,这是首要的,也是必要的。下一步就可以通过创建索引,调整SQL来提高SQL单独执行的性能,减少SQL执行时出现的高Gets,Reads。当然整体的性能影响还和excutions有关,如果这条SQL执行的次数过多,累加起来的量很大,那么就可以考虑通过在应用上缓存等手段来减少SQL执行的次数。另外还有一个需要注意的问题就是在开发过程中SQL一定要使用绑定变量,来减少硬解析(大量的硬解析也会消耗大量的CPU时间,占用大量的Latch)。在开发过程中有个原则就是:小事务操作完成及时提交。
我们使用这么多种方式、报告只有一个目的:找出最影响系统性能的SQL语句。找到SQL下一步就是对它进行调整了。
我们在监控数据库时,如果是当前正在发生的问题,我们可以通过v$session+v$sqlarea来找出性能最差的SQL语句。如果在一个小时以内发生的我们可以通过生成ASH报告来找出SQL。如果是1小时以上或几天我们可以通过AWR报告来找出几小时,几天以来最影响系统的SQL语句。ADDM报告基于AWR库,默认可以保存30天的ADDM报告。
我们也可以直接查询试图:
v$session (当前正在发生)
v$session_wait (当前正在发生)
v$session_wait_history
(会话最近的10次等待事件)
v$active_session_history
(内存中的ASH采集信息,理论为1小时)
wrh$_active_session_history (写入AWR库中的ASH信息,理论为1小时以上)
dba_hist_active_sess_history (根据wrh$_active_session_history生成的视图)
四、总结语
企业中使用Orcale数据库来储存数据,有效的改善了以前对于企业信息数据处理的问题。有效的节约了信息处理资源,且采用Orcale数据库将所有的员工等信息进行备份,方便以后查询,若数据库的数据不丢失,那么则能够通过查询进行查询。本文主要针对Oracle数据库进行介绍,然后根据数据库中的内容进行优化,为以后企业在数据库的优化上提供借鉴。
参考文献
[1]温创新.电视广告商务平台中Oracle数据库的ADICI设计与优化研究[D].中南大学,2011.
[2]王斌.基于Oracle数据库技术的航行情报系统(CNMS)性能优化[D].电子科技大学,2010.
[3]张舒.超大型Oracle数据库的基础设计和优化设计[J].价值工程,2011,10:178.
[4]励文杰.大型数据库ORACLE数据库的优化设计方案[J].科技风,2011,19:145.
关键词: Internet 异地设计 Web数据库
近年来,随着Web技术的蓬勃发展,人们已不满足于只在浏览器上获取静态的信息,想要通过它发表意见、查询数据。随着电子商务的普及人们开始参与一些网络商务活动,这就迫切需要实现Web与数据库的互连[1]。产品异地并行设计对数据的要求有一定的特殊性,主要有(1)产品数据多种多样。产品设计,特别是机械产品设计常常是大型而又复杂,在异地通过不同的设计小组,按不同的分工设计同一产品,所要管理和通讯的数据类型随着分工的不同而有不同的表现形式,如常规的数字组成的数据集,以图形、图象形式表达的产品模型数据,以文字形式描述设计的文档,还有图表、公式等形式,复杂多样。(2)产品数据交换频繁,流量大。产品设计是一个协同工作的创造性集体智慧凝聚的过程,要使设计顺利进行,分布在异地的不同设计小组之间就要经常性地进行数据交换,并且有些形式表达的产品数据是较大的文件。(3)产品数据的一致性要求高。分工合作的不同设计小组之间的设计任务是彼此关联,互相依赖的。如果其中一个数据改变了,相关联的数据必须跟着改变,在Web数据库设计时必须考虑数据的一致性问题。(4)产品数据的并发性访问频繁。由于异地产品设计的特殊属性,数据的并发性访问非常频繁。所以,进行基于Internet的产品异地并行设计的Web数据库设计与一般的电子商务不同,要充分考虑以上属性。本文结合我们近期开发的机械产品异地并行设计系统(RCDS, Remote Concurrent Design System),综合比较了多种当今流行的网络数据存取技术,设计出可靠安全的数据库系统。
1.1数据库连接方案选择
RDO、DAO和ADO是比较常见的Web数据库访问技术。
DAO (Data Access Objects) 数据访问对象是第一个面向对象的接口,它含有 Microsoft Jet 数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 象连接到其他数据库一样,直接访问到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用,对大范围的异地并行设计显得功能不够强大。
RDO (Remote Data Objects) 远程数据对象是一个到 ODBC 的、面向对象的数据访问接口,它同易于使用的 DAO style组合在一起,提供了一个接口,形式上展示出所有 ODBC 的底层功能和灵活性。RDO 在访问 Jet 或 ISAM 数据库方面有一定的限制,而且它只能通过现存的 ODBC 驱动程序来访问关系数据库。但是,RDO 已被证明是许多 SQL Server、Oracle
以及其他大型关系数据库开发者经常选用的最佳接口。RDO 提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。对异地并行设计Web数据库来说也不是十分理想。
ADO(ActiveX Data Objects)为ActiveX组件中数据库访问组件,ASP就是通过它实现对数据库的访问。ADO 是 DAO、RDO 的后继产物。ADO 2.0在功能上与 RDO 更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO “扩展”了 DAO 和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。例如,ADO 没有与 rdoEngine 和 rdoEnvironment 对象相等同的对象,可以包含 ODBC 驱动程序管理器和 hEnv 接口。尽管事实上接口可能是通过 ODBC OLE DB 服务提供程序实现的,但目前也不能从 ADO 中创建 ODBC 数据源。ADO 是为 Microsoft最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。OLE DB 为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。ADO 在关键的 Internet 方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。同时 ADO 使用了与 DAO和 RDO相似的约定和特性,简化的语义使它更易于学习。
ADO最早是在IIS中引入的,主要用于ASP,用ADO可以使服务器端的脚本通过ODBC存取和操纵数据库服务器的数据。使用ADO的对象可以建立和管理数据库的连接,从数据库服务器请求和获取数据,执行更新、删除、添加数据、获取ODBC的错误信息等。ADO是ASP方案中最具吸引力的数据库连接控件,它为用户提供了连接任何兼容ODBC的数据库以及创建全功能数据库应用程序的能力。
ADO具有简单易用、高速、占用资源少等的优点。不同于DAO和RDO,ADO有着更高的执行效率。ADO 对象模型如图1a所示。每个 Connection、Command、Recordset 和 Field 对象都有 Properties 集合,如图1b所示。
a)
b)
图1 ADO对象模型及属性
应该说,ADO是微软的下一代数据库连接技术,用来全面取代RDO和DAO的数据访问工具。从发展趋势来看,ADO今后将逐步替代老的DAO特别是RDO数据访问接口,成为新的远程数据访问方法。所以,选择ADO作为产品异地并行设计的Web数据库接口技术是合适的。
1.2 ADO应用分析
ADO 并不是自动和现存的数据访问应用程序代码兼容的。当 ADO 封装 DAO 和 RDO 的功能性的时候,必须将许多语言要素转换为 ADO 语法。在某些情况下,这将意味着要对现存代码的某些功能做一个简单转换。在其他情况下,最佳的做法可能是用 ADO 的新功能重写该应用程序。
包含在 DAO 和 RDO 模型中的许多功能被合并为单个对象,这样就生成了一个简单得多的对象模型。然而,由于这个原因,起初可能会觉得找到合适的 ADO 对象、集合、属性、方法,或事件非常困难。与 DAO 和 RDO不同的是,尽管 ADO 对象是分层结构的,但在分层结构范围之外也是可以创建的。同时,也应当注意,ADO 当前并不支持 DAO 的所有功能。ADO 主要包括 RDO 风格的功能性,以便和 OLE DB 数据源交互,另外还包括远程和 DHTML 技术。
一般说来,在 ADO 的演化过程中,马上把大多数 DAO 应用程序(except possibly是那些使用 ODBCDirect 的应用程序)移植到 ADO 上为时太早,因为当前的 ADO 并不支持数据定义 (DDL)、用户、组等等。不过,如果只将 DAO 用于客户—服务器应用程序,并不依赖于 Jet 数据库引擎或不使用 DDL,那么就可能移植到 ADO。最终,Microsoft 将提供一个 ADO DDL 组件来帮助进行 DAO 到 ADO 的移植,并为 OLE DB 供应商提供一般的 DDL 支持。
在ASP中使用ADO技术来访问Web数据库,其应用前景是无可估量的。原理图如下:
图2 ADO在ASP程序中的应用
常见的数据库类型有面向对象的数据库(OODB)和关系型数据库。OODB对主流数据库应用开发来说是相当新颖的,使用OODB使应用程序中的数据对象与现实世界中的对象一一对应,面向对象数据库扩充了对象模型。一个常用的对象模型是由对象数据库管理组(ODMG)开发出来,具有比传统的关系数据库更优越的性能,但毕竟在目前还是一种探索阶段,暂时还未有相应的技术普及。
关系数据库已经是数据库体系的世界标准。当开发一个数据驱动应用程序时,大多数情况下用户需要访问网络(如Internet、Intranet等)上的数据信息,就RCDS就是建立在网络的信息通讯之上,是完全的客户机/服务器应用程序。
SQL Server是一个可缩放、高性能的关系型数据库管理系统(RDBMS),它的设计是为了满足分布式客户/服务器计算的需要,允许客户应用程序使用几个特定的工具和技术控制从服务器检索的数据。这些包括触发器、存储过程和规则的选项。因此,系统采用MS SQL Server7.0作为后台数据库。
数据模型通常有层次模型、网状模型、关系模型及OO(面向对象)模型等。其中关系模型是建立在数学概念基础之上的一种模型,由若干个关系框架组成的集合,它也是到目前为止最为成熟的一种数据库类型。本文RCDS采用MS SQL Server作为后台数据库,根据数据库工具和数据库特点,开发出一套可靠健壮的数据存储方案。
整个数据库共有AdminData、ChatNames、DesignUnits、Message、OnlineUnits、Products、RqtTasks、RqtTaskUnits、RqtDesignUnits、ShareData、Tasks、TaskUnits和UploadFiles等表格。在建立数据模型的时候首先考虑是要避免重复数据,也就是建立规范化数据库。规范化数据库可以通过被称为范式水平的指标来衡量,级别有第一范式、第二范式和第三范式,通常第三范式就是要达到的目标,因为它提供了数据冗余和开发简易性之间的最好折衷。
RCDS数据库正是按照第三范式标准来设计的,它保证了模型的精简和表格的紧凑性。而第三范式标准也最大发挥了关系数据库的优势,图3是部分表格的视图链接情况。
图3 关系表格视图 4.1 并发控制的处理 在多个用户同时访问一个数据库时就产生并发问题,特别是在其中一些用户对数据库有添加或删除修改等操作时,那么其他所获得的数据可能是一塌糊涂,甚至造成整个数据访问的冲突、终止,从而使系统发生混乱以至崩溃。RCDS采用的解决办法是锁定技术,总体上分为共享锁定和排它锁定两种类型(如图4)。前者是指同时有几个过程共享一个锁定,比如一个用户(或客户)正在读取一个数据,虽然在这之前他已经对该数据设置了锁(LOCK),但其他用户同样可以(也只能是)读取它。而排他锁定一般应用于对数据进行修改或更新(包括添加删除等)操作,即是用户在修改一个数据之前设置了锁定,在一定的时间里其他用户是不能访问到该数据的,只有等待锁定解除(UNLOCK)才能进行访问到它,当然在计算机处理的时候,其他的用户一般是感觉不到有这个等待时间的。通过这样的处理,就保证了数据的一致性。
a) 共享锁定
b) 排它锁定
图4 安全锁定类型
在ADO进行数据库操作时,它的锁定类型相对来说复杂一些。打开记录集时,可以指定锁定类型。锁定类型决定了当不止一个用户同时试图改变一个记录时,数据库应如何处理。ADO中的锁定主要有以下四种类型:
l AdLockReadOnly 指定你不能修改记录集中的记录
l AdLockPessimistic 指定在编辑一个记录时,立即锁定它
l AdLockOptimstic 指定只有调用记录集的Update方法时,才锁定记录
l AdLockBatchOptimstic 指定记录只能成批地更新
在缺省情况下,记录集使用只读锁定。要指定不同的锁定类型,可以在打开记录集时包含这些锁定常量之一。部分代码如下:
… …
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
//定义数据库连接MyConn
Set RS=Sever.CreateObject(“ADODB.RecordSet”)
//定义返回数据记录集
MyConn.Open “ByktDB.dsn”//建立应用程序与数据源的连接
RS.Open “SELECT * FROM Mytable”, MyConn, adOpenDynamic, adLockPessimistic
//进行数据库操作,并且设置锁定
RS.Close
MyConn.Close
… …
数据的安全因素除了前面所提到的并行控制之外,还要考虑事务处理。网络数据库有其不同的地方,例如:假设某个时间有一个设计人员在你的站点上索取一些设计信息,有关的设计信息存储在两个表中。一个表用来保存该设计者的信息,另一个表包含了要索取的设计信息。该设计人员的信息已经输入了第一个表中。但是,就在这时,发生了意外情况,一道闪电击中了你的服务器,使第二个表没有被更新。在这种情况下,一个健壮的系统就必须保证最后的结果是两个表都没有被更新过。这时候事务处理就发挥了重要的功效。
使用事务处理,你可以防止第二个表没有被更新而第一个表被更新的情况出现:当一组语句构成一个事务处理时,如果一个语句没有执行成功,则所有的语句都不成功。不管是针对多个表,还是进行表内多个记录的操作,它们所需要的安全保证是一样的。事务处理的实现代码如下:
… …
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
MyConn.Open “ByktDB.dsn”
MyConn.BeginTrans //事务处理开始
MyConn.Execute “INSERT DataTable(Num) Values(‘3628’)”
MyConn.Execute “INSERT Shipping (Address) VALUES(‘Paris,France’)”
MyConn.CommitTrans //事务处理结束
MyConn.Close
… …
在上面这段代码中,用BeginTrans方法和CommitTrans方法来标记事务处理的开始和结束。在BeginTrans方法被调用之后,CommitTRans方法被调用之前,不管出现什么错误,两个表都不会被更新,在这个过程中所有处理的数据都保持了完全可靠的一致性。
5 结论 ADO是由微软公司推出的以ActiveX技术为基础的数据存取方法。它的主要特点是使用更加容易,访问速度更快,支持建立各种客户/服务器模式与基于Web的应用程序。RCDS正是采用ADO 所基于的OLE DB技术,可以对电子邮件、文本文件、数据表格等各类数据通过统一的接口API接口进行存取,是远程数据存取的一个主要发展方向。
RCDS的后台数据库采用的是Ms SQL Server的最新版本7.0,它的高性能和周密的数据管理措施是系统稳定的保证。除了数据库工具本身所具备的安全保障措施,系统的开发过程中从代码实现及用户访问等考虑了更为具体的数据安全措施:并发控制和事务处理。
第一章绪言
本论文主要介绍的是企事业使用的人事治理系统的整个设计。
随着计算机技术的不断发展,计算机应用于各大领域,并给人们的生活带来了极大的便利,在人员治理系统亦是。以往企事业人事员由于缺乏适当的软件而给其工作带来了很多不便。本论文所介绍的便是一个企事业人事治理系统,以方便其在人事安排和人事治理上的工作任务。
该系统适用于企事业人事员,其功能主要分为四大类:
系统初始化;档案更新;档案查询;档案打印等,该系统性能力求易于使用,具有较高的扩展性和可维护性。
整个系统的开发过程严格遵循软件工程的要求,做到模块化分析、模块化设计和代码编写的模块化。
第二章系统需求分析
2.1现行业务系统描述
在企业,人事治理工作是非常重要的一项工作,它负责整个企业的日常人事安排,人员的人事治理等等。以前都是人工进行操作。随着企业规模扩大,人事处的人事治理工作量大大加重。随着计算机应用的发展,人事工作者急切希望能够将大部分繁琐的工作交由计算机的处理,已减轻人工的压力并提高工作效率。而计算机的普及更加快了人事治理系统的产生。
上一代的人事治理系统主要采用Foxbase或FoxPro,系统开发环境也是数据库内置的开发工具。其特点是单机单用户方式,开发简单,能充分利用数据库的特性。其缺点是开发出的系统依靠性强,运行必须依托数据库环境;不轻易升级与扩展;无法实现数据的共享与并行操作;代码重用性差。
原有人事治理系统数据共享差的问题更加突出,而新需求的提出也越来越多,越来越频繁。这就要求系统在可扩展性和标准化的要求更高。而原有的系统由于其与生俱来的缺点而无法在适应现有的需求了。
因此,使用现在的新技术,开发出适应新的需求的新系统的任务刻不容缓。
2.2组织结构
在企事业中,其中和人事治理系统由直接关系的部门是人事处,是使用综合人事系统的主要部门,对人员的人事治理主要由人事处承担,进行集中治理。
2.3业务流程分析
人事治理系统是一个面向企业人事人员,为其提供服务的综合信息治理系统。人事人员通过本系统完成相关的日常工作,这些工作也是平常较为繁重的工作。人员的个人信息、以及各种相关的亲属等情况开课情况都记录在人事系统里进行治理。
由人事人员在档案更新中完成对运行人事系统所需的基本数据的维护。包括这些信息的增、修、改等,变动都将在这进行操作。系统开始投入使用,人事人员先根据企业实际情况,建立相关人员的信息,主要信息包括系所的姓名及它的学历等。输入人员信息的过程是首先从系统数据库中选择相关的系所,然后再它下面加入新的辅助信息。当人员情况发生变动后,人事人员要及时完成对库中的信息进行维护。假如发生人事的变动,则可以在档案更新中进行处理,因为不同企业的员工数量不同,因此非凡设立了一个档案查询模块,可以进行相关人员的快速查询,并可以根据某一个具体的条件,如具有相同属性的人员,进行同一类型的人员统计,并可以将结果通过打印输出,以便备案。
2.4现行系统存在的主要问题分析
现行系统的主要问题归纳起来主要有,
1.单机单用户系统,随着网络的发展,同时人事治理系统中信息的使用者大大增加,原有的单机单用户系统已远远不能满足需要。同时,原有的数据库也不支持多用户的网络运行环境。
2.系统独立性差,原有系统一般都是使用数据库提供的开发工具编写的程序,因此收数据库的制约比较大,编写出来的程序性能也不好。非凡是无法支持如Access,MSSQLServer等新的数据库。
3.模块性差,由于不是一个完整的编程语言,故无法做到代码的模块化,给功能的扩展带来了巨大的不便。
2.5提出可能的解决方案
鉴于目前企业对人事治理系统的需求与实际情况,新系统方案的重点放在系统的可扩展性上,为了实现这一设计,新系统应具备以下几方面的要求:
1.新系统采用VisualFoxpro6.0开发成功,充分利用该开发程序的优势,提高了工作效率。
2.新系统从设计到实现都应遵循模块化,是用一致的接口进行信息的传递与模块调用。模块的划分应尽量符合实际业务的划分,以保证以后新模块的加入尽可能少的影响现有功能模块的运行。
3、新系统所具有的特性:
*通用性:用户可根据本单位的需求灵活设置人员类别及其数据库结构,可满足不同层次,不同性质,不同业务工作的需求。
*标准化:提供了丰富完善的人事治理内容,为各级人事部门之间的数据共享及数据交换奠定了良好的基础。