首页 优秀范文 数据库设计

数据库设计赏析八篇

时间:2022-12-31 07:49:18

数据库设计

数据库设计第1篇

第一章绪言

本论文主要介绍的是企事业使用的人事治理系统的整个设计。

随着计算机技术的不断发展,计算机应用于各大领域,并给人们的生活带来了极大的便利,在人员治理系统亦是。以往企事业人事员由于缺乏适当的软件而给其工作带来了很多不便。本论文所介绍的便是一个企事业人事治理系统,以方便其在人事安排和人事治理上的工作任务。

该系统适用于企事业人事员,其功能主要分为四大类:

系统初始化;档案更新;档案查询;档案打印等,该系统性能力求易于使用,具有较高的扩展性和可维护性。

整个系统的开发过程严格遵循软件工程的要求,做到模块化分析、模块化设计和代码编写的模块化。

第二章系统需求分析

2.1现行业务系统描述

在企业,人事治理工作是非常重要的一项工作,它负责整个企业的日常人事安排,人员的人事治理等等。以前都是人工进行操作。随着企业规模扩大,人事处的人事治理工作量大大加重。随着计算机应用的发展,人事工作者急切希望能够将大部分繁琐的工作交由计算机的处理,已减轻人工的压力并提高工作效率。而计算机的普及更加快了人事治理系统的产生。

上一代的人事治理系统主要采用Foxbase或FoxPro,系统开发环境也是数据库内置的开发工具。其特点是单机单用户方式,开发简单,能充分利用数据库的特性。其缺点是开发出的系统依靠性强,运行必须依托数据库环境;不轻易升级与扩展;无法实现数据的共享与并行操作;代码重用性差。

原有人事治理系统数据共享差的问题更加突出,而新需求的提出也越来越多,越来越频繁。这就要求系统在可扩展性和标准化的要求更高。而原有的系统由于其与生俱来的缺点而无法在适应现有的需求了。

因此,使用现在的新技术,开发出适应新的需求的新系统的任务刻不容缓。

2.2组织结构

在企事业中,其中和人事治理系统由直接关系的部门是人事处,是使用综合人事系统的主要部门,对人员的人事治理主要由人事处承担,进行集中治理。

2.3业务流程分析

人事治理系统是一个面向企业人事人员,为其提供服务的综合信息治理系统。人事人员通过本系统完成相关的日常工作,这些工作也是平常较为繁重的工作。人员的个人信息、以及各种相关的亲属等情况开课情况都记录在人事系统里进行治理。

由人事人员在档案更新中完成对运行人事系统所需的基本数据的维护。包括这些信息的增、修、改等,变动都将在这进行操作。系统开始投入使用,人事人员先根据企业实际情况,建立相关人员的信息,主要信息包括系所的姓名及它的学历等。输入人员信息的过程是首先从系统数据库中选择相关的系所,然后再它下面加入新的辅助信息。当人员情况发生变动后,人事人员要及时完成对库中的信息进行维护。假如发生人事的变动,则可以在档案更新中进行处理,因为不同企业的员工数量不同,因此非凡设立了一个档案查询模块,可以进行相关人员的快速查询,并可以根据某一个具体的条件,如具有相同属性的人员,进行同一类型的人员统计,并可以将结果通过打印输出,以便备案。

2.4现行系统存在的主要问题分析

现行系统的主要问题归纳起来主要有,

1.单机单用户系统,随着网络的发展,同时人事治理系统中信息的使用者大大增加,原有的单机单用户系统已远远不能满足需要。同时,原有的数据库也不支持多用户的网络运行环境。

2.系统独立性差,原有系统一般都是使用数据库提供的开发工具编写的程序,因此收数据库的制约比较大,编写出来的程序性能也不好。非凡是无法支持如Access,MSSQLServer等新的数据库。

3.模块性差,由于不是一个完整的编程语言,故无法做到代码的模块化,给功能的扩展带来了巨大的不便。

2.5提出可能的解决方案

鉴于目前企业对人事治理系统的需求与实际情况,新系统方案的重点放在系统的可扩展性上,为了实现这一设计,新系统应具备以下几方面的要求:

1.新系统采用VisualFoxpro6.0开发成功,充分利用该开发程序的优势,提高了工作效率。

2.新系统从设计到实现都应遵循模块化,是用一致的接口进行信息的传递与模块调用。模块的划分应尽量符合实际业务的划分,以保证以后新模块的加入尽可能少的影响现有功能模块的运行。

3、新系统所具有的特性:

*通用性:用户可根据本单位的需求灵活设置人员类别及其数据库结构,可满足不同层次,不同性质,不同业务工作的需求。

*标准化:提供了丰富完善的人事治理内容,为各级人事部门之间的数据共享及数据交换奠定了良好的基础。

数据库设计第2篇

[关键词] 数据库 关系数据库 数据库设计

1.引言

数据库的应用已经深入到生活和工作的方方面面,计算机软件的发展很多都是基于数据库的。一个好的应用程序首先应该要求有一个好的数据库设计,一个规划和设计良好的数据库的优点是众多的,前期做的工作越多,后面所要做的就越少。如果在使用数据库的应用程序公开之后,再对数据库进行重新设计,不仅浪费时间和精力,而且代价高昂。因此,在开始编写一个应用程序的代码之前,应该尽量把数据库设计好。

2.数据库设计的重要性

良好的数据库设计对于一个高性能的应用程序非常重要,关系没有经过优化,数据库无法尽可能高效地运行,并且很难维护,而现实要求数据库应该易于维护。好的数据库设计(关系型数据库)作用主要体现在以下几个方面:首先充分体现系统的需求,准确的表达数据间关系;保证数据的准确性和一致性和健壮性;提高数据的查询效率;有好的扩展性,在必要时能根据需求扩展数据结构。如果设计不当,查询起来就非常吃力,程序的性能也会受到影响

3.数据库设计技巧

3.1正确理解和处理原始单据与实体之间的关系

原始单据与实体之间存在三种关系,即:一对一、一对多、多对多的关系。一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。

比如:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。

3.2 理解基本表的性质

基本表与中间表、临时表不同,因为它具有如下四个特性:

(1) 原子性。基本表中的字段是不可再分解的。

(2) 原始性。基本表中的记录是原始数据(基础数据)的记录。

(3) 演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。

(4) 稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。

理解基本表的性质后,在设计数据库时,将基本表与中间表、临时表区分开来。

3.3通俗地理解三个范式

通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应用三个范式,就必须通俗地理解三个范式:

第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;

第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;

第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。

没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

3.4要善于识别与正确处理多对多的关系

若两个实体之间存在多对多的关系,则应消除这种关系。消除的办法是,在两者之间增加第三个实体。这样,原来一个多对多的关系,现在变为两个一对多的关系。要将原来两个实体的属性合理地分配到三个实体中去。这里的第三个实体,实质上是一个较复杂的关系,它对应一张基本表。一般来讲,数据库设计工具不能识别多对多的关系,但能处理多对多的关系。

比如:在“图书馆信息系统”中,“图书”是一个实体,“读者”也是一个实体。这两个实体之间的关系,是一个典型的多对多关系:一本图书在不同时间可以被多个读者借阅,一个读者又可以借多本图书。为此,要在二者之间增加第三个实体,该实体取名为“借还书”,它的属性为:借还时间、借还标志(0表示借书,1表示还书),另外,它还应该有两个外键(“图书”的主键,“读者”的主键),使它能与“图书”和“读者”连接。

3.5防止数据库设计打补丁的方法是“三少原则”

(1) 一个数据库中表的个数越少越好。只有表的个数少了,才能说明系统的E—R图少而精,去掉了重复的多余的实体,形成了对客观世界的高度抽象,进行了系统的数据集成,防止了打补丁式的设计;

(2) 一个表中组合主键的字段个数越少越好。因为主键的作用,一是建主键索引,二是做为子表的外键,所以组合主键的字段个数少了,不仅节省了运行时间,而且节省了索引存储空间;

(3) 一个表中的字段个数越少越好。只有字段的个数少了,才能说明在系统中不存在数据重复,且很少有数据冗余,更重要的是学会“列变行”,这样就防止了将子表中的字段拉入到主表中去,在主表中留下许多空余的字段。所谓“列变行”,就是将主表中的一部分内容拉出去,另外单独建一个子表。

4.小结

一个应用程序的性能高低及可维护性,很大程度上取决于相应数据库的设计,因此,除了掌握数据库设计的常规方法之外,更要总结实际开发过程中遇到的问题及解决方法,掌握和应用数据库设计的技巧,对于提高应用程序的性能和可维护性有很大的帮助。

参考文献:

[1] 王珊,?萨师煊 《数据库系统概论》,高等教育出版社.

[2] 周桂云,关系数据库中实现多对多关系的数据组织探讨,信息技术:2003.01.

数据库设计第3篇

【关键词】数据库 连接技术 连接类

1 前言

任何一个稍微有点规模的Web应用都离不开后台数据库系统的支持。商业的数据库系统主流有Oracle、DB2、MS SQL Server和Sybase等,而除了这些商业数据库外还有一些开源免费的数据库系统可以选择,对数据库的使用已经成为一种常态,本文着力于数据库连接技术的探讨,有助于电子商务应用技术的发展。

2 数据库连接的设计

在设计数据库连接的时候我们可以应用纯JAVA的连接,如果应用桥连接的方式效率会被大打折扣。我们可以通过设计专门的用来连接数据库和进行相关数据库操作的类。

数据库的连接使用连接池来实现,有了连接池以后就可以在连接请求来的时候分配给一个连接,当连接用过之后就可以回收到连接池中,这样就提高了效率。

连接池是配置在tomcat路径下面的conf文件夹下面的server.xml文件里面,连接池的实现使用下面的代码来进行的:

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

auth="Container"

type="javax.sql.DataSource"

maxActive="100"

maxIdle="30"

maxWait="10000"

username="sa"

password="sa"

driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=yidong"/>

其具体实现方式含有以下功能:

1)服务器的地址为localhost。

2)应用的根路径为webapps。

3)在元素下面指定了连接池的路径为yidong。

4)文本路径为yidong。

5)资源的名称为jdbc/yidong。

6)连接池最大活动连接数为100。

7)最大等待时间为10秒。

8)连接数据库的用户名为sa。

9)密码为sa。

10)驱动为:com.microsoft.jdbc.sqlserver.SQLServerDriver。

11)url为jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=yidong。

3 数据库连接类的实现

下面我们定义两个方法,一个从连接池中获取一个连接,另一个方法用来关闭连接,有两个对象,分别为连接池对象:pool和数据库连接对象:connection。

public class DbConnection {

static private DataSource pool = null; // 声明连接池

private Connection connection = null; // 声明一个连接

// 初始化连接池

public DbConnection(String dataSourceName) throws NamingException, SQLException {

//保证只有第一次使用才会建立连接池

if (pool == null) {

Context env = (Context) new InitialContext()

.lookup("java:comp/env");// 获得当前的JNDI对象

pool = (DataSource) env.lookup(dataSourceName);//获得连接池

}

connection=pool.getConnection();//获得一个数据库连接

}

// 关闭连接

public void close() throws SQLException {

if (connection != null) {

connection.close();

}

}

public Connection getConnection() {

return connection;

}

4 前文总结

本文探讨了数据库连接技术的实现,给出了一种效率很高的数据库的连接技术,可以在各行各业的电子商务应用中被采用。

作者简介

夏小翔(1973-),男,湖北省鄂州市人,鄂州职业大学计算机系讲师,硕士,研究方向为群体智能算法。

数据库设计第4篇

关键词:元数据;ETL;异构数据;数据仓库

1 引言

随着联入互联网络的发展,主机数、用户数和信息源节点数的爆炸性增长,使数据形式也出现了多样化,不光有结构性的数据,还有许许多多例如TXT文件或者图片视频等非结构性数据类型,但这些分散的数据使人们在信息检索和网络资源管理等方面面临着许多难题。

关系型数据库具有极强的管理能力,数据的安全性高,和可靠的并发机制,一直是结构化数据存储的主流。但各种数据库系统之间的差异,已经所依赖操作系统之间的异构型,严重影响了信息共享和数据交换。

随着应用的不断进步发展,企业已经不能光靠联机事务处理OLAP去应对压力取得行业领先水平,这是他们需要对自身业务的运作及整个市场行业相关的趋势进行分析,做出有利的决策。这时对以往大量的历史数据的使用和存贮就成了势在必行。 但实际企业与企业之间,企业内部各部门之间业务、目标以及操作系统、存储方式的不同必然造成数据上的差异,不能提供有效的信息共享,形成数据孤岛,不能满足管理人员决策分析的需求。传统关系数据库依然不能满足以上需求,这时就需要一种能够适应决策分析的数据环境――数据仓库(Data Warehouse,DW)。在本文中建立一套数据仓库系统,完成了多种异构数据的整合,简单的BI分析并用图表显示。第二部分讲述数据仓库整体架构思路,第三部分为本套以元数据为驱动系统的具体实施,第四部分文章总结。

2 技术背景

数据仓库是数据分析和决策支持系统(Decision Supporting System,DSS)在当代海量数据背景下产生的技术。是一个面向主题的、集成的、相对稳定的、反映历史变化的结构化数据集合[1]。数据仓库的建设更像一个过程而不是工程,以现有企业大量历史的数据作为积累,进行归纳重组,运算分析,把计策信息及时地交给企业管理层,这才是数据仓库的根本任务。经典架构见图1。

图1 经典数据仓库DW

ETL(Extract-Transform-Load),即从各种异构数据源中抽取数据,并按照预先设计好的规则进行转化清洗,处理一些冗余、歧义、残缺、违反业务逻辑的数据,统一数据粒度,最后加载到目标数据仓库中,是建立数据仓库的必要基础。ETL设计和开发占整个数据仓库系统开发量的60%~80%[2],一般有两种工具方案供选择:一种使用数据仓库引擎厂商提供的ETL工具进行数据的加载;通过ETL工具提供的编程API进行数据的加载。前一种更加简便快捷,后一种更加灵活,性能也有一定的提升。此外最主要的问题就是如何建立有针对性的ETL过程模型,研究组织对早期建立ETL过程模型也给出了很多建议[5]。还有国外著名数据仓库软件厂商,如Informatica的powercenter,IBM的infoSphereDataStage,Oracle的Oracle Data Integration,Microsoft的SSIS都是优秀的数据仓库工具,其中也有源工具Repository Explorer,Beeload,Kettle,DataSpider集成整套的DW和BI功能。

ETL过程的设计需要对数据结构,不同的主题也需要设计专门的ETL的过程。所以当需要转变商业规则或数据结构,就需要重新设计ETL过程,重用性很低。为了解决以上问题,设计一种新的ETL应对方案,解决的了过程核心的重复编写,提供了重用性,采用了ETL工具和API接口相结合的架构方式,能够满足大部分的数据源和多样的处理过程,在保证数据加载性能的同时更灵活方便,以元数据为驱动,实施了一整套数据仓库系统并研究分析。

3 系统设计

本系统主要以意大利Pavia大学IRMA项目为背景,实现一套交互性的城市助手系统,建立数据仓库,提供分析图表,帮助行政人员更好的管理城市基础设施。市民也可以使用手机APP主动的加入到城市的监控,对公共设施出现的问题可以立即拍照上传,并根据位置信息显示在地图上,不同用户间可以相互评论。城市管理人员在web端监视到出现的问题,就会派专人去查看、确定问题,之后会有维修人员到现场去处理,并使用App追踪维修进度。当事故解除,市民能查看到问题已处理,可以放心出行。城市管理者也会收到反馈,这样管理者可以对事故做进一步的预测、预防。

首先以事故为主题确立需求,建立异构数据整合架构――即ETL过程设计,包括源数据确立、元数据驱动、ETL流程包。接着选择维度属性建立数据仓库,包括事实表维表属性选取、虚实多维数据库设计。

3.1 异构数据整合架构

源数据――本文的系统主要由三种异构数据源,文本、xls、xml和数据库,文本数据源和XlS文件,一般为业务部门常用数据格式,其中文本数据属于非结构化数据;XML源数据主要是从新浪微博上根据关键字抽取的数据。传统数据库一般为系统内部结构化数据和外部开放API的DBMS数据,主要抽取跨业务的结构化数据。

元数据――是关于数据的数据,通过扫描数据字典来加载源数据库和目标数据库的体系结构,表相关信息等等。元数据库管理模块对元数据库中的元数据提供修改和维护管理并写入日志。中间件是转换过程中的重要部件,减少对数据库的操作,增加转换效率,提高数据操作的可靠性和一致性。见图2。

图2 元数据驱动架构

摘要:《数学课程标准》指出:“数学教学要体现以学生为主体,培养学生的创新意识。”只有创新课堂教学方法――激发学生学习数学的兴趣,激励学生不断探索数学问题,培养学生获取数学知识的能力,培养问题意识,才能在数学课堂教学中真正落实素质教育。

关键词:创新潜能;创新精神;创新能力;创新思维

中图分类号:G633.6 文献标识码:A 文章编号:1992-7711(2013)11-0050

同志曾在两院院士大会上的讲话中明确指出:“在尊重教师主导作用的同时,更加注重培育学生的主动精神,鼓励学生的创造性思维。”这就要求我们教师在教学中努力培养创新人才。作为一名教育者,笔者就数学教学中如何实现创新教育谈几点自己的看法。

一、激发学生兴趣,诱发创新潜能

托尔斯泰曾经说过:“成功的教学需要的不是强制,而是激发学生的兴趣。”兴趣是带有浓厚色彩的心理活动,只有对某个事物有兴趣,就会激发学生学习的热情。在新课标的指导下,在创新性的课堂教学中,我们在课堂中必须让学生产生认知困惑,引起反思,形成必要的认知冲突,从而促成对新知识意义的建构,诱发创新的潜能。因此,在一节数学课的开始上,教师若能善于结合实际出发,巧妙地设置悬念性问题,将学生置身于“问题解决”中去,就可以使学生产生好奇心、吸引学生,从而激发学生的学习动机,使学生积极主动地参与知识的发现,这对培养学生的创新意识和创新能力有着十分重要的意义。如,“相似三角形性质应用”的导入设计为:“被誉为古代世界七大奇迹之首雄伟建筑――埃及金字塔,高146.5米,相当于40层高的摩天大楼,底边各长230米,由230万块重约2.5吨的大石块叠成。如此壮观的伟大建筑,人们是用什么办法测量的呢?古代一位数学家只用了一根已知长度的木棒和一定长的刻度尺就轻易地计算出金字塔的高度,你知道为什么吗?”这样设计,迅速点燃学生思维的火花,使学生认识了数学知识的价值,从而改变被动状态,培养了学生主动学习的精神和独立思考的能力。

二、加强学生探究问题的能力,激发创新精神

重视、引导、培植、爱护学生可贵的发散性思维,让学生发挥丰富的想象力,积极探索求异,坚持独立讲解是鼓励创新的重要途径。弗赖登塔尔曾经说:“学一个活动最好的方法是做。”学生的学习只有通过自身的探索活动才可能是有效的,而有效的数学学习过程不能单纯地依赖模仿与记忆;创造性教学表现为教师不在于把知识的结构告诉学生,而在于引导学生探究结论,在于通性、创造性的训练提出了新的更多的可能性。如,在教学三角函数的应用时,这样设计一个问题:在一个服装厂有大量形状为等腰直角三角形的边角布料。现找出其中的一种,测得∠C=90°,AC=BC=4,今要从这种三角形中剪出一个扇形,做成不同形状的玩具,使扇形的边缘半径恰好都在ABC上,且扇形的弧与其他边相切,请设计出符合题意的方案,并求出扇形的半径。对此,学生可能有很多想法,方案1:以B为圆心,半径为4 的圆;方案2:以A为圆心,半径为4 的圆;方案3:以A为圆心,半径为2 的扇形。还有方案4、5。对学生提供的办法不要急于肯定或否定,教师应让学生通过实际操作和充分讨论,认识到不同的样本得到的结果可能不一样,进而组织学生深入讨论:从这些解释中能作出什么判断?能想办法证实或反驳有这些数据得来的结论吗?这是一个开放题,其目的在于通过学习提高学生的发现问题、吸收信息和提出新问题的能力,注重学生主动获取知识、重组应用,从综合的角度培养学生创新思维。

三、多方引导,培养学生全面的创新能力

创新能力是创新必备的素质,教师必须抓住课堂教学的主阵地,多角度全方位地捕捉时机,创设条件结合具体的教学内容,加强培养与训练。数学作为一门思维性极强的基础学科,在培养学生的创新思维方面有其得天独厚的条件,而开放题的教学,又可充分激发学生的创造潜能,尤其对学生思维变通性、创造性的训练提出了新的更多的可能性。

例如,人教版七年级数学有这样的一道题:已知一条直线上有n个点,则这条直线上共有多少条线段?

这是我们已解决的问题,易得共有条线段,运用这个数学模型,可以解决很多数学问题。

例如:(1)全班50个同学,每两人互握一次手,共需握手多少次?

(2)甲、乙两个站点之间有5个停靠站,每两个站点之间需准备一种车票,则共需准备多少种车票?

(3)如右图,共有多少个三角形?

(4)如右图,共有多少个角?

(5)n边形共有多少条对角线?

(6)在9名班干中选出两名优秀班干,则甲和乙同时当选的概率是多少?

以上一系列问题,都可以通过建立同一数学模型来解决,不仅培养了学生归纳整理的能力,而且深化了学生建模思想和运用数学模型的意识。

实践证明,对例题和习题教学的研究,通过科学合理地使用教学素材进行一题多变教学,能较好地培养学生思维的广阔性、独立性和创造性,促使学生形成良好的思维习惯和品质,为培养学生的个性特征和创新思维能力创造更好的环境。

四、强化思维训练,激活创新思维

在初中数学教学中,培养学生的创新思维能力,按照不同的教学内容,我们可采用不同的教学方式,以针对性提高学生创新意识的能力。

1. 利用“错题”资源进行思维训练

在数学解题中采用“错题”资源就能够不断对解题的思路及结果进行完善,不断找到新方法、新思路。如在二次根式的练习中有这样的一题:已知a为实数,化简:■-a■,阅读下面李华的解答过程,请判断是否正确?若不正确,请写出正确的解答过程:

数据库设计第5篇

摘 要:分析了基于Internet的产品异地并行设计系统中的数据流特点,对用于产品异地并行设计的Web数据库结构、与Internet的接口技术以及确保数据安全的技术方法进行了较为深入的研究。

关键词: Internet 异地设计 Web数据库

The Database Design Based On WEB Used In Remote Concurrent Design

Abstract: the paper analyses the database characteristics used in the remote concurrent product design system based on Internet, deeply researches the database structure, interface and the method of the data safety.

Keywords: Internet, remote concurrent design, database based on Web

近年来,随着Web技术的蓬勃发展,人们已不满足于只在浏览器上获取静态的信息,想要通过它发表意见、查询数据。随着电子商务的普及人们开始参与一些网络商务活动,这就迫切需要实现Web与数据库的互连[1]。产品异地并行设计对数据的要求有一定的特殊性,主要有(1)产品数据多种多样。产品设计,特别是机械产品设计常常是大型而又复杂,在异地通过不同的设计小组,按不同的分工设计同一产品,所要管理和通讯的数据类型随着分工的不同而有不同的表现形式,如常规的数字组成的数据集,以图形、图象形式表达的产品模型数据,以文字形式描述设计的文档,还有图表、公式等形式,复杂多样。(2)产品数据交换频繁,流量大。产品设计是一个协同工作的创造性集体智慧凝聚的过程,要使设计顺利进行,分布在异地的不同设计小组之间就要经常性地进行数据交换,并且有些形式表达的产品数据是较大的文件。(3)产品数据的一致性要求高。分工合作的不同设计小组之间的设计任务是彼此关联,互相依赖的。如果其中一个数据改变了,相关联的数据必须跟着改变,在Web数据库设计时必须考虑数据的一致性问题。(4)产品数据的并发性访问频繁。由于异地产品设计的特殊属性,数据的并发性访问非常频繁。所以,进行基于Internet的产品异地并行设计的Web数据库设计与一般的电子商务不同,要充分考虑以上属性。本文结合我们近期开发的机械产品异地并行设计系统(RCDS, Remote Concurrent Design System),综合比较了多种当今流行的网络数据存取技术,设计出可靠安全的数据库系统。

1 Web数据库连接方案

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程序中的应用

2 Web数据库管理系统

常见的数据库类型有面向对象的数据库(OODB)和关系型数据库。OODB对主流数据库应用开发来说是相当新颖的,使用OODB使应用程序中的数据对象与现实世界中的对象一一对应,面向对象数据库扩充了对象模型。一个常用的对象模型是由对象数据库管理组(ODMG)开发出来,具有比传统的关系数据库更优越的性能,但毕竟在目前还是一种探索阶段,暂时还未有相应的技术普及。

关系数据库已经是数据库体系的世界标准。当开发一个数据驱动应用程序时,大多数情况下用户需要访问网络(如Internet、Intranet等)上的数据信息,就RCDS就是建立在网络的信息通讯之上,是完全的客户机/服务器应用程序。

SQL Server是一个可缩放、高性能的关系型数据库管理系统(RDBMS),它的设计是为了满足分布式客户/服务器计算的需要,允许客户应用程序使用几个特定的工具和技术控制从服务器检索的数据。这些包括触发器、存储过程和规则的选项。因此,系统采用MS SQL Server7.0作为后台数据库。

3 Web数据库结构

数据模型通常有层次模型、网状模型、关系模型及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

… …

4.2产品数据一致性处理

数据的安全因素除了前面所提到的并行控制之外,还要考虑事务处理。网络数据库有其不同的地方,例如:假设某个时间有一个设计人员在你的站点上索取一些设计信息,有关的设计信息存储在两个表中。一个表用来保存该设计者的信息,另一个表包含了要索取的设计信息。该设计人员的信息已经输入了第一个表中。但是,就在这时,发生了意外情况,一道闪电击中了你的服务器,使第二个表没有被更新。在这种情况下,一个健壮的系统就必须保证最后的结果是两个表都没有被更新过。这时候事务处理就发挥了重要的功效。

使用事务处理,你可以防止第二个表没有被更新而第一个表被更新的情况出现:当一组语句构成一个事务处理时,如果一个语句没有执行成功,则所有的语句都不成功。不管是针对多个表,还是进行表内多个记录的操作,它们所需要的安全保证是一样的。事务处理的实现代码如下:

… …

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’)”

mitTrans //事务处理结束

MyConn.Close

… …

在上面这段代码中,用BeginTrans方法和CommitTrans方法来标记事务处理的开始和结束。在BeginTrans方法被调用之后,CommitTRans方法被调用之前,不管出现什么错误,两个表都不会被更新,在这个过程中所有处理的数据都保持了完全可靠的一致性。

5 结论 ADO是由微软公司推出的以ActiveX技术为基础的数据存取方法。它的主要特点是使用更加容易,访问速度更快,支持建立各种客户/服务器模式与基于Web的应用程序。RCDS正是采用ADO 所基于的OLE DB技术,可以对电子邮件、文本文件、数据表格等各类数据通过统一的接口API接口进行存取,是远程数据存取的一个主要发展方向。

RCDS的后台数据库采用的是Ms SQL Server的最新版本7.0,它的高性能和周密的数据管理措施是系统稳定的保证。除了数据库工具本身所具备的安全保障措施,系统的开发过程中从代码实现及用户访问等考虑了更为具体的数据安全措施:并发控制和事务处理。

数据库设计第6篇

本文以面向文档的NoSQL作为数据持久层,面向文档的NoSQL数据库的数据结构设计相对于关系型数据库来说容易许多,在对数据进行查询、数据库操作接口方面都有很大的优势]。因为面向文档的NoSQL数据库不支持多张表的JOIN操作,因此在对面向文档的NoSQL数据集合进行设计的时候需要考虑到这方面的因素。本监测系统主要的业务功能可以分为3个模块,分别是小区信息查询模块、报表统计模块和用户、终端管理模块,因此,数据集合的设计同样从这三个方面进行设计。各个数据集合之间的关系如图1所示。考虑到在对数据表进行设计所依据的原则基本一致,因此以下仅对小区信息查询模块的数据表设计进行着重分析。设计数据模型需要结合系统的特点进行分析。此系统主要实现的功能是对小区天线参数信息进行保存、管理,并以友好的界面展示给用户,并响应用户的各种操作。因此,在大部分的操作中,存储天线实时参数的ANTENNAARGS表会产生大量的插入操作,本文根据各个表的不同读写比进行了设计,如图2所示。本文将天线表、区域表以内嵌的形式放入了小区表,将天线参数表设计成单独的集合,并以引用的方式指向了小区表主要是考虑到天线参数集合是被访问最频繁的表,会产生大量的读写操作,因此在小区集合与天线参数集合之间采用的是范式化的模式。其中,天线工参表(ANTENANARGS表)用来存储从各个采集终端传输至管理系统的小区天线实时数据信息,具体如表1所示。小区信息表(CELL表)用来存储各个小区的地址、天线相关参数详细信息,如表2所示。除了上述表之外还有采集终端表(TERMI-NAL)、天线信息表(ANTENNA)和告警表(ALARM-REPORT)等。数据库运行时,自动将所对应的数据存入相应表中。

2数据库自动分片设计

管理系统在运行中会产生大量的写操作,进而带来频繁的磁盘I/O操作,在大数据下,最好采用将数据库分布在多台服务器上,即分片[7]。本文采用Auto-Sharding(自动分片)及Replic-Set(复本集)相结合的方式来减轻单个数据库服务器的负载,即在每台Server上各自运行一个实例,组成一个Replic-Set,最后再各运行一个实例,组成ConfigServer。直接执行Addshard操作即可增加分片以缓解服务器的压力,实现动态扩展。分片的实现重点在于片键设计。本文将保存天线参数信息的集合声明了一个复合片键{Lacci:1,Day:1}。当来自不同的小区(可以根据Lacci进行判断)向集群系统插入数据时,可以预计到在大部分情况下,同一小区的数据会落在单个块或片上。

3数据库查询的实现

数据查询功能为本数据库设计的重要功能之一。数据库将小区信息、天线参数等相关的数据信息根据用户的要求,以界面或报表的形式全部或部分的显示给用户。基于本数据库的设计,用户通过数据查询菜单进入相应查询界面,获取小区信息、终端信息及告警信息等。实现“天线工程参数查询”功能的工作流程如图3所示。为了实现小区天线参数查询功能,客户端需要向数据库发送2次请求,用户根据需求,向控制器发送查询请求,控制器处理查询命令,对相应的小区进行信息查询,待小区返回信息后,将用户的查询命令发送至对应小区,根据需求读取有用信息,并返回给用户。跟关系型数据库相比,由于省去了大量的多表连接操作,实际上查询的效率要高于基于关系型数据库的多表连接查询。查询工作的SQL语句如下。

4数据库备份与恢复

数据安全在数据库设计中有很重要的地位。在各种意外情况下,如计算机硬件故障等,对数据库进行备份和恢复能够保障数据的完整性和安全性,使得数据损失降到最小[8]。本数据库设计的备份选用的是副本集的方式[7]:在主节点上进行操作,写入的数据被一步地同步到所有的从节点上,并从主节点或从节点上读取数据,如果主节点由于某些原因断线,会自动将一个从节点提升为主节点。在查询分析器中运用SQL语句完成数据库的备份和恢复。在数据库管理界面中,用户通过数据库备份与恢复功能进行相应操作,确保数据的正确行和完整性。

5结束语

数据库设计第7篇

关键词:计算机;网络设计;关系数据库

在经济全球化这一趋势的影响之下,计算机被运用到人民平时的生活与工作中,人类开始走入到信息时代。随之国家关系数据库这一技术也被广泛的普及到各个行业中,尤其是在科学技术快速发展的当下,所以,唯有持续的提升关系数据库这一技术本身的质量与水平,才可以推动国家计算机这一网络技术更加稳定的发展。

1关系数据库技术

1.1关系数据库这一技术的内涵

关系数据库这一技术,就是在原来数据库技术这一基础之上,实施的创新与改造,把新型技术导入其中变成辅助的方式,特别是把关系数据库这一技术大面积的普及到计算机网络的设计之中,其具有的优势是非常明显的。最开始的关系数据库这一技术通常是用于部分表格与模型的制作,借助持续的充实其内容与形式,创建一个数据库。在那个时候的数据库技术就拥有了描述特征,之后人民通过后期的操作与整合就可以把其存下来,所以,在人民提出数据期间,是没有必要去进行组合重造的,主要把所需的数据实施管理既可以了,这样也可以提升关系数据库这一技术的质量与水平,让其拥有某种发展的特性,国家最为常用的数据库包括:SQL、access这些。

1.2关系数据库这一技术具有的辅助功能

在进行计算机的网络设计时,关键数据库这一技术主要的功能是辅助,其通常是给计算机的网络设计提供服务,特别是关系数据库具有很大的容量,并且还承载着多样化的数据形式,在这期间大部分数据都承载着计算机的网络设计内容,进而进一步优化计算机的网络设计方式。在进行关系数据的输入时,应该先针对这部分数据实施赋值之后在进行相应的整合重组,这样才可以保障计算机的网络设计能够得到固定的参数与相应的参考信息,进而提升计算机这一网络设计的质量与水平。国家之前数据库的输入方式一般是以人工的形式进行输入,所以,极易出现很多的错误,然而发展到了关系数据库这一技术就能够把其和计算机的网络设计进行合理的结合,这样可以把其中包含的各项管理数据进行正确的录入,进而促进信息资源的有效传播与发展,特别是在运用网络数据库期间,还可以转换其中包含的参数信息,精简数据发函所用的程序与过程,如果发现有错误可以快速的进行处理与解决,在这期间持续的改变数据信息,进而创建具有着高效性与稳定性的数据传递平台。

2计算机的网络设计中关系数据库这一技术的运用原理

因为国家数据库这一技术具有很多种类,所以,在计算机网络的设计过程中,应该依据各种模式分成各种类型,比如,模型数据库这一技术,层级数据库这一技术、网络数据库这一技术与关系数据库这一实技术等,然而其中最健全、最综合的是关系数据库这一技术,由于其具备非常先进的数据模型,可以执行各种各样的繁琐任务,并且,其运用的系统与操作比较简单、便捷,这样不只是可以给予人民已经做好的编程程序,并且还可以把其广泛的普及到计算机的网络设计之中。在关系数据库这一技术的发展历程中C语言发挥着至关重要的作用,其不只是可以达成关系数据库在发展期间提出的要求,还可以改善计算机的网络设计成果,关系数据库的基本原理有:因为在计算机的数据软件中通常包含着连接性与访问对象这两方面,这两方面全是单独面向众多的计算机用户的,然而其中包含的开放数据库可以对SQL语言实施自由定义,还可以对于C语言实施定义,这样就能够借助C语言展开访问,然而其中添加了驱动器,在很大程度上减少了数据库对其的访问频率。然而数据库的访问对象则是提供着数据库全部的信息,在访问对象形成很多结构同时建立相关体系后,就可以完成多个接口之间的访问,进而提升数据库这一技术的质量与水平,C语言也可以顺利的脱离软件实施编程,进而让整个数据库变得更加独立,有效的发挥出其具有的优势。

3当下关系数据库这一技术存在的问题以及解决的措施

3.1关系数据库这一技术存在的问题

即使国家关系数据库这一技术已然发展到了一定阶段,同时也取得了实质性的成效,被广泛的普及到计算机网络的设计中,然而其还有具有很多问题未能解决,主要表现在这几点。首先,关系数据库的管理力度不够。在关系数据库的发展历程中,大部分技术工作者对其的管理不是很重视、管理力度不够,同时也没有充分的了解到其发展具有的重要性,也未实施进一步的了解就展开相关的操作或者是运用,进而造成整个操作的过程不够规范,同时也有大部分有关工作者即使已经察觉到关系数据库隐藏的问题,然而却并未实施相应的修改与归纳,进而减少了对系统数据的访问频率,这部分缺陷还会造成关系数据库处于危险的境地,极易被计算机病毒所侵蚀。其次,关系数据库工作人员的操作不够规范。现如今国家关系数据库的工作人员操作不够规范,带来了病毒入侵、数据丢失与操作系统失去联系这些难题,这不只是会影响关系数据库具有的安全性与稳定性,还可能阻碍着关系数据库这一技术的水平提升,严重的影响到其在计算机的网络设计中运用。倘若未进行良好的防范就可能为黑客提供可乘之机,进而在很大程度上威胁着计算机中数据库具有的安全性与稳定性,有着巨大的危害。

数据库设计第8篇

关键词:Informix;数据库安全;审计日志

中图分类号:TP311.138 文献标识码:A

1 引言

数据库安全审计是保证数据库安全性的有效手段,它的作用在于当数据被恶意修改、数据复制不正常或数据库系统出现问题时,数据库管理员可以通过安全审计,跟踪数据的修改过程,确定数据被破坏的程度和范围,并制定相应的解决方案,从而最大限度地缩短恢复周期,将损失降低到最小。

数据库安全审计源于信息系统的安全审计,就是对系统安全进行审核、稽查和计算。概括的讲,安全审计就是记录一切(或部分)与系统安全有关活动的基础上,对其进行分析处理、评估审查,查找系统的安全隐患,追查造成安全事故的原因,并做出进一步的处理。数据库安全审计是创建一个用于监测非正常的或可疑的活动的事件记录,或者提供一个重要活动及操作者的记录。由于可审计事件的粒度一般比较小,因此审计很容易在短时间内产生大量的数据,然而通常情况下系统受到攻击的可能性并不大,这些数据所体现的操作绝大多数都是合法的。海量的数据给审计数据的人工分析和机器自动分析都带来了极大的困难。目前,针对Informix数据库的审计主要是Informix系统本身带有的安全审计模块,它可以完成对数据库的在线监控,能将数据库操作记录按照时间顺序记录在日志文件中,但是这些记录对于使用者来说,内容繁杂,不利于数据库管理人员的分析和处理。

本文通过结合安全审计模块设计实现了一个Informix数据库安全审计系统,该审计系统采用采集和分析分离的结构并设计传输协议格式,能针对多个日志数据源进行同时处理。通过对Informix数据库审计日志文件格式的分析,能够对数据库的操作按照用户会话过程进行还原,同时设计多级别的安全规则可以对相应的数据库操作给出不同级别的警告。

2 Informix数据库审计日志文件分析

为了提取审计日志文件的内容,我们首先分析了审计日志的格式。审计日志以字符形式直接存储,对每一个用户配置好的数据库操作行为都存储成一条日志文件记录。

每条记录分为两个部分,第一部分是日志头,第二部分是附加的信息列。

其中日志头包含八个字段,含义如表1所示。

附加信息列(Additional fields)则是根据不同的事件类型而有所不同,一般包括数据库名、表名等信息,典型数据库操作时记录的附加信息列如表2所示。具体的可参见审计事件域表。

例如,以下是从审计日志文件中截取的一条审计记录:

该记录表示主机名为ZHANGWEI-DB的客户端在2007年4月3日16:15:33登录服务器名为OLZW的数据库服务器,登录的用户名为Informix,该用户对sysmaster数据库的表号为221的表中的262行进行了插入行数据的操作。

3 审计系统结构

为了能支持对多个日志源的审计分析,将审计系统设计成采集器和分析器两部分,如图1所示。采集器负责采集原始的Informix数据库审计日志数据,可以完成实时采集和定时采集的功能。分析器负责对采集器发送给它的数据进行日志解析、操作还原、会话关联和审计结果输出,并进行安全规则匹配和统一格式处理。系统中设计了相关的通信协议完成采集器和分析器之间的数据传输。

4 审计系统设计与实现

4.1 采集器

Informix数据库审计系统的审计客体主要是数据库的审计日志文件,采集器需要安装在数据库服务器上,负责读取审计日志文件中的数据,实时采集是通过设定相应的时间间隔对日志文件中的增量数据进行采集,定时采集则可以指定需要分析的时间段,完成对审计日志文件中相关时间内数据记录的采集。采集得到的数据形成相应的字节流,按照一定的协议格式通过TCP连接传送给分析器。

4.2 网络传输协议

在采集器和分析器间,设计了相应的信令包和数据包,分别完成传输过程中的参数协商和日志数据的传递。

传输的具体过程如图2所示。

首先由采集器发出连接请求,分析器收到该连接请求之后,发出响应包,与采集器协商编号、数据库类型和文件名信息,之后分析器将本次传输的起始位置发给采集器,采集器根据这个位置信息,决定从何处开始传输日志数据,以保证传输数据的完整性和正确性。之后就开始传输,当传输完毕时,采集器发送一个断开连接的请求包,分析器收到该消息包,则断开与采集器的连接。

4.3 分析器

分析器是审计系统的核心,主要完成的功能是接收日志采集发送过来的审计日志数据,解析还原出数据库操作并实现会话关联,最后对分析的结果进行规则匹配,显示告警信息。分析器的结果包含系统告警信息和还原的用户会话过程,即每个用户在任何一次登录退出过程中的所有数据库操作行为记录。

4.3.1 日志解析

日志解析的过程首先是读取一条审计日志记录,完成记录中操作信息的还原,然后完成多条记录的关联,最后得到一个用户在一次登录退出之间的操作。

由于在Informix审计日志记录中,SQL操作是采用字母缩写来表示的,如insert、delete、update分别记为INRW、DLRW、UPRW。同时日志记录中操作的对象(表或视图)也是采用数字编号来表示的。为了得到更加直观的审计结果,日志解析首先要将这些缩写和编号转换成对应的SQL操作名和相应的表名或视图名。

具体实现上,通过读取审计日志头中Event mnemonic字段的内容就可以读取操作缩写名,直接还原SQL操作。对于对象名称的还原,可以有两种方法,一种是通过查找数据库系统表systable可以获取所有的对象名和对象编号的对应关系。另一种方法是,通过解析审计事件为ACTB的日志记录来获取对象名和对象编号的对应关系。在In-formix数据库操作中,每个对表或视图的操作首先都会产生一条ACTB的审计日志记录,该记录的附加信息列中带有对象名和对象编号两个域,分别描述下一记录的操作对象名称和对象编号。由于第一种方式需要对数据库系统表进行查找,会影响数据库系统本身的效率和性能,所以我们 的审计系统中采取了第二种方式。

而对于用户登录的操作,在Informix的审计日志中,审计事件缩写为STSN时,表示启动新的会话,也就是一个新的用户登录。在这条审计记录中会记录下会话开始的时间、进程ID和用户名等信息,我们可以通过解析该记录内容,获取用户的会话信息。

由于在审计日志记录中,属于同一会话的操作,其主机名、进程号和用户名三个字段是相同的,因此可以通过检测每条记录的这三个字段来进行匹配。虽然在Unix/Linux系统中,存在进程号时间片轮转的问题,即系统的进程号在一定的时间后会发生轮转,从而使得进程号发生重复。但是进程号轮转时出现同一进程号的前提是前一个进程已经结束了,也就是相当于说该会话已经完成,因此并不会影响会话关联的正确性。

4.3.2 统一格式处理

出于通用性和扩展性方面的考虑,审计系统对日志解析的结果使用统一的XML数据格式进行处理和保存。下面是一段日志解析后的保存结果示例。

其中,Session代表会话,Operation代表数据库操作。

在Session记录中,SID表示会话号,PID表示进程号。属于同一会话的操作被归于一个会话号之下。在Opera-tion记录中,Op表示数据库操作行为类型,Timestamp表示操作时间,ObjectlD表示操作对象标识号,ObjectName表示操作对象名,RowID表示行号,DataBaseName表示数据库名,Status表示操作是否成功。

4.3.3 安全规则关联匹配

为了实现安全审计的目的,系统设定了安全规则,规定了三个安全等级,级别越高,表示存在的安全威胁越大。系统分别对用户多次登录尝试、用户授权、数据表修改、记录增删等行为给出安全警告。

安全规则的保存采用了XML格式,可以由管理用户按照需求进行添加和删除。以下是一段安全规则的示例。

其中标签名代表数据库操作名,Status为操作状态,Warn-ingLevel为警告级别,Suggestion为应对策略和建议。如上例中第4条规则表示连续三次登录失败,警告级别为3。

在进行安全规则匹配时,遍历日志解析结果文件,对每条记录结果取出操作名和成功状态,与安全规则库进行匹配,完成相应警告输出。

5 系统测试

系统测试在分布式的环境下进行,日志采集器运行在Windows平台的Informix数据库服务器上,日志分析器运行在Linux平台。系统第一次运行时,需要对审计日志、分析结果文件名称和存放位置、通信地址和端口等进行相应的配置。

采用实时测试模式,系统启动以后,分析器会一直循环等待接收采集器发送过来的日志数据。我们以一个大小为5M的审计日志文件作为测试数据源,审计系统在不到10秒的时间内完成对该文件的分析,并给出了相应的结果。结果表明,系统能很好地完成Informix数据库操作的实时审计,将用户的数据库操作行为按照会话的过程清晰地展现出来,同时能对这些操作行为给出相应的警告提示信息。分析的部分结果截图如图3所示。

从图3可以看出,用户名为informix的某用户从13:02:26开始登录到13:07:06退出登录,其中进行了创建用户表test_621等操作。

系统安全关联匹配的部分结果截图如图4所示。

从图4可以看出,对应图3的日志分析结果,审计系统对用户informix的登录,创建表,插入行数据都给出了相应的警告提示信息,管理员用户可以很明确的做好对应的操作处理。