数据建模与访问

2024-08-31

数据建模与访问(精选十篇)

数据建模与访问 篇1

OGSA-DAI即开放网格服务架构———数据存取和集成(Open Grid Service Architecture-Data Access and Integration)是一种中间件,使得现有数据资源,如关系数据库和XML数据库能够集成到网格环境中的架构。

OGSA-DAI项目是由UK Database Task Force提出构想,并紧密地和全球网格论坛数据访问和集成服务工作组以及Globus团队一起工作。总体上,OGSA-DAI与DAIS相符合,它也努力成为DAIS网格数据库服务推荐标准的第一个参考实现。OGSA-DAI的目标是致力于构建一个支持访问大型的、基础的静态数据库的中间件系统,这个中间件是带有许多扩展点的工具包,它为开发者提供了便利,以适应各自特定的不同的需要。通过OGSA-DAI的接口,不同的、异构的数据源和资源被视为逻辑上的单一资源。它还允许这些资源在OGSA的框架内进行集成。

二、OGSA-DAI的体系结构

OGSA-DAI的体系结构[2]包含许多层,每层都服务于不同的目的,这个体系结构的可表示成如图1所示。

OGSA-DAI的层次结构包括:

1、数据层

由可以通过OGSA-DAI暴露使用的数据源组成,包括关系数据库,XML数据库,以及文件目录系统。

2、数据层与商业逻辑层接口

这个接口在数据层和商业逻辑层之间的两个方向都有通信,它是使用数据资源访问器进行通信的。每一个数据服务都有它自己的数据资源访问器,这个数据资源访问器用于控制对内部资源的访问。这个组件是一个扩展点,以便用户能够开发他们自己的数据资源访问器以连接新类型的数据资源。

3、商业逻辑层

是OGSA-DAI的核心功能层。由数据服务资源组成,每个数据服务资源可以暴露多个数据源。商业逻辑层负责对客户端请求的处理,数据源的具体连接、访问、管理和交互,准备返回客户端请求结果,并负责数据转换和传输管理等。

4、商业逻辑层与表示层接口

这个接口在商业逻辑层和表示层之间的两个方向通信。它支持在商业逻辑层内对OGSA-DAI功能的调用,这种方式独立于特殊的Web环境。事实上,同样的接口甚至能被在任何Web环境之外的独立的客户端应用程序所使用。当SOAP请求到达OGSA-DAI WSRF或者WSI数据服务时,这个接口被用于传送来自于商业逻辑层或到达商业逻辑层的信息和指令。

5、表示层

通过Web或网格的接口将OGSA-DAI的功能封装暴露给外界。包括了WSRF和WSI两种实现,每种不同的实现,都有相应的WSDL和XML Schema来描述Web或网格使能的接口。表示层是数据使用者的使用接口,通过跨平台跨语言的Web Service提供对数据的访问。

6、客户端

客户端提供了对数据服务的访问。通过相应的数据服务与数据源进行交互,根据表示层所描述的服务接口,OGSA-DAI客户端可相应地选择WSRF和WS-I标准。

三、OGSA-DAI的服务

OGSA-DAI服务体系结构采用了三种主要的服务类型[1]:

1、网格数据服务(Grid Data Service,GDS)

是一种严格意义上的Web服务,为用户提供了存取、查询、更新数据资源以及其它相关的数据操作的接口,这种接口是基于文档形式提供的。它接收客户端提交的执行文档,对数据资源执行在执行文档中要求的操作,然后将执行结果以响应文档的形式返回给客户端。通过这项服务可以访问某个数据资源(关系数据库、XML数据库或者存储在普通文件中的数据)。

2、网格数据服务工厂(Grid Data Service Factory,GDSF)

网格数据服务工厂是具有某一类共同特征的服务的集合体,负责生成网格数据服务GDS。这项服务用于创建一个GDS实例,来访问特定的数据资源。

3、网格服务组注册器(Service Group Registry,DAISGR)

该服务提供了一种网格环境中服务的注册机制。网格服务工厂GDSF负责向服务组注册器提交注册信息,通过对服务组注册器的查询,也可以获得满足符合访问要求的GDSF的句柄指针(GSH)。这项服务用于找到所需要的网格数据服务工厂。

四、结束语

本文首先简单介绍了网格数据库访问与集成,接着从四个层次分析了OGSA-DAI的体系结构,最后总结了OGSA-DAI服务体系结构采用的三种主要的服务类型,为OGSA-DAI的进一步研究奠定了理论基础。

参考文献

[1]刘建新,阎保平.OGSA-DAI体系结构及其关键技术[J].计算机应用,2004.

[2]Shirley Crompton,Brian Matthews,Alex Gray,Andrew Jones and Richard White.Acces-sing Web Database Using OGSA-DAI in BDWorld[J].Knowledge and data management in GRIDS,2007.

[3]南凯,阎保平.扩展OGSA-DAI的数据集成框架及原型[J].计算机工程,2007.

[4]Databases and the Grid OGSA-DAI Architecture&Status,Malcolm Atkinson OGSA-DAI Chief Architecture,2002.

数据建模与访问 篇2

实验课成绩

学 学 生 实 验 报 告 书

实验课程名称 数据分析与建模 开 开 课 学 院 管理学院 指导教师姓名 鄢 丹 学 学 生 姓 名

学生专业班级 信管

2018 —2019 学年

第1

学期实验报告填写说明

1. 综合性、设计性实验必须填写实验报告,验证、演示性实验可不写实验报告。

2. 实验报告书 必须按统一格式制作(实验中心网站有下载)。

3. 老师在指导学生实验时,必须按实验大纲的要求,逐项完成各项实验;实验报告书中的实验课程名称和实验项目 必须 须与实验指导书一致。

4. 每项实验依据其实验内容的多少,可安排在一个或多个时间段内完成,但每项实验只须填写一份实验报告。

5. 每份实验报告教师都应该有签名、评分表及实验报告成绩。

6. 教师应及时评阅学生的实验报告并给出各实验项目成绩,完整保存实验报告。在完成所有实验项目后,教师应按学生姓名将批改好的各实验项目实验报告装订成册,构成该实验课程总报告,按班级交到实验中心,每个班级实验报告袋中附带一份实验指导书及班级实验课程成绩表。

7. 实验报告封面信息需填写完整,并给出实验环节的成绩,实验环节成绩按其类型采取百分制或优、良、中、及格和不及格五级评定(与课程总成绩一致),并记入课程总成绩中。

实验课程名称:_ 数据分析与建模__

实验项目名称 实验一

简单的数据建模 实验 成绩

实 实 验 者

专业班级

组 组

别 无 无 同 同 组 者 无 无 实验日期 2018 年 年 9 月 月 26 日 第一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)

一、实验目的、意义 本实验旨在通过资料查阅和上机实验,使学生加深了解数据分析与建模的理论与方法,掌握典型的数据模型的建立与使用。

二、实验基本原理与方法 数据分析的理论,最优化模型的建模方法。

应用 Excel 的方法。

三、实验内容及要求 1、应用 Excel 建模分析 某学院有 3 个系,共有学生 200 人,A 系 103 人,B 系 63 人,C 系 34 人。现在成立一个由 21 名学生组成的学生会,该如何公平地分配席位? 实验任务:用 利用 Q 值法分配席位,并且在 Excel 中进行 Q 值计算。

(提示:参考讲义中的计算过程。)、单变量最优化 一个汽车制造商售出一辆某品牌的汽车可获利 1500 美元,估计每 100 美元的折扣可以使销售额提高 15%。

(1)多大的折扣可以使利润最高?利用五步方法及单变量最优化模型。

(2)对你所得的结果,求关于所做的 15%假设的灵敏性。分别考虑折扣量和相应收益。

(3)假设实际每 100 美元的折扣仅可以使销售额提高 10%,对结果会有什么影响?如果每 100 美元折扣的提高量为 10%~15%之间的某个值,结果又如何?(4)什么情况下折扣会导致利润降低?

实验任务:请将上述求解过程,除了用导数求解外,再用 用 Excel 建模求解之。

(提示:考虑 Excel 的数据,图形,公式三者的关系;Excel。的函数。参考教材第一章。))

四、实验方案或技术路线(只针对综合型和设计型实验)

按照实验任务要求,理论结合实际的实验方案,巩固课程内容,温故知新,查遗补漏,夯实理论基础,提升实验动手能力。

技术路线是,从整体规划,分步骤实施,实验全面总结。

第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)、应用 Excel 建模分析 1.分配方案:

第一步:对每个单位各分配一席; 第二步:当分配下一席位时,计算在当前席位份额下各单位的 Q 值,并比较相应 Q 值的大小,将下一席位分配给当前 Q 值最大的一方; Q 值计算公式为:

(其中,Qi 表示单位 i 的 Q 值,Pi 表示单位 i 的人数,Ni 表示单位 i 的当前席位数)

第三步:重复执行第二步,直至席位分配完为止。

2.实验步骤:本实验的实验工具为 Excel(1)首先,打开 Excel 新建一个表格,并做好前期的基本数据输入工作,表格内容包括三部分:

a.已知的每个系的人数和所求的每个系最终分得席位数; b.在不同的已分配席位数的情况下,三个系 Q 值的取值; c.席位分配过程:给席位编号,标注出每个席位的分配结果; 完成后结果如下图所示:

(2)然后,对每个系均分一个席位后,开始对第 4 个席位进行分配。此时各系已分配席位数均为 1,计算此时各系的 Q 值并比较大小:

a.计算 A 系的 Q 值,公式如图所示:

b.计算 B 系的 Q 值,公式如图所示:

c.计算 C 系的 Q 值:

Q 值大者得席位,所以第 4 个席位分配给 A 系。

(3)然后对第 5 个席位进行分配,由于只有 A 系的已分配席位数变为 2,所以此时只需计算 A 系的 Q 值,再比较各系 Q 值大小即可。A 系 Q 值的计算公式只需将原来的 A6 都换成 A7即可,如下图所示:

Q 值大者得席位,所以第 5 个席位分配给 B 系。

(4)然后对第 6 个席位进行分配,由于只有 B 系的已分配席位数变为 2,所以此时只需计算 B 系的 Q 值,再比较各系 Q 值大小即可。B 系 Q 值的计算公式只需将原来的 A6 都换成 A7即可,如下图所示:

Q 值大者得席位,所以第 6 个席位分配给 A 系。

(5)采用类似上述的方法(当已分配席位数加 1 时,Q 值的计算公式中 A 后面的数字也加 1 即可)依次对后面的席位进行分配,直到第 21 个席位分配完毕。

最终 A 系分得席位 11 个,B 系分得席位 6 个,C 系分得席位 4 个。最终分配结果及分配具体分配过程如下图:

6、单变量最优化((1)多大的折扣可以使利润最高?利用五 步方法及单变量最优化模型。

1.提出问题 【全部的变量包括】

一辆某品牌汽车的成本 C(美元)

一辆某品牌的汽车的折扣金额 100x(美元)

没有折扣时一辆某品牌汽车的售价 P(美元)

有折扣时一辆某品牌汽车的售价 p(美元)

没有折扣时的销量 Q(辆)

有折扣时的销量 q(辆)

没有折扣时的销售额 R(美元)

有折扣时的销售额 r(美元)

有折扣后的利润 L(美元)

【关于上述变量所做的假设】

P – C = 1500 p = P – 100x q = Q *(1 + 0.15x)L = q *(p – C)x >= 0 【目标】求 L 的最大值 2.选择建模方法 本题为单变量优化问题,则建模方法为:设 y = f(x)在 x >= 0 的区间范围内是可微的,若 f(x)在 x 处达到极大或极小, 则 f ΄(x)= 0。

3.推导数学表达式 L = q *(p – C)= Q *(1 + 0.15x)*(p – C)= Q *(1 + 0.15x)*(1500-100x)

= Q *(-15 x^2 + 125x + 1500)记 y = L 作为求最大值的目标变量,x 作为自变量,原问题就化为在集合 S={ x : x ≥0}上求以下函数的最大值:

y = f(x)= Q *(-15 x^2 + 125x + 1500)(Q 为非负常量)

4.求解模型 在本题中,即对 y = f(x)= Q *(-15 x^2 + 125x + 1500)在区间 x >= 0 上求最大值,Q 为非负常量。当 f ΄(x)= Q *(-30x + 125)= 0 时,解得 x ≈ 4.17 故 y = f(x)= Q *(-15 x^2 + 125x + 1500)在 x = 4.17 时取得最大值。

5.回答问题 答:417 美元折扣可以使利润最高。

【 【Excel 建模求解】

1.打开 Excel 新建一个表格,分别列出 X 栏和 Y 栏。X 栏依次写入 0,1,2,3 „„ 等等,Y 栏第一项,根据公式,将 x 以 A2 替代,写入公式“=-15*A2*A2+125*A2+1500”(此处假设 Q = 1),其余的 Y 栏数据,采用拖曳复制的方式复制粘贴公式。当 X 栏有值时,Y 栏就有对应的值。

2.选中 X 栏和 Y 栏的数据,点击菜单栏的【插入】然后插入【散点图】,得到如下图表:

由表和图可知,当 x 在 4 附近时,y 取得最大值。将 x 的取值区间缩小到[3.5 , 4.5] , 再绘出一次散点图,如下:

由上述表和图可知,当 x = 4.2 时,y 取得最大值。

回答问题:大约 420 美元折扣可以使利润最高。

((2)对你所得的结果,求关于所做的 15% 假设的灵敏性。分别考虑折扣量和相应收益。

设销售额提高百分比为 r 1.折扣量 100x 关于销售额提高百分比 r 的灵敏性(故考虑 x 关于 r 的灵敏性即可)

a.粗分析 前面已假定 r =15%,现在假设 r 的实际值是不同的,对几个不同的 r 值,重复前面的求解过程,可以得到对问题的解 x 关于 r 的敏感程度的一些数据。

即给定 r,对 y = f(x)=(1 + r x)*(1500-100x)(此处假设 Q = 1)求导,得到 f“(x)=-200rx + 1500r-100,令 f”(x)= 0,可得相应 x =(15r-1)/2r , 故折扣量 100x = 50(15r-1)/r ,采用

类似第(1)问的 Excel 建模方法,绘出折扣量 100x 关于销售额提高百分比 r 的散点图。

由上述图表可看到折扣量 100x 对参数 r 是很敏感的。即如果给定不同的销售额提高百分比r,则折扣量 100x 将会有明显变化。因此,r 的取值要合适、合理,所做的分析才有意义。

b.折扣量 100x 对销售额提高百分比 r 灵敏性的系统分析 前面已计算出,使 f“(x)=0 的点为 x =(15r-1)/2r,若要 x≥0,只要 r >= 0.067 , 最佳折扣量100x可由x =(15r-1)/2r即100x = 50(15r-1)/r给出,对 r < 0.067 ,在[0,+∞)上都有f”(x)<0,最佳折扣量为 x=0。下图给出了 r =0.05 的情况(此处假设 Q = 1):

c.折扣量 100x 对 r 的灵敏性的相对改变量:

由 x =(15r-1)/2r 可得在点 r=0.15 处,dx/dr = 1/(2 r^2)

S(100x , r)= S(x , r)=(dx/dr)*(r/x)= 1/(2rx)= 0.8

即若销售额提高百分比 r 增加 1%,则导致折扣量 100x 增加 0.8%

2.收益(即利润)L 关于销售额提高百分比 r 的灵敏性 a.粗分析 L = q *(p – C)= Q *(1 + rx)*(p – C)= Q *(1 + rx)*(1500-100x)

不妨设 Q = 1,由前面分析可得,折扣量 100x 对销售额提高百分比 r 是很敏感的,且此处分析的利润应该是给定 r 的情况下的最大利润,故将 x =(15r-1)/2r 代入式子 L =(1 + rx)*(1500-100x)得 L = 25(15r+1)^2 / r= 25(225r + 1/r + 30)。

采用类似前面的 Excel 建模方法,绘出利润 L 关于销售额提高百分比 r 的散点图。

由上述图表可看到利润 L 对参数 r 是很敏感的。即如果给定不同的销售额提高百分比 r,则利润 L 将会有明显变化。因此,r 的取值要合适、合理,所做的分析才有意义。

b.利润 L 对销售额提高百分比 r 灵敏性的系统分析 对 L 求导可得 L“(r)= 25(225 – 1/r^2),使 L”(r)=0 的点为 r = 1/15≈0.067,当 r < 0.067 时,L 随着 r 的增大而减小;当 r >= 0.067 时,L 随着 r 的增大而增大,r=0.067 是极小值点。

c.利润 L 对 r 的灵敏性的相对改变量:

由 L = 25(225r + 1/r + 30)可得在点 r=0.15 处,dL/dr = 25(225 – 1/r^2)≈ 4513.89 S(L , r)=(dL/dr)*(r/L)=(225r – 1/r)/(225r + 1/r + 30)≈ 0.385 即若销售额提高百分比 r 增加 1%,则导致利润 L 增加 0.385%

((3)假设实际每 100 美元的折扣仅可以使销售额提高 10%,对结果会有什么影响?如果每 100为 美元折扣的提高量为 10%~15% 之间的某个值,结果又如何? 假设实际每 100 美元的折扣仅可以使销售额提高 10%,当 r = 0.1 时,折扣量 100x = 50(15r-1)/r = 250,利润 L= Q *(1 + 0.1x)*(1500-100x)= 1562.5Q(Q 为常量)答:会使折扣量变为 250 美元,利润变为 1562.5Q(Q 为没有折扣时的销量)如果每 100 美元折扣的提高量为 10%~15%之间的某个值,折扣量 100x 的变化曲线如下图所示:

100x = 50(15r-1)/r

利润 L(假设 Q = 1,仅考虑变化趋势)的变化曲线如下图所示:L = 25(225r + 1/r + 30)

((4)什么情况下折扣 会导致利润降低? 利润 L = y = f(x)= Q *(-15 x^2 + 125x + 1500)利润 L(假设 Q = 1)随 x 变化的变化曲线如下图所示:

由第(1)问所求可得,极大值点为 x = 4.17(折扣量 100x = 417 美元),当折扣量 100x <= 417 美元时,随着折扣量的增加,利润增加; 当折扣量 100x > 417 美元时,随着折扣量的增加,利润降低。

由上图还可知,当 x 取[8 , 8.5]区间上的某个值时,利润恰好等于 1500 美元。所以对 x 的取值再进行细分,绘出散点图如下:

由图可知,当 x > 8.33 时,即当折扣量> 833 美元时,此时利润小于没有折扣时的利润。

第三部分

结果与讨论(可加页)

一、

实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)、应用 Excel 建模分析(1)问题 1:已分配席位数和席位号服从等差数列,重复输入浪费时间。

解决方法:使用 Excel 的自动填充功能 以已分配席位数的输入为例,具体操作如下:

a.在准备填充的第一个单元格输入原本应输入的值,此处输入 1,然后保持鼠标停留在该单元格; b.然后在菜单栏找到【开始】,点开后找到【填充】并点击;

c.点击【填充】后选择【序列】,然后进行参数设置。此处应选择【列】和【等差数列】,【步长值】输入等差数列公差值,【终止值】为等差数列最后一个数的值。操作如下图:

d.使用自动填充之后可以得到结果如下:

(2)问题 2:本实验的实验任务是利用 Q 值法分配席位,并且在 Excel 中进行 Q 值计算。

我认为如果在 Excel 中仅仅只进行 Q 值计算,是无法准确地确定 Q 值计算次数的终止点,容易产生一些不必要的计算。

解决方法:

我将表格的内容分为三部分:

a.已知的每个系的人数和所求的每个系最终分得席位数;(有助于更直观地了解已知条件和最终结论;同时 Q 值计算公式中我使用了 B2、C2、D2 单元格,如果三个系的人数发生变化,则只需要修改此处的数据即可,不必修改公式)

b.在不同的已分配席位数的情况下,三个系 Q 值的取值; c.席位分配过程:给席位编号,标注出每个席位的分配结果;(有助于更直观地了解 Q 值法分配的原理;便于最后计算各系的最终分得席位数)

此种分法便于确定 Q 值计算次数的终止点。具体方法是:

每进行一次 Q 值计算,则分配一次席位,分配结果直接写在表格中相应位置,更加直观。当所有席位分配完毕,则是 Q 值计算的终止点,此时在表格中回顾席位分配过程并计数即可得到各系最终分得的席位数。

13、单变量最优化(1)问题 1:绘制散点图之前,要先在表格中输入自变量的值,该数据服从等差数列。

解决方法:使用 Excel 的自动填充功能 具体操作:类似【用 应用 Excel 建模分析】中的问题 1 的操作步骤。

(2)问题 2:绘制散点图之前因变量的计算公式处理方法 解决方法:使用拖曳复制再粘贴的方法。

以第(1)问的第一个散点图为例,具体操作如下:

a.打开 Excel 新建一个表格,分别列出 X 栏和 Y 栏。

b.X 栏采用 Excel 的自动填充功能,依次写入 0,1,2,3 „„ 等等,Y 栏第一项,根据公式,将 x 以 A2 替代,手写输入公式“=-15*A2*A2+125*A2+1500”(此处假设 Q = 1),c.其余的 Y 栏数据,采用拖曳复制的方式复制粘贴公式。首先选中 Y 栏第一项,点击鼠标右键,点击【复制】;然后选中待填入数据的所有 Y 栏单元格,点击鼠标右键,点击【粘贴选项】中的【公式】;则当 X 栏有值时,Y 栏就有对应的值。

d.绘散点图:全部选中 X 栏和 Y 栏的数据,点击菜单栏的【插入】然后插入【散点图】,得到如下图表:

(3)问题 3:使用 Excel 求函数极值点的方法

解决方法:除了用公式法和导数求解之外,使用 Excel 采用多次绘散点图的方法也可求出函数极值点。

以第(1)问为例,具体操作如下:

采用前面的问题(2)中的方法,得到第一个散点图如下:

由表和图可知,当 x 在 4 附近时,y 取得最大值。

故将 x 的取值区间缩小到[3.5 , 4.5] , 再绘出一次散点图,如下:

由上述表和图可知,当 x ≈ 4.2 时,y 取得最大值。而导数计算结果为 x≈4.17,可知绘散点图求函数极值点是可行的。

如果想得到更精确的结果,可以将 x 的取值区间继续缩小,每个值之间的差也不断缩小,直至更加接近于真正的极值点。

二、

小结、建议及体会 此次实验涉及到的知识点包括数据分析的理论、最优化模型的建模方法、应用 Excel 的方法等,我按照实验任务的要求,查阅相关资料,制定出理论结合实际的实验方案,采用“从整体规划,分步骤实施,实验全面总结”的技术路线完成了实验。

此次试验,巩固了我在课堂所学的内容,加深了我对数据分析与建模的理论与方法的了解,帮助我基本掌握了典型的数据模型的建立与使用,提升了我的实验动手能力。

此次实验我主要面临的问题是如何使用 Excel 建模。由于先前对 Excel 的了解甚少,所以此次实验的困难可能会稍大一点,不过,我也因此学到了 Excel 的许多使用技巧,包括自动填充、拖曳复制粘贴公式等,使我受益匪浅。

同时,我还学习了利用表格中的数据绘制散点图,以此类推,也掌握了其他图形的绘制方法。这使得我对于以后其他情况下的数据分析处理多了一种分析方法。我感觉数据分析与建模真的是一门很有用的课,建模帮助我们将现实问题转化为数学问题,再进而求解,更加方便。而模型的求解过程帮助我们掌握了一些建模分析的软件,这将会成为我们人生的一笔财富,成为我们日后需要进行数据分析时的助力。

建议:我觉得关于 Excel 建模方面的知识还是有点少,课件里的内容不是很便于学习。如果可以的话,希望老师可以提供一份较为系统的利用 Excel 建模的过程的资料(步骤叙述明确,带有截图和提示)。不过,该课程后期并不会继续使用 Excel 建模,所以此建议请老师斟酌时间和精力再考虑,或者选择熟悉 Excel 建模过程的同学帮助老师制作此资料,供其他不擅长的同学学习。

第四部分

评分标准(教师可自行设计)及成绩

观测点 考核目标 权重 得分 实验预习1. 预习报告 2. 提问 3. 对于设计型实验,着重考查设计方案的科学性、可行性和创新性 对实验目的和基本原理的认识程度,对实验方案的设计能力 20%

实验过程 1. 是否按时参加实验 2. 对实验过程的熟悉程度 3. 对基本操作的规范程度 4. 对突发事件的应急处理能力 5. 实验原始记录的完整程度 6. 同学之间的团结协作精神 着重考查学生的实验态度、基本操作技能;严谨的治学态度、团结协作精神 30%

结果分析 1. 所分析结果是否用原始记录数据 2. 计算结果是否正确 3. 实验结果分析是否合理 4. 对于综合实验,各项内容之间是否有分析、比较与判断等 考查学生对实验数据处理和现象分析的能力;对专业知识的综合应用能力;事实求实的精神 50%

该项实验报告最终得分

VB数据库的访问技术 篇3

关键词:控件 数据库 接口

Visual Basic专业版是一种广泛使用的数据库编程语言,提供了对数据库应用的强大支持。VB访问数据库的方法大致有三类:使用数据绑定控件,使用数据库存取对象变量(Data Access Object Variable),直接调用ODBC 2.0 API接口函数。

一、VB的数据库结构

VB数据库的核心结构是MicroSoft Jet数据库引擎,JET引擎的作用是支持多种ISAM(Indexed Sequential Access Method,即索引顺序存取方法) 数据驱动程序。VB环境下Access是缺省的数据格式,对于其他的关系型数据库如FoxPro、Dbase(或 Xbase)、Paradox、Btrieve等,VB的专业版可兼容其驱动程序,这就使得VB能支持这些数据库格式。由上可见,Ms JET引擎实质上提供了:一个符合ANSI标准的语法分析器;为查询结果集的使用而提供的内存管理功能;同所支持的数据库的外部接口;为应用代码提供的内部接口。

二、VB访问数据库的原则和方法

1.VB访问数据库的原则

(1)代码的重用和运行的效率

VB程序设计中,应尽可能减少代码的重复编写,提高运行效率。例如:通过使用ODBC数据源连接数据库的方法,可在变换多种数据库类型的情况下,而不用频繁修改代码。用VBSQL通过DB-Library就做不到。而ODBC接口并不是VB访问数据库运行效率最高的方法。同样,同是使用ODBC接口的ADO的效率要高于RDO。

(2)实现的简便性,易维护性

如果一种方法实现起来很复杂,工程的开发必然造成人力物力的浪费,同时这样设计出来的应用程序只会支持起来更复杂或维护时更困难。例如:本地需要访问ISAM或Jet 类型数据源,那么就使用DAO/Jet,而没有必要使用通过ODBC的方法。RDC实现起来要较RDO更容易。

(3)安全原则

这一条应根据环境和条件决定。例如局域网的网络安全性要好于广域网,因而可直接利用数据控件DC,这样实现起来方便快捷,而广域网需要大量的错误捕获,如用RDC就不如用RDO易控制错误。

2.数据访问接口功能及含义

ADC(Advanced Data Connector):高级数据连接器, 提供绑定ADO数据源到窗体的数据绑定控件上。ADC主要是一种直接访问或者通过ADO访问远程OLE DB对象的一种技术,它也支持主要应用在微软IE浏览器上的数据绑定控件。它是特地为Web上的浏览器为基础的应用程序而设计的。

ADO(Active Data Objects):Active 数据对象,ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使 用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、 文本文件、 图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。

DAO(Data Access Objects):数据访问对象,是一种面向对象的界面接口。通过DAO/Jet 功能可以访问ISAM 数据库,使用DAO/ODBC Direct功能可以实现远程RDO功能。使用DAO的程序编码非常简单,DAO提供丰富的游标(Cursor)类型的结果集和非游标(Cursor-Less)类型的结果集,同DDL(数据描述语言)的功能很类似。DAO模型是设计关系数据库系统结构的对象类的集合。它们提供了完成管理这样一个系统所的全部操作的属性和方法,包括创建数据库,定义表、字段和索引,建立表间的关系,定位和查询数据库等工具。

JET(Joint Engine Technology):数据连接性引擎技术,是一种基于工作站通过DAO的数据库访问机制。虽然可以通过微软Access提供的ODBC驱动程序访问Jet数据库,但使用这些驱动程序在功能上有所限制。Jet机制有自己的查询和结果集处理功能,并可对同种或异种数据源作查询处理。

ODBC(Open Database Connectivity):开放式的数据库连接,是一种公认的关系数据源的接口界面。提供统一接口的界面,ODBC对任何数据源都未作优化。

ODBC Direct:是一种基于DAO对象的新的DAO模式,其方法和属性与RDO功能相同。使用在有DAO代码存在的场合,可用来访问远程数据源。

OLE DB:是一种底层数据访问界面接口。是用于第三方驱动程序商家开发输出数据源到ADO技术的应用程序或用于C++的开发者开发定制的数据库组件。OLE DB不能被VB直接调用。

RDC(Remote Data Control):远程数据访问控件,是一种对RDO 数据绑定的控件。可以输出特定的结果集到数据源控件。

RDO(Remote Data Objects):远程数据对象,远程数据对象和集合为使用代码来创建和操作一个远程ODBC 数据库系统的各个部件提供了一个框架。对象和集合都具有描述数据库的各个部件特征的属性以及用来操作这些部件的方法。可以在对象和集合之间建立起关系,这些关系就代表了数据库系统的逻辑结构。RDO是ODBC API的一个浅层界面接口。是专为访问远程ODBC 关系数据源而设计的。

VBSQL:是Visual Basic 结构化查询语言。是一种基于API的接口方法, 几乎与C的DB-Library API相同,VBSQL只支持微软的SQL Server。VBSQL 快而且轻但不支持对象界面。

3.VB访问数据库的方法

VB访问数据库的方法很多,一般情况下分成三大类,而每一类又有很多方法。下面列出每一类,及每一类包含的方法。

(1)数据控件法

数据库绑定控件来实现数据的输入、显示、筛选等接口界面。VB支持多种数据源访问控件,在VB和COM界面接口之间起着媒介作用。这些控件提供了一种减少代码实现数据访问的途径。程序员可以使用同样的对象、属性和方法来处理各种不同的数据库格式。也可从一种数据库格式变到另一种格式(例如,将本地的Microsoft Access数据库转换为网络上的SQL Server数据库),也可在单一的查询或报表中连接来自多个不同数据库的表。

(2)数据库存取对象变量(Data Access Object Variable)

使用DAO访问数据库的对象和方法。

(3)数据接口法

目前在VB6中有效的数据访问接口方法中,有些是简单的应用程序接口界面(APIs),有些是组件对象模型界面(COM)。这两类数据库接口界面事实上在任何一种开发语言中都包括。

三、总结

近来随着Web应用软件的迅速发展和现有数据存储形式的多种多样,Visual Basic访问数据库的解决方案面临诸多挑战。为此Microsoft 提出一种新的数据库访问策略,即“统一数据访问”(Universal Data Access)的策略。“统一数据访问”提供了高性能的存取包括关系型和非关系型在内的多种数据源,提供独立于开发工具和开发语言的简单的编程接口,这些技术使得企业集成多种数据源、选择更好的开发工具、应用软件、操作平台、建立容易维护的解决方案成为可能。“统一数据访问”(Universal Data Access)的基础是Microsoft 的数据访问组件。这些组件包括ActiveX Data Objects(ADO)、Remote Data Service(RDS,也称“高级数据连接器”或ADC)、OLE DB和ODBC。总之,在VB中访问数据库的方法很多,根据具体的环境、条件、要求而采用适当的方案。

参考文献:

1.冷向君.Visual Basic 中文版入门与提高[M].北京:清华大学出版社,1998

2.李昭原,罗晓沛.数据库技术新进展[M].北京:清华大学出版社,1997

3.Steven Holzner.Visual Basic 6.0技术内幕[M].北京:机械工业出版社,1997

4.Jiawei Han,Miccheline Kamber.数据挖掘概念与技术[M].北京:机械工业出版社

5.曾强聪,赵歆,杨莉.Visual Basic 6.0 程序设计教程[M].中国水利水电出版社,1999

浅谈数据访问技术的发展与展望 篇4

作为一个程序员,一直都梦想着有一天不需要再去学习新的数据访问方法。每一次数据访问方法的升级或者是新版本的数据库的推出,都需要一次新的学习、熟悉、熟练的过程。这样让程序员将本来应该编写程序逻辑的时间花在了数据库技术的研究上。其实数据库对于程序员来说,不过是一个堆放“数据”的仓库,最好能够像“多拉A梦”的口袋一样,什么都可以放得进,什么都可以取得出,而不需要用那些特别的方法来做这些事情。

2 数据访问发展的趋势

通用化就是数据库技术和数据访问技术一直在追求的目标。提供通用数据访问之所以如此重要有四点原因。

(1)开发人员可以很容易地开发针对不同数据存储的程序而不需要对每个都很精通。

(2)开发人员在不同编程语言之间切换时能有一个用于数据访问的公共框架。这使得向新语言的过渡更加容易,这一点在.NET Framework下尤其重要,因为在.NET Framework下期望开发人员可以很容易地在VB.NET和C#之间切换。

(3)使得开发人员编写可部署于不同数据存储之上的程序更加简单。

(4)提供了一个介于应用层和数据库通信层之间的抽象层来简化普通开发人员需要编写的代码。

当数据访问通用化之后,程序员便可以不再记忆那么多不同的数据库连接字符串,不同的数据访问类型。程序员就像拿了一把“万能钥匙”,不什么样的门都能打开。

3 数据库模型

3.1 网状数据库模型

1963年6月10日美国国防部的两个分部举行了一个题为“以计算机为中心的数据库的开发和管理”的会议,在这次会议上,创造并定义了数据库这个术语。

当时对数据库的定义为:一组文件表的集合,其中文件是数据项行的有序集合,而每个数据项由数据以及一个或多个键组成。

两年之后的1965年,CODASYL成立了一个组织,称为List Processing Task Force,这个组织后来演变为Data Base Task Group。它在1971年发布了一份重要的报告,报告概述了网络数据模型,也称之为CODASYL数据模型或DBTG数据模型。这个模型定义了数据库的几个关键概念包括如下:(1)用于定义模式的语法;(2)用于定义子模式的语法;(3)数据操作语言。

这些概念后来被加入COBOL编程语言之中,它们同时也成为其后许多数据存储系统设计的出发点。

3.2 层次数据库模型

层次型数据库管理系统是紧随网状数据库而出现的。现实世界中很多事物是按层次组织起来的。层次数据模型的提出,首先是为了模拟这种按层次组织起来的事物。层次数据库也是按记录来存取数据的。

层次数据模型中最基本的数据关系是基本层次关系,它代表两个记录型之间一对多的关系,也叫做双亲子女关系(PCR)。数据库中有且仅有一个记录型无双亲,称为根节点。其他记录型有且仅有一个双亲。在层次模型中从一个节点到其双亲的映射是惟一的,所以对每一个记录型(除根节点外)只需要指出它的双亲,就可以表示出层次模型的整体结构。层次模型是树状的。

最著名最典型的层次数据库系统是IBM公司的IMS(Information Management System),这是IBM公司研制的最早的大型数据库系统程序产品。从60年代末产生起,如今已经发展到IMSV6,提供群集、N路数据共享、消息队列共享等先进特性的支持。这个具有30年历史的数据库产品在如今的WWW应用连接、商务智能应用中扮演着新的角色。

3.3 关系数据库模型

无论是CODASYL的网络数据模型,还是IBM的IMS,都是显著的进步因为它们标志着范型改变,那就是将数据从应用程序代码中分离出来,同时它们也布置了一个数据库应该具有的框架。但是,它们都具有令人讨厌的缺陷:需要程序员搜索数据集以寻找他们想要的数据,因此,有时也称它们为导航数据库。

1970年,IBM的英国计算机科学家Edgar Codd发布了一篇重要的论文,题目叫做“大型共享数据仓库中数据的关系模型”,文中作者介绍了关系模型。在这个模型中,Codd强调了将原始的、一般的数据与机器特有的数据类型分离的重要性,并披露了一种简单的高层次查询语言用于访问该数据。这种思想上的转变使得开发人员可以对整个数据集进行同时操作,而不再是一次一行地进行操作。

在此后的几十年里,数据库继续演化着。现代数据库比如Oracle、Microsoft SQL server、My SQL以及LDAP都受到早期那几个数据库很大的影响。随着时间的推移,它们的性能都有很大改进,可以处理很大的事务量,可以处理大量的数据,可提供高度的可伸缩性和可靠性。

4 通用数据访问模型

4.1 ODBC

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是Fox Pro、Access,MYSQL还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

ODBC是一个巨大的飞跃,它帮助极大地简化了数据库驱动的应用程序的开发。但是它仍然有一些不足。首先,它只能够支持关系型数据。如果你需要访问层次数据源,比如LDAP,或者半结构化数据,ODBC就无能为力了。其次,它只能处理SQL语句,而且结果只能用行和列的形式来描述。总体而言,考虑到之前的境况,ODBC是一个巨大的成功。

4.2 OLEDB

对象链接和嵌入数据库OLE-DB是数据提供程序的又一大进步,而且今天还在广泛使用这种技术。对于OLE-DB,Microsoft应用了开发ODBC过程中学到的知识来提供一个更好的数据访问模型。OLE-DB标志了Microsoft向基于COM的API的转移这种转移,使得它很容易被大多数编程语言使用,同时也标志了向32位操作系统的迁移,Windows 95的发布标志着这一事实。

正如其他代码一样,经过几次的修订,ODBC变得臃肿不堪。OLE-DB的API则灵巧得多,它提供了比ODBC更高效的数据访问。很奇怪的是,唯一以其最初发布形式出现的就是ODBC数据提供程序。它只是ODBC提供程序的包装器,没有提供任何性能改进。关键在于要使得开发人员适应新的API,同时不影响他们访问现存的通过ODBC来访问的数据库系统。之后,可以编写更高效的数据访问程序来直接访问数据库,比如MS SQL,而不再需要通过ODBC。

OLEDB位于ODBC层与应用程序之间。在你的ASP页面里,ADO是位于OLEDB之上的应用程序。你的ADO调用先被送到OLEDB,然后再交由ODBC处理。你可以直接连接到OLEDB层,如果你这么做了,你将看到服务器端游标(recordset的缺省的游标,也是最常用的游标)性能的提升。

5 数据访问客户端

5.1 DAO

DAO(数据访问对象)是一种应用程序编程接口(API),存在于微软的Visual Basic中,它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数,它还可以访问其他的结构化查询语言(SQL)数据库。DAO的最大问题在于只能跟JET引擎进行对话,而JET引擎通过与ODBC进行通信来检索数据。这种通过额外中间层的方式增加了不必要的系统开销,使得通过DAO来访问数据速度变慢。

5.2 RDO

远程数据对象RDO是Microsoft针对DAO性能低下的解决方案。访问Microsoft Access之外的数据库时,与DAO不同,RDO不使用JET引擎,而是直接与ODBC层进行通信。从调用栈中删除JET引擎这一举措极大地改进了ODBC数据源的性能。只有在访问Microsoft Access数据库的时候才使用JET引擎。另外,RDO可以使用客户程序端游标来定位记录,而DAO则需要服务器端游标。这极大地减少了数据库服务器的负荷,不仅使得应用程序运行得更好,而且也改进了应用程序所依赖的数据库。

RDO主要面向大型商业用户,他们中的大多数因为性能问题而避免使用DAO。RDO并没有取代DAO,它们同时存在着。RDO发布后没多久,Microsoft就发布了新的通用访问API。

Microsoft引入Active X数据对象的主要目的是提供一种高级API与OLE-DB协同工作。在这次发布中,Microsoft吸取了过去很多教训,建立了一个更轻巧、更高效、更通用的数据访问API。与RDO不同的是,ADO最初被提议用来取代DAO和RDO。在发布之初,人们普遍认为它以及OLE-DB是访问任何类型数据的通用解决方案:从数据库到电子邮件,从无格式文本文件到电子表格。

ADO代表了对以前数据访问方法的一种重大变革。ADO的发布主要用来辅助OLE-DB,但是ADO并不局限于仅仅与OLE-DB数据源进行通信。ADO引入了数据提供程序模型,这个模型使得软件供应商可以相对容易地创建自己的数据提供程序,这些数据提供程序可以被ADO用来与特定供应商的数据源进行通信,可以对那种特定的数据源进行优化。与ADO一起提供的ODBC提供程序就是一个这样的例子。当开发人员连接到ODBC数据源时,ADO通过ODBC提供程序而不是OLE-DB来进行通信。更加直接地与数据源进行通信可以导致更好的性能和易于扩展的框架。

5.3 ADO.NET

ADO.NET将成为构建数据感知.NET应用程序的基础。不同于ADO的是,ADO.NET更具有通用性,不是那么专门针对数据库而进行的设计。ADO.NET聚集了所有可以进行数据处理的类。这些类呈现了具有典型数据库功能的data container objects,比如:索引,排序,浏览。尽管ADO.NET是作为重要的.NET数据库应用程序的解决方案,它更多的显示了涵盖全面的设计,而不仅是作为和ADO模型一样的以数据库为中心。

ADO.NET与ADO有很大的不同。它是一个全新的访问编程模型。当你开始使用ADO.NET时,你会发现你所掌握的任何关于ADO的技能在搭建有效的程序以及解决难题方面对你都会有很大帮助,能够帮你在解决问题上朝更灵活更稳妥的方向发展。

ADO.NET同时支持使用ODBC和OLE-DB与数据源进行通信,但它也提供了使用数据库特定的数据提供程序。这些数据提供程序提供更好的性能,因为它们可以利用针对特定数据源进行的优化。通过使用定制代码而不是通用的ODBC或OLE-DB代码,也可以避免一些系统开销。最初发布的ADO.NET含有一个SQL提供程序和一个OLE-DB提供程序,后来又引入了ODBC和Oracle的提供程序。自此以后,许多供应商也都为自己的数据库编写了提供程序。

5.4 LINQ

LINQ,全名叫Language INtegrated Query,它在代号为"Orcas"的Visual Studio 2008中发布。待查询数据的形式可以是XML(LINQ到XML)、数据库(启用LINQ的ADO.NET,其中包括LINQ到SQL、LINQ到Dataset和LINQ到Entities)和对象(LINQ到Objects)等。LINQ正如它的名字“集成查询语言”的含义一样,它提供给程序员一个统一的编程界面。程序员不需要关心他将要操作的将是关系数据库还是XML,甚至是远程的对象,它都采用同样的查询方式。就如同通过T-SQL操纵数据库一样,不管是Oracle,Sy Base还是SQL Server,他们的Select语法都是一样的。

有了LINQ,程序员便可以不再沉泥于不同的数据访问技术的学习。不管编程语言如何发展,还是数据库技术的发展,都不再需要程序员进行学习,数据存储的效率由数据库厂商进行优化,灵活的数据操作方法由数据访问中间件厂商提供,程序员只需要编写业务逻辑。

6 结束语

数据访问技术越来越向通用化发展,有一种“万源归宗”的感觉。有了数据访问层的支持,让程序员的工作效率大大提高,数据中间件在信息管理系统提供了数据层的支持。而LINQ将数据访问的通用性发挥到了极致。

参考文献

[1]钟田田.数据库应用系统结构发展及趋势[J].贵州工业大学学报,2007(04).

[2]刘吴文.谈数据库技术的发展研究[J].科教文汇,2007(12).

[3]桂文庄.迎接科学数据库发展的新阶段[J].中国科学院院刊,2007(01).

[4]朱杰.数据库技术的发展与应用[J].金融电子化,2007(04).

[5]欧旭.浅析数据库技术及其发展趋势[J].大众科技,2007(03).

数据建模与访问 篇5

船体动态形变数据建模与形变测量仿真?

分析了航天测量船实测形变数据并对其建立了时间序列模型.采用基于此模型的卡尔曼滤波器处理待测点激光陀螺组合的输出信息,并给出待测点间的相对静态和动态形变.仿真显示,该方法对航天测量船的.实际形变的测量误差优于10″,能有效的测量出舰船船体形变.

作 者:李金石 秦石乔 王省书 Li Jinshi Qin Shiqiao Wang Xingshu 作者单位:国防科学技术大学光电科学与工程学院,长沙,410073刊 名:电子测量与仪器学报 ISTIC英文刊名:JOURNAL OF ELECTRONIC MEASUREMENT AND INSTRUMENT年,卷(期):200822(z2)分类号:V556.8关键词:航天测量船 船体形变 形变测量 时间序列 卡尔曼滤波

ADO.NET数据库访问技术研究 篇6

关键词:ADO.NET; 数据库; DataSet; DataReader; DataAdapter

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)15-30614-02

Research of Database Access Technology Based on ADO.NET Method

LI Yan

(Jingdezhen Ceramic Institute,Jingdezhen 333001, China)

Abstract:For the sake of much better and flexible developing the database application's softs, we need to study ADO.NET about database access mechanism and understanding the ways of the use of ADO.NET about the aspect of connecting to a database,operating and accessing data. ADO.NET has added many new objects and programming interface such as Dataset, DataReader,DataAdapter. It makes the operation of database simpler. This article introduces database access technology using ADO.NET method by explaining the principle of data exchange and the use of the model for data access object.

Key words:ADO.NET; Database; DataSet; DataReader; DataAdapter

1 引言

数据库应用软件在计算机应用领域占有相当大的比重,其应用范围已经越来越广泛,无论是办公自动化、生产流程控制、局域网、Intranet/Internet以及各种各样的管理系统都离不开数据库。

在对一个数据库应用程序进行开发时,从开发者的角度而言,首要的技术环节就是要解决如何访问数据库。只有解决好这个问题,我们才能更加方便高效的使用数据库应用软件。

但是当今数据库种类众多,几乎每一种数据库都有自己的数据格式,要想访问这些数据就必须依靠特定数据格式的驱动程序,而这些驱动程序在使用上的千差万别,又为数据库应用软件的开发带来了不少麻烦。

为了解决这个问题,微软开发出了ADO,这是一组COM(Component Object Model)组件。它通过一个易于使用的封装类提供对底层数据的访问,从而使得对数据库的操作更加简单。ADO.NET则是在ADO基础上开发出的数据访问框架的最新产物,它是.NET框架的一部分,ADO.NET比ADO的功能更加强大,是在.NET代码中访问数据库的最好工具。深入研究ADO.NET的数据库访问技术对于数据库应用软件的开发具有十分重要的意义。

2 ADO.NET的体系结构

就其本质而言,ADO.NET是支持数据库应用程序开发的数据访问中间件。ADO.NET建立在.NET Framework提供的平台之上。它是使用Microsoft .NET Framework中的托管代码构建的,这意味着它继承了.NET执行时环境的健壮性。ADO.NET主要是用来解决Web和分布式应用程序的问题,它由.NET Framework(提供了对.NET应用程序的数据访问和管理功能)中的一组类或命名空间组成。

ADO.NET是用来处理基于Web应用程序所需的无连接计算环境。无连接的设计支持ADO.NET方便地伸缩企业应用程序,因为在每个客户机系统和数据库之间并没有使用开放连接。而是在开始客户端连接时,暂时打开一个到数据库的连接,从数据库服务器中检索需要的数据,然后关闭连接。客户端应用程序然后使用与数据库服务器所维护的数据存储完全独立的数据。客户端应用程序可以定位数据的子集,修改该数据,并将该数据一直缓存在客户机中,直到应用程序指示将所有变化传回到数据库服务器。这时会暂时打开一个到服务器的新连接,对客户端应用程序所作的所有修改都被传回到更新批处理中的数据库,同时关闭连接。

支持这种无连接环境的核心ADO.NET组件是DataSet。DataSet本质上是一个缩小的内存中数据库,它的维护独立于后台数据库。只有在填充DataSet或者将DataSet中的数据变化传回到数据库时,才会打开到数据源的连接。这种无连接的计算环境将系统开销最小化,并改进了应用程序的吞吐量和可伸缩性。ADO.NET DataSet提供的内存中数据库提供了在成熟的数据库中可以找到的许多功能,包括支持数据关系、创建视图的能力、支持数据约束以及外键约束。

在ADO.NET设计中,支持无连接的、基于Web的应用程序是其中一个重要特性,然而,这并不是ADO.NET的全部功能。无连接模式也可以用于Web应用程序,但它并不是客户端/服务器和桌面应用程序的最佳模式。当在连接方式下运行时,可以更好更高效地实现这些类型的应用程序。为了支持这种连接风格的计算,ADO.NET提供了DataReader对象。DataReader主要使用连接方式提供了快速只向前的游标风格的数据访问。虽然DataSet提供了无连接的Web应用程序的基础,但DataReader支持桌面和客户端/服务器应用程序所需的快速连接风格的数据访问。

3 ADO.NET访问数据库的模式

Windows平台下的ADO.NET主要有3种访问数据库的模式,分别为OLEDB模式、ODBC模式和SQLCLIENT模式,另外还有其他数据访问模式,如对Oracle数据库的访问可以使用专用的Oracle模式。

3.1 OLEDB模式

OLEDB模式主要用于访问OLEDB所支持的数据库。OLEDB是Microsoft公司开发的一种高性能的、基于COM的数据库访问技术,OLEDB和其他Microsoft公司数据库技术的不同之处在于其提供通用数据访问的方式。OLEDB数据提供程序通过OLEDBConnection对象提供了使用OLEDB公开数据源的连接,以及与Microsoft SQL Server的连接。

3.2 ODBC模式

ODBC模式主要用于访问ODBC所支持的数据库,它是Windows平台的一种通用数据访问方式。一般在Windows平台下存在的数据库都可以通过建立系统DSN来实现对数据库的调用。

3.3 SQLClient模式

SQLClient只用于访问MS SQL Server数据库,是ADO.NET中比较特殊的组件。当然,MS SQL Server也是OLEDB和ODBC所支持的,因此也可以通过OLEDB和ODBC模式来访问MS SQL Server,但实验证明对访问MS SQL Server来说,采用SQLClient模式比OLEDB和ODBC模式效率更高,所以使用MS SQL Server作为数据库开发应用程序时,最好使用SQLClient模式访问。

4 ADO.NET的主要对象

ADO.NET中有很多重要的对象。这些对象主要实现两个主要的功能:(1)数据访问:用于访问数据库中数据和操作数据库的类型;(2)数据表示:用于包含数据库数据(如数据表)的类型。这两种类型之间联系密切,在数据库开发中两种类型都会用到。

ADO.NET包含很多重要的对象,其中Connection,Command,DataReader, DataAdapter是数据访问类,其他的如:DataSet,DataTable, DataView等是数据表示类。通过使用这些对象,使得对数据库的操作更加简单。

4.1 Connection对象

在 ADO.NET 中,使用 Connection 对象连接到特定的数据源。使用的 Connection 对象取决于数据源的类型。创建Connection对象时,应在连接字符串中提供与DBMS通信必要的信息,如数据库的位置、用于认证的用户名和密码以及要访问的DBMS中的数据库。

所有其他ADO.NET数据访问类都依靠Connection与数据库进行通信。

数据库连接只在传输数据时才打开,因此创建Connection实例时并不自动连接数据库。Connection定义了Open()和Close()方法,用于控制连接何时可用。

4.2 Command对象

Command对象提供与数据库交互的主要方法。可以用Command对象来执行SQL语句、运行存储过程等。

要使用Command对象执行命令,有三种选择,有些命令不返回结果,这种情况下就可以使用Command.ExecuteNonQuery()方法;有些命令返回一个结果,就需要使用Command.ExecuteScalar()方法;如果是返回多行命令,就应用Command.ExecuteReader()方法。

对于不同的数据库调用模式,使用的Command是不同的,对应的Command要与其对象模式相对应。

4.3 DataReader对象

使用DataReader可以从数据库返回一个只读的、仅能向下滚动的串流(Stream),而且当前内存中每次仅存在一条记录。

在程序开发的过程中,开发人员经常需要执行一些简短的操作,比如访问单独的用户名和密码。在执行这些操作时,就可以直接使用DataReader对象。

使用DataReader对象时,首先必须调用DataReader.Read()方法选择结果集中的一行,再不断调用该方法来移动DataReader,获取数据信息。获取到一行时,Read()方法返回True;否则返回False。

4.4 DataAdapter对象

在ADO.NET的核心数据访问对象中,最后一个是DataAdapter。

DataAdapter用于从数据源检索数据并填充到DataSet中的表,它还将对DataSet的更改解析回数据源。DataAdapter使用.NET Framework数据提供程序的Connection对象连接到数据源,并使用Command对象从数据源检索数据以及将更改解析回数据源。

DataAdapter最常用的两个方法是DataAdapter.Fill()和DataAdapter.Update()。Fill()方法从数据库中获取数据;Update()方法更新数据库中的数据。这两个方法都可以用于数据集或单个数据表。

4.5 DataSet对象

DataSet是ADO.NET的核心,它是从数据源中检索到数据在内存中的缓存,处理从数据存储中读出的数据,并以离线方式存在于本地内存中。可以使用相同的方式来操作不同数据来源取得的数据。不管底层的数据库是SQL Server还是Oracle,DataSet的行为都是一致的。

在DataSet中可以包含任意数量的DataTable,且每个DataTable对应一个数据库。一般来说,一个对应DataTable对象的数据表就是一组DataRow与DataColumn的集合。可以使用这些对象与DataRelation对象互相关联。

DataSet可将数据和架构作为XML文档进行读写。数据和架构可通过HTTP传输,并在支持XML的任何平台上被任何应用程序使用。开发人员可以使用WriteXmlSchema方法将架构保存为XML架构,并可以使用WriteXml方法保存架构和数据。若要读取既包含架构又包含数据的XML文档,可以使用ReadXml方法。

5 ADO.NET的运行模式

ADO.NET的运行模式主要分为以下几个步骤:(1)用户通过Web方式查寻数据库时,调用一个ASPX过程;(2)在ASPX网页的代码中使用ADO.NET的Command对象对数据执行查询操作;(3)对数据库的访问首先建立在连接并执行查询命令,然后从数据库中读取数据;(4)数据被存放在DataSset对象中,从数据库返回的是只读的信息;(5)将这些信息显示在页面上;(6)断开与数据库的连接。

6 结束语

ADO.NET集合了所有用于数据处理的类,是.NET数据库应用程序最终的解决方案,正在成为现今数据库开发的一种潮流,并代表了未来技术发展的方向。由于目前网络数据库是主流,ADO.NET在其运行效率、存取速度以及网络负载平衡等方面的均衡表现,使得它具有顽强的生命力。在进行数据库应用软件开发中,使用ADO.NET可以极大的帮助你以一种更加高效的方式来构建并完成任务。

参考文献:

[1]David Sceppa. ADO编程技术[M]. 北京:清华大学出版社,2001.

[2]张跃廷,韩阳,张宏宇. C#数据库系统开发实例精选[M].北京:人民邮电出版社,2007.6.

OPC数据访问服务器研究与应用 篇7

计算机技术的不断发展,使得应用于工业控制领域的软件与硬件设备种类越来越丰富[1],由于没有统一的通信接口标准,难以方便高效地实现来自不同厂商的应用程序与硬件设备之间的数据通信,因此严重制约了工控领域的拓展。OPC技术的出现使来自不同数据源的数据与运行在各种平台上的应用软件能够顺利地集成在一起[2]。目前,OPC技术已经成为工业控制中系统集成与数据交换的重要工具。近年来国内不少高等院校、 研究院所和软硬件开发商都对OPC技术进行了研究和开发应用。为了进一步地节约成本,减少通信驱动数量,缩短开发周期,针对嵌入式多总线RTU硬件产品开发基于Modbus TCP通信协议的OPC数据访问服务器变得非常具有现实意义。

1 OPC数据访问规范

OPC技术是COM在工业领域的一种特殊应用,针对敏感度高的实时数据,可以将其从实时数据中分离。 从COM的角度分析,OPC规范实质就是定义了一些用于实时数据存取、事件报警处理、历史数据存取等的COM对象和接口[3]。

基于OPC软总线的过程控制系统(PCS)的基本架构中,整个PCS以OPC DA服务器为中心,以从OPC DA服务器上获得的实时数据为基础,OPC AE服务器根据用户的设置进行相关逻辑分析和处理,可以产生相应的事件/报警消息发送到客户端;OPC HAD服务器将按照用户设置要求进行保存历史数据,方便客户端用户进行查询和分析统计过程数据在过去的时间段内的变化情况;OPC DX服务器根据实际现场需要可以将多个OPC DA服务器的数据联系起来,便于多个OPC DA服务器之间进行数据交换[4];OPC XML DA服务器通过将实时数据转换成XML文本,以提供将过程数据发布到互联网的功能,实现更大范围内的数据共享;OPC Security服务器提供了访问数据的安全访问机制,可以对整个PCS中的数据进行安全保护。

OPC数据访问规范是OPC协议族中的核心和基础, 其他所有的OPC相关规范都是以OPC DA规范为基础进行扩展制定的。本文主要参照OPC Data Access Specifi-cation Version 3.0研究和应用OPC DA服务器。

只要遵循OPC规范实现OPC接口的客户应用端, 即可无缝连接OPC服务器进行数据通信,一个客户应用端可以同时访问多个OPC服务器,而一个OPC服务器也可以被多个OPC客户应用端访问,根据OPC服务器提供的功能可以知道OPC服务器内部结构大致分为3部分:设备驱动模块、数据管理模块和数据调度与分发模块。如图1所示。

OPC服务器支持多客户并发访问及数据存取请求, 数据调度与分发模块对客户的访问及数据存取请求进行协调和管理,然后将具体数据存取请求交给数据管理模块,数据管理模块将数据存取请求传递给设备驱动模块,设备驱动模块将数据存取请求转换为读写设备消息,对设备进行具体的读写操作,操作完成后将数据返回给数据管理模块,数据管理模块再更新数据缓冲区中对应的数据,并将更新的数据返回给各个请求数据的客户端。

OPC数据访问规范中定义了OPC客户端和服务器如何交互数据和数据存储结构[5],OPC服务器中的数据调度与分发模块负责与OPC客户端进行数据交互,其模块实现必须与OPC规范规定保持一致。数据管理模块与设备驱动模块由于针对不同的设备,读写数据方式和获取的数据就不同,因此需要根据具体需求开发实现。因此OPC服务器的具体实现会由于不同的应用而有所不同。

通常的数据采集应用的是主从式的应用结构,客户周期性地查询服务器的数据。在这种应用模式下,增加了系统的额外开销,而且效率比较低。基于COM的OPC支持的双向通信机制,具有事件驱动功能,当OPC服务器的数据发生变化时,能够自动通知OPC客户,客户可以从周期性的轮询中脱离出来,从而大大提高了效率,降低了系统负荷。OPC规范主要定义了3种数据访问方式:同步通信、异步通信和数据订阅。

2 OPC服务器设计

由于COM规范一般以C++语言描述,所以通常采用VC++开发OPC数据访问服务器[6]。在本文中,基于Windows的Dot NET平台,利用OPC接口动态库来开发OPC服务器。本文实现的OPC数据访问服务器要完成对Modbus TCP设备的数据采集功能,提供OPC数据存取规定的定制接口,同时通过数据存取区将设备数据与OPC接口联系起来。如图2所示的OPC数据存取服务器总体结构,各个功能模块之间相对独立又相互协作, 形成了一个有机整体。

本文设计的OPC数据存取服务器属于进程外服务器,拥有独立的进程空间,与客户进行数据交换时稳定性高,同时提供了用户友好的人机界面,便于用户的自定义组态操作。OPC对象接口模块通过数据存储区间接与设备驱动相互联系,以获取数据存储区内的数据或直接访问设备获取过程数据。OPC客户程序通过Group对象访问数据存储区中的数据项,设备通信驱动周期性将最新的设备过程数据写入到数据存储区内。客户通过Server对象的IOPCBrowse接口可以浏览数据存储区内所有数据项Item对象的相关属性。

针对某国产的硬件设备多总线RTU,硬件设备通信模块实现了标准的Mdbus TCP通信协议,可以和实现标准的Modbus TCP设备无缝互联通信,简单方便地获取硬件设备的过程数据。在实际应用中,此处采用了OPCMaster的OM_OPCSvr.dll OPC接口动态库工具来实现OPC接口模块部分,Modbus TCP是Modbus协议的网络协议,TCP端口号为502。Modbus TCP在Modbus RTU协议前,增加了6个字节的协议头MBAP[7],同时去掉了2 B的CRC16校验和协议格式。通信驱动模块主要使用6种标准的Modbus功能码。当主设备向从机发送请求,希望获取一个正常响应,但是可能由于各种原因,从机返回一个异常消息帧。因此需要通过异常码来标识发生了什么错误导致了异常响应。本Modbus TCP协议通信驱动模块属Modbus Slave,需要对设备返回的Modbus TCP消息帧进行MBAP验证、请求数据获取。图3是对设备进行读取数据的流程。

为了方便用户操作和使用OPC服务器,提高人机交互性,本文设计的OPC服务器设计了类Windows窗口的用户界面。通过将属性列表来对数据项进行组织和标识,通过属性设置对话框将数据项与硬件设备的数据绑定,并将数据存储区与硬件通信接口联系起来,进而可以实现用户自定义组态功能。另外还需要将数据项的属性和设备设置参数保存到配置文件中,便于下次在OPC服务器程序启动运行时,可以自动打开组态配置文件完成初始设置。

3 OPC服务器的实现

本文设计的基于Modbus TCP OPC服务器基于Windows平台开发,开发环境详细列表见表1和图4。

在Visual Studio2010中创建一个包含Win Form的Windows窗体应用工程项目的解决方案OPCServer,此时Visual Studio 2010自动生成一个带有Windows窗体的基础代码,通过自定义窗口的菜单、工具栏、状态栏及显示区等,使得用户自定义组态功能成为可能。 将OM_OPCSvr.dll文件复制到上述创建的工程目录的bin文件下,然后创建一个类OPCAPI对OM_OPCSvr.dll进行加载,以便调用其提供的OPC接口服务。

OPC服务器程序的基础代码创建完成后,通过调用Init OPCSvr(byte *p Svr CLSID,bool b Exe Svr,DWord dw-Co Init)对OPC服务器的CLSID、程序应用模型和初始化COM库的线程模式进行初始化设置。将数据项用树形结构标识,然后设计数据项和硬件设备的数据绑定设置界面以及实时显示数据项列表界面,并将数据存储区与硬件通信接口联系起来,实现用户自定义组态功能。设计用户界面主要包括6部分,分别是:菜单栏、工具栏、 设备树形列表、标签列表、信息列表和状态栏。借助Dot Net4.0平台的Socket类定义封装了一个Tcp Socket TCP通信类,通过此类可以完成TCP连接断开、发送接收数据和发现断开自动重连功能。

在OPC服务器程序关闭时需要将数据项的属性以及硬件设备设置的参数作为组态配置文件保存起来,便于下次OPC服务器运行时能自动调入组态配置文件, 自动完成初始设置。利用Dot Net 4.0的序列化和反序列化技术,可以将数据对象序列化到文件中和将文件反序列化到数据对象[8]。

经过用户自定义组态配置好数据点后,可以运行OPC服务器开始轮询设备数据,将实时获取的数据更新到数据缓冲区内。根据OPC服务器数据结构关系, 每一个设备对应一个轮询线程,这样OPC服务器可以对多个设备独立地读写设备数据。其中轮询线程是由Back Groud Monitor类实现的。

4 OPC服务器的测试结果与分析

如表2所示,OPC服务器的测试环境包括软件环境和硬件环境。图5显示了测试环境的结构图,在一台普通操作系统为Windosw XP的普通PC机上依次安装SIEMENS Win CC6.2,KEPware测试客户端和Modbus Slave数据模拟器。通过普通双绞线将PC与交换机连接, 一台Multi Bus-RTU网口直接连接交换机,另一台Multi-Bus-RTU的RS 485口通过Multi Bus网关与交换机连接。

4.1 OPC服务器功能测试

打开KEPware测试客户端,选中“Lensys.Modbus.TCP.DA.3”节点,可建立与OPC服务器的通信连接。在Lensys.Modbus. TCP.DA.3”节点中可查看OPC服务器的属性,打开Win CC项目管理器Win CC Exploer,点击新建菜单,创建一个单用户测试项目,项目名称为OPCSer-ver Test。 创建一个如图6所示的OPC服务器测试界面。其中Multi Bus-RTU1#直接连接交换机,Multi Bus-RTU 2#通过Multi Bus网关间接连接交换机。分别获取Multi Bus-RTU的4类共8个数据,具体含义参见表3。

打开添加驱动程序对话框,完成添加OPC接口驱动程序,打开OPC服务器,测试页面组态Multi Bus-RTU1#设备和Multi Bus-RTU 2#设备数据点的轮询周期为500 ms。

打开OPC条目管理器,选则要连接的OPC服务器,点击”浏览服务器“按钮,查看OPC服务器内的数据地址空间,依次将需要存取的数据点添加到变量管理器中。依次将变量管理器中的OPC数据点与组态表格中的值列关联,至此基于Win CC完成了对OPC服务器的测试项目。

4.2 OPC服务器性能测试

OPC服务器的性能测试需要大量数据源才能进行, 由于Multi Bus-RTU可以提供的数据量有限,因此利用Modbus Slave提供数据源。通过Modbus Slave,可以模拟一个通信协议为Modbus的设备,这个设备可以包含无限量的数据。打开一个Modbus Slaves进程,配置设备ID为1,通信参数Port为502,IP默认为本机地址。然后依次配置如表4所示的数据点。

按照上述配置,依次打开10个Modbus Slave进程, 此时有了10个模拟设备,每个模拟设备包括4类数据, 每类数据数量为25个,即共计1 000个数据点。

经过上述Modbus数据源配置、OPC服务器配置,首先将10个模拟设备(Modbus Slave)进行本地TCP绑定, 作为数据提供源;其次点击OPC服务器界面工具栏中的“启动服务器”按钮,则OPC服务器开始存取10个模拟设备数据,此时观察OPC服务器下侧的信息列表,是否有警告或错误信息,打开Windows任务管理器,观察OPC服务器进程的CPU和内存消耗。经过1天时间的测试,无任何警告或错误信息,OPC服务器进程的CPU占用保持在3%左右,内存消耗保持在8 MB左右。

5结论

本文基于Modbus TCP协议的OPC数据存取服务,在对市场进行深入调研的基础上,结合国产嵌入式产品工程应用的现状,开发了OPC数据存取服务器。通过OPC数据存取服务器实时获取设备过程数据,利用国内外现有SCADA的OPC客户端接口,轻松地实现了与某国产Multi Bus-RTU互联通信。不仅利用了OPC的技术优势,如访问速度和稳定性,还节约了成本,减少了通信驱动数量。鉴于Windows在工控领域的成熟度和稳定性,以及Dot Net Frame Work的跨平台性,基于Dot Net4.0平台封装OPC接口,通过编程实现了Modbus TCP通信协议以及良好的人机交互界面,并通过了功能测试和性能测试。

摘要:针对OPC技术在国内的应用现状,以OPC数据的存取规范为依据,利用国产Multi Bus-RTU系列模块基于Modbus TCP协议对OPC数据访问服务器进行开发,设计采用OPCMaster公司的OPC开发工具OMOPCSvr.dll实现OPC数据传输服务器的开发,通过以太网方式,在Modbus设备和OPC客户端之间提供数据交换通道。通过对OPC数据访问服务器结构和操作流程的设计,构建了服务器的功能框架。基于Modbus TCP OPC服务器和Windows平台,通过对服务器进行初始化,对通信驱动模块和用户界面进行规划,进而对OPC数据访问服务器进行了详细的实现。通过进一步的OPC服务器测试发现,该服务器具有可靠的稳定性,能切实地节约成本,减少通信驱动数量,并缩短开发周期。

关键词:OPC服务器,COM/DCOM,数据访问,Modbus TCP

参考文献

[1]李绍成,马连祥.面向PLC的OPC服务器设计与开发[J].制造业自动化,2011,33(12):19-21.

[2]望荆沙.基于OPC DA 3.0的OPC服务器与客户端的研究与实现[D].西安:西安电子科技大学,2012.

[3]孙绪洁,梁岚珍.基于TLSvr RDK.dll技术的电厂燃煤数据OPC服务器研究[J].化工自动化及仪表,2011(12):1461-1465.

[4]刘瑞祥,倪福生,顾明.基于VC++和OPC的冗余监控程序设计[J].机电工程,2012,31(8):1094-1097.

[5]杨之乐,郑学理,苏伟,等.工业无线网络测控系统OPC数据服务器的设计实现[J].计算机测量与控制,2013,21(4):865-869.

[6]吕亚锋,成立存.基于Modbus TCP/IP协议的海上油田发电机组网络监控系统[J].北京联合大学学报:自然科学版,2014,28(3):389-393.

[7]黄礼超,巫茜.基于OPC的工控系统软件集成[J].重庆理工大学学报:自然科学版,2012(3):109-113.

Web访问特征模型建模 篇8

网络访问特征的研究与网络性能的改善有着密切的关系[1,2,3]。很多研究表明[1]],网络流量的不同特征对Web缓存性能有不同的影响。由于真实日志并不具备相应特征的灵活性,可以在充分研究Web对象访问特征的基础上,通过数学建模方法来模拟生成Web日志。网络流量建模能够灵活地生成所需要的网络流量,通过模拟的流量能够克服实际日志的缺点,诸如日志收集困难,存储空间过大,日志的异常行为等,以便更好地应用于实际。

本文研究了Web流量特征建模,设计了一个日志建模器WebGenM,可以生成所需的模拟日志,为进一步的缓存及预取技术研究提供了重要依据。

1 相关工作

1.1 齐普夫法则

齐普夫第一法则[6]:假设一个单词在文章中出现次数为P,出现次数排名i,那么它们遵循下面的关系:Pi=K/iα,K为常数,α∈[0.5,1]。

齐普夫第二法则[6]:如果出现频次为1的词汇数量为x时,那么可推知频次为2、3、4…n次的词汇数量分别为x的1/22、1/32、1/42…、1/n2。后来Booth又对上述公式进行了修正,提出In/I1=2/n(n+1),In指出现频次为n的词汇数量。

对数正态分布的定义:如果X~N(μ,σ2)(即X是正态分布),那么ex是对数正态分布,用LN(μ,σ2)来表示,它的概率密度函数是

双指数的Pareto分布是重尾分布的,它的密度函数为:p(x)=akax-a-1,a、k>0,x≥k。它的累计分布函数为:F(x)=P[X≤x]=1-(k/x)a。

1.2 网络流量的共同特征

为了对网络访问特征建模,需要利用网络访问的一些共同特征如被请求文档的类型,文档的流行度,分档大小的分布等:1)对Web服务器的文件请求主要集中在.img和.html(htm)。其中,.img占60%左右,.html(htm)占30%左右[1];2)文档的访问频率服从类齐普夫法则[6];3)文档的大小分布尾分布服从重尾分布,体分布服从对数正态分布[1,3];4)许多文档(大约50-70%)仅被访问一次[1,5];5)约10%的访问文档占了总的访问的90%[1,5];6)Web对象访问具有时间局部性和空间局部性[2,4,7,8]。了解这些特征对于网络访问建模起着很重要的作用。

1.3 文档的访问距离模型(IAD)

访问距离[6]指某个Web文档两次访问之间被其它Web文档隔开的文档总数,利用N={1,…,n}即i=1,…,n来代表N个可缓存文档,到达缓存的一系列请求用{Rt,t=0,1,…}来表示,如果Rt=i,那么第t个访问文档是i,{Rt,t=0,1,…}的流行度被定义为:P=(P(i),…P(N)),

请求序列的时间相关性被定义为:

1.4 IRM模型

IRM[2]模型是指一个访问流中的所有对象都完全不相关,每个请求都独立于其他任何访问请求,这个模型其实是一个理想模型,由于每个文档之间都会有一些相关性,所以没有访问流是符合这种分模型的。在IRM模型中,它的IAD分布服从几何分布,几何分布是个无记忆分布。根据1.3定义的访问概率P=(P(i),…P(N)),可知IAD为k的概率di(k)为:

总的IAD概率函数为:

1.5 文档的访问相关性

变异系数[8]可以用来度量访问局部性的相关性。变异系数为它的标准方差除以它的均值,变异系数是对一个分布的相对分散度的一个简单度量的方法。

如1.3所描述,IRM模型的IAD分布服从几何分布,对于一个给定的几何分布,均值是:μ=1/p,方差是:σ2=(1–p)/p2,则它的变异系数为:

当访问文档间没有访问相关性时,CV值很接近于1,它的相关分布可以认为是IRM,而值大于1时代表分布具有访问相关性。

2 网络流量特征建模

WebGenM分为四个建模部分,通过对四个主要访问特征的建模来模拟网络访问流。

2.1 文档流行度建模

当前很多文献采用齐普夫第一法则对文档流行度建模,但齐普夫第一法则模拟流行度比较高的对象比较准确,而对流行度比较低的对象模拟不准确[7],为此引入齐普夫第二法则对低频对象建模。

为了模拟文档的流行度,可以先根据齐普夫第二法则求出常数K,然后根据第一法则求出高频区的流行度P。

算法1:模拟文档的流行度:

已知文档的总请求数N,不同的访问文档数,低频区文档数,齐普夫参数β,根据以上分析可求出高频区文档的流行度。方法如下:

1)根据Im/I1=2/m(m+1)可求出低频区各个流行度的文档个数;

2)根据K=Pm(高频区不同的文档数+Im/2)β来估计K的值;

3)根据Pr=K/rβ求出高频区文档的流行度P;

2.2 文档大小分布模型

对于文档大小分布的研究表明,采用两部分分别模拟比较准确:一是体分布,二是尾分布。本文用对数正态分布来模拟体分布,用Pareto分布来模拟尾分布,最后把重尾分布的尾分布与体分布连接起来。

算法2:模拟文档的大小分布:

已知α(尾参数),k(尾起始点),μl(对数正态分布的均值),σl(对数正态分布的方差),根据这些参数和下面的算法可求出各个文档的大小。

2.2.1 模拟尾分布

当小于或等于尾部文档的个数时,循环执行下面n次:

1)生产一个随即值y';

2)用计算文档的大小;

2.2.2 模拟体分布

根据已知的对数正态分布的均值和方差求出正态分布的均值μ和方差σ;当小于或等于体分布的个数时,循环执行下面n次:

1)根据Polar方法求出符合标准正态分布的变量值对x和y;

2)Return

2.2.3 连接

把前面一和二求得体分布和尾分布连接起来得到Web对象大小分布。

2.3 时间局部性建模

Web访问时间局部性指访问过的对象在将来的短时间内很可能将会被再次访问。在对时间局部性的建模中,时间局部性模型就是根据算法1生成的文档流行度对访问序列进行排序,使用动态LRU栈方式进行生成。

算法3:模拟时间局部性:

根据算法1求出的文档流行度,下面的算法输出文档的访问顺序。

当总的访问次数大于0时,循环执行下面算法n次:

2.3.1 栈不空并且要访问的对象在栈中

1)把文档赋给输出流Refstream;

2)判断文档的剩余访问次数是否为0,如果为0,则将此对象从堆栈中移出,其下面的对象顺序上移;如果不为零,则将此对象移至栈顶,其它对象顺序下移。

2.3.2 栈为空或要访问的对象不在栈中

1)随即生成一个访问并把它赋给输出流Refstream;

2)如果文档的剩余访问次数为零,则不入堆栈,否则将此对象存入栈顶,其它对象顺序下移.

最后得到输出流Refstream。

2.4 访问相关性模型

变异系数可以为空间局部性的相同文档建模,通过变异系数来反映相同文档间的空间局部性的强弱。变异系数的计算方法可以参考1.5的描述,每个不同的访问文档都有自己的访问距离变异系数,由于中间值稳定,且独立于日志的总长度,可以用中间值描述文档访问相关性整体的特征。

算法4:模拟Web对象相关性

已知文档的总请求数N,不同的访问文档数,下面的算法输出Web对象变异系数值。

1)根据日志求出不同文档的IAD分布;

2)对每个不同文档,求出其IAD分布的变异系数;

3)对变异系数排序之后,就可求出变异系数的中间值,则得出日志的总的变异系数。

3 实验

本实验测试建模的流量特征是否和真实的特征一致,是否可以代替真实日志应用到实际应用中。

3.1 实验目的

为了对建模的网络流量性能进行测试,在实验中验证模拟日志的访问流行度特征和文档大小特征,实验分析表明Web访问特征建模符合前面1.2所描述的特征,表明建模能仿真真实日志,能够替代真实日志用于Web性能研究等方面。其中,模拟日志生成的依据是建立在第二部分的基础上。

3.2 实验结果

流量的特征主要集中在文档流行度和文档大小分布方面,通过验证这两方面的建模来验证模拟日志的整体建模。

3.2.1 模拟日志的流行度建模

建模的日志根据流行度和排名关系(取对数后)画出图1,从图中可以看到图形接近于一条直线,可知访问频率符合齐普夫法则。

3.2.2 模拟日志的文档大小建模

根据文档大小的分布画出图2,可以看到图形接近于一条直线,且图中测量到的斜率值(大约为-1.2左右)和输入的尾参数值(α=1.2)匹配,可知它的大小分布符合重尾分布。

4 结束语

根据网络访问特征进行建模,可以解决实际中真实日志面临的收集难等问题,实验表明WebGenM能较好地对网络流量特征进行建模,具有较大的灵活性。建模可以用于测试和预测缓存性能,从而提出更有利于缓存性能提高的算法和思想。

摘要:Web访问特征模型建模是进行有效Web缓存管理的基础。该文根据Web访问的四个典型特征建立综合的数学模型,实现了Web访问特征建模生成器(WebGenM),实验表明模拟器能较好地模拟网络访问流的特征,而且易于使用,具有较大的灵活性,其为进一步的Web缓存和预取技术的研究提供了重要依据。

关键词:Web缓存,Web预取,齐普夫法则,时间局部性,空间局部性

参考文献

[1]Shudong Jin and Azer Bestavros.Temporal locality in web request streams[R].Technical Report,Boston University Computer Science Department,2002.

[2]Fonseca R,Almeida V,Crovella M,et al.On the intrinsic locality properties of web reference streams[C].In Proc.of IEEE INFOCOM Conference,2003.

[3]Busari M,Carey L.Williamson.ProWGen:a synthetic workload generation tool for simulation evaluation of web proxy caches[J].Computer Networks,2002,38(6):779-794.

[4]Breslau L,Cao P,Fan L,et al.Web caching and Zipf-like distributions:evidence and implications[C].In Proceedings of IEEE Infocom.New York:IEEE Computer and Communications Societies,1999:126-134.

[5]Arlitt M and Williamson C.Internet Web Servers:Workload Characterization and Performance Implications[J].IEEE/ACM Trans,on Networking,1997,5(5):631-645.

[6]Roadknight C,Marshall I,Vearer D.File Popularity Characterization[C].Proceedings of the Second Workshop on Internet Server Performance,1999.

[7]Lei Shi,Yingjie Han,Xiaoguang Ding,et al.An SPN based Integrated Model for Web Prefetching and Caching.Journal of Computer Science and Technology[J].2006,21(4):482-489.

数据库跨网访问的研究与实现 篇9

关键词:安全访问代理,SQL过滤,数据库安全,远程方法调用,Java数据库连接

0 引言

随着信息化进程的深入和互联网的快速发展,网络化已经成为企业信息化的发展趋势,信息资源也得到最大程度的共享。“SG186工程”是国家电网公司“十一五”信息化规划项目,该工程推进了国家电网公司的信息化建设。在信息化过程中,如何在同一客户端访问到不同类型的数据库、如何提高数据库跨网访问的安全性,以及如何确保数据库安全性和通用性,已成为电力信息化当务之急。

对于数据库应用系统的安全和通用性,国内外已提出多种解决方案,但这些技术通常不能兼顾安全性和通用性。为此,本文采用远程方法调用(RMI)和Java数据库连接(JDBC)技术实现了数据库跨网访问系统。

1 设计方案

1.1 数据库安全代理系统一般拓扑

数据库安全代理系统的典型拓扑结构见图1。

代理系统部署在电力信息系统内网核心数据库与应用系统之间,对重要的数据库操作进行细粒度的权限控制和内容过滤[1],可控制具体的访问地址、端口和应用协议,实现对常用数据库产品的访问,并保护信息内网关键业务系统的安全稳定运行。

1.2 结构设计

对数据库的访问需求有:①能跨网访问数据库;②能满足对大部分数据库产品的访问需求;③能控制访问地址、端口和应用协议。因此,提出了基于RMI和JDBC技术实现的体系结构[2],如图2所示。其包含服务器端代理(agent)和客户端代理[3]。外网应用对内网数据库的所有访问都需经过服务器端代理和客户端代理才能实现。

服务器端代理代替真正的数据库服务器,处理Web应用程序对数据库的访问请求,并将数据库服务器的访问结果返回给Web应用程序。客户端代理代替真正的客户端,对数据库服务器提交访问请求,并接收数据库服务器的访问结果。

服务器端代理安装运行在客户端主机上,包含专用JDBC驱动和RMI客户端。专用JDBC驱动将Web应用的JDBC调用请求组装成网络协议包,通过RMI客户端以网络传输形式转发给客户端代理。客户端代理包含各数据库厂商提供的标准JDBC驱动和RMI服务器,通过RMI服务器接收服务器端代理传输的网络包,并对其进行解析。解析后的地址信息首先要进行安全过滤,过滤通过后调用标准的JDBC驱动与各数据库管理系统(DBMS)进行交互,并将返回结果送给服务器端代理。

系统采用RMI和JDBC技术实现的优点如下:

1)RMI可将完整的对象作为参数和返回值传递,而不仅仅是预定义的数据类型。即可将类似SQL语句[4]、IP地址、媒体访问控制(MAC)地址、端口号、协议类型等信息作为一个参数进行传递。

2)RMI采用多线程处理方法,可使服务器利用这些Java线程更好地并行处理客户端的请求。

3)根据数据库厂家提供的标准JDBC驱动即可实现对该类型数据库的访问,具有良好的通用性。

4)RMI与JDBC技术相结合可以实现对数据库的跨网访问。

5)RMI具有Java“编写一次,到处运行”的特点。基于RMI/JDBC的代码可以百分之百地移植到任何Java虚拟机上,因而服务器端代理使用方便、灵活。

安全过滤机制通过控制服务器端代理和客户端代理传输的地址信息实现。通过对传输地址信息中的IP地址、MAC地址、端口号、协议类型信息的分析[3],可以实现应用对数据库的访问控制,从而提高数据库跨网访问的安全性。

2 数据库安全代理系统的实现

2.1 服务器端代理

服务器端代理由专用JDBC驱动和RmiJdbc客户端组成。专用JDBC驱动在Web应用环境中进行配置,当Web应用对数据库服务器提出访问请求时,首先调用专用JDBC驱动,专用JDBC驱动调用RmiJdbc客户端提供的方法和对象。

专用JDBC驱动根据JDBC3.0开发,为Oracle,DB2,SQL Server,PostgreSQL等多种数据库的JDBC驱动提供统一的接口。当Web应用访问数据库服务器时,无需考虑调用的是何种数据库服务器,只需调用专用JDBC驱动即可。专用JDBC驱动会将JDBC调用请求通过RMI客户端调用接口调用客户端代理提供的相应数据库JDBC驱动。

专用JDBC驱动与标准JDBC驱动通信采用RmiJdbc技术实现[2]。专用JDBC驱动产生JDBC调用请求时,RmiJdbc客户端程序会将JDBC调用请求组装成网络协议包的形式传送给RmiJdbc服务器端,通过RmiJdbc服务器端调用标准JDBC驱动方法和对象。JDBC调用流程如图3所示。

2.2 客户端代理

客户端代理作为一个模块加载,由标准JDBC驱动、RMI服务器、安全过滤器、驱动管理器组成。

标准JDBC驱动由数据库厂商提供,通过标准JDBC驱动客户端代理可代替真正的客户端与真正的数据库服务器的DBMS进行数据交互。例如:通过ojdbc14.jar访问Oracle、通过mssqlserver.jar访问SQL Server 2000等。

RMI服务器[2]接收服务器端代理的网络协议包,将其包含的地址信息还原,并传送至安全过滤器,通过安全过滤后将其传送给数据库连接池,数据库连接池通过匹配其所连接的数据库后分配一个连接,通过该连接调用JDBC标准驱动与真正的DBMS进行数据交互,并获得数据库返回结果。将结果以统一的格式发送给服务器端代理。

安全过滤器[3]负责对RMI服务器传送的地址信息进行安全过滤。安全过滤可实现对IP地址、MAC地址、端口号、协议类型等地址信息的过滤控制,确保合法的应用对合法数据库的安全访问。IP过滤不通过会给RMI服务器过滤不通过信息,通过RMI服务器通知服务器端返回操作失败信息。

驱动管理器负责各数据库标准JDBC驱动的加载及更新,当数据库连接池中有需要的数据库连接时,自动加载该数据库对应的JDBC标准驱动。其调用过程如图4所示。

3 系统特点及应用

3.1 软硬件特点

数据库代理系统的软、硬件特点如下:

1)采用安全加固的Linux操作系统。根据最小特权原则对装置的软件、硬件制定MAC策略[5]。

2)裁减网络协议栈。装置无TCP/IP协议栈,可以抵御一切从网络发起的对装置的攻击行为。

3)严格的访问控制策略。只有特定的TCP链路才能通过本装置。可通过配置对源IP、目的IP、目的端口进行控制,可以检查相应的MAC地址是否正确,最大限度地防止报文欺骗。

4)高速稳定的工控机硬件平台。系统采用研祥1U工控机,提供冗余电源、1 GB CF卡、PCI接口、4个网络接口,支持旁路(bypass)和看门狗(watchdog)等功能。

3.2 实现特点

部署在数据库服务器与Web/APP服务器之间,在满足应用对数据库正常合法访问的同时,对后台数据库服务器实施保护。系统具有以下特点:

1)屏蔽了真正的数据库。应用服务器的所有数据库操作通过专用的JDBC驱动来完成。对用户而言,服务器端代理服务器(proxy server)相当于一台虚拟的数据库主机,用户不知道真正的数据库主机地址,也无法直接与数据库服务器进行交互。这种物理隔离可以有效保证数据库服务器的安全。

2)部署方便。只需安装服务器端代理软件,应用业务主机可通过数据库安全代理的标准JDBC驱动访问远程数据库。同时,RmiJdbc技术可屏蔽防火墙软件对数据库操作的影响[5]。

3)具有良好的通用性。SQL代理服务器对于真正的数据库服务器而言,相当于一个普通的客户端。它们之间通过数据库厂商提供的JDBC驱动进行交互。只需要在SQL代理服务器上简单配置,就可以兼容各个主流数据库。屏蔽了各个数据库产品间差异,应用程序只要是标准的JDBC调用,几乎可以不加修改地完成数据库操作。

3.3 典型应用

在电力市场交易运营系统中,客户从信息外网通过Web/APP服务器访问位于信息内网的数据服务器存在很大的安全隐患。为了提高系统的安全性及保护内网数据库,在应用服务器与数据库服务器之间部署了数据库代理系统。其拓扑如图5所示。

在保护数据库服务器的同时,满足了应用对多种数据库的访问,同时具备网络隔离、地址绑定、访问控制等功能。

4 结语

基于RMI和JDBC技术的数据库代理系统能够满足电力系统内业务应用对数据库的正常访问,同时有效保证了内网数据库的安全。目前,所开发系统已经通过了国家电网公司组织的评审和国家相关安全部门的安全性检查,并已在多个网省公司得到了成功应用。

参考文献

[1]郭金龙,李金宝.PostgreSQL分析器的研究.黑龙江大学自然科学学报,2001,18(4):49-52.GUO Jinlong,LI Jinbao.PostgreSQL research analyzer.Journal of Natural Science of Heilongjiang University,2001,18(4):49-52.

[2]张仕斌.Java程序设计与应用.北京:清华大学出版社,2005.

[3]贺达,洪飞龙,鄢田云,等.数据库应用系统中安全代理的研究与实现.网络安全技术与应用,2005(2):18-20.HE Da,HONG Feilong,YAN Tianyun,et al.Design and i mplementation of database application system security access agent.Network Security Technology and Application,2005(2):18-20.

[4]孙兆玉,朱鸿宇,黄宇光.一种SQL语法分析的策略和实现.计算机应用,2007,27:18-20.SUN Zhaoyu,ZHU Hongyu,HUANG Yuguang.One strategy of SQL syntax analysis and the achievement.Computer Application,2007,27:18-20.

数据建模与访问 篇10

ADO.NET是一组向.NET程序员公开数据访问服务的组件,是Microsoft为解决Web Service和分布式应用程序而设计的新一代数据访问对象。针对ADO的缺陷,ADO.NET引入了一些新的对象,使不同程序语言创建的应用程序能互相通信,并支持底层数据交换,比ADO更适应于分布式系统及Internet等大型应用程序环境。ADO.NET包括两个核心组件Dataset和.NET Platform Data Provider[1]。

(1)Dataset是ADO.NET的非连接结构的核心。Dataset的设计目的是在本地内存中实现一个数据缓存,实现独立于任何数据源的数据访问模式。Dataset包含一个或多个Data Table对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关Data Table对象中数据的关系信息组成;(2).NET Platform Data Provider是一组包括Connection、Command、Data Reader和Data Adapter对象在内的组件,用于实现对数据库的连接操作和快速只读的访问。Connection对象提供与数据源的连接;Command对象用来执行数据库命令;Data Reader从数据源中获得高性能的数据流;Data Adapter对象是连接数据源和Dataset对象的桥梁。Data Adapter使用Command对象在数据源中执行SQL命令和调用存储过程,将数据加载到Dataset中,并保持Dataset中数据的更改与数据源中的数据一致。Data Provider访问数据库的模式如图1所示。

2 访问模式及选择

2.1 连接访问模式

基于连接的访问模式是基本数据访问模式,也是实际应用开发中最常采用的模式。这种数据访问模式会占用一个数据库连接,然后读取数据。每个数据库操作都要通过这个连接来与后台的数据源进行交互。基于连接的访问模式是通过Data Reader对象来实现的,Data Reader对象在已经建立的数据连接的基础上,提供对数据源的向前、只读的在线数据访问方式。由于连接访问模式提供快速向前、只读的来自数据库的数据流,选取Data Reader方式提高数据访问速度的使用原则是:(1)不需要缓存数据;(2)正在处理的结果集太大而不能全部放入内存中;(3)需要迅速一次性访问数据,采用向前的只读方式。

2.2 断开访问模式

断开访问模式的主要组件为Dataset。Dataset完全是一个非连接的、与数据源无关的组件。可以把Dataset当成内存中的小型数据库。Dataset是不依赖于数据库的独立数据集合,即使断开数据链路或者关闭数据库,Dataset依然可用。Dataset在内部使用XML描述具有复杂关系的数据,针对不同的数据源类型,它都会提供一致的数据关系模型,Dataset通过Data Adapter控制其与各种数据源的交互。

3 数据访问性能优化

3.1 模式优化

3.1.1 连接模式

默认情况下,Data Reader对象使用Read()方法把整行数据载入内存中,从而允许用户随机访问当前行的任意列。如果随机访问列是不必要的,可以修改Data Reader组件中Command Behavior.Sequential Access的默认值,只在需要时才把数据载入内存,并且要求按次序访问返回的行中的列值,因此可以进一步节省内存开销,提高访问速度。对读取大量的二进制数据时,可以大大提高访问速度。

当要结束从Data Reader中读取数据,但是仍然有大量的未读取的结果时,可以调用Command的Cancel()方法而不是Close()来提高性能。调用Data Reader的Close()方法引起它检索未读取的结果,并且先清空数据流后关闭游标,调用Command的Cancel()则直接删除服务器上的结果。因此当Data Reader取消连接时,它不需要再读取结果,因而能提高性能[2]。

Data Reader对象提供了快速的数据访问,但不具备灵活访问数据的功能,如果程序要求对数据进行大量的操作,或者要求能够随机访问,可以采用下面讨论的断开访问模式。

3.1.2 断开模式

对于数据变化不大的结果集,可以通过缓存Dataset来提高应用程序的性能。每次请求时,可以检查Dataset的缓存,Dataset在接受新请求的情况下才连接到数据库,这样可以减小连接的开销,提高访问性能。另外,还可以采用类型化的Dataset来提高性能。类型化Dataset是从标准Dataset类继承而来的,可以把数据的架构预先在派生类中建立起来[3]。在设计时建立了类型化的Dataset,在运行时就不再需要建立数据的结构。因此如果在设计阶段掌握了数据的架构,可以使用类型化Dataset。

3.2 选择.NET数据供应组件

ADO.NET的数据库访问基础是.NET Platform Data Provider。其中最常用的是OLEDB和SQL Server两种,前者主要用于连接支持OLE DB接口的数据库,如Oracle,MS SQL Server,Access等,而后者则是为连接SQL Server数据库所定制的,由于它使用TDS Tabular Data Stream数据交换协议与数据库交互,不必通过OLEDB层的协议转换,较之OLE DB数据供应器,它的性能可高出30%~40%。对于以SQL Server为后端数据库的应用程序,应该首选基于SQL Server的数据供应器以获得最佳性能。

3.3 合理利用存储过程

存储过程是数据库的一个关键组件,其优点包括:支持标准组件式编程,创建后可以多次调用,极大地提高了程序的可移植性;存储过程是预编译的,运行前查询优化器对其进行分析优化,能够实现较快的执行,有效降低网络负载;系统管理员通过对存储过程的权限进行限制,能够实现对相应的数据访问权限的限制,避免非授权用户对数据的访问,保证数据的安全[4]。由于存储过程具备众多优点,在应用A-DO.NET访问数据库时应考虑使用存储过程来提高性能。在ADO.NET中使用存储过程时,只要把Command Type的类型设置成Stored Procedure,然后传递存储过程的名称就可以调用存储过程,并且可以设置输入、输出类型的参数来传值。

3.4 采用连接池

创建一个新的数据库连接所耗费的时间取决于网络的速度及应用程序和数据库服务器的(网络)距离、数据库服务器的硬件性能等等,而这个过程通常是耗时、耗资源的过程[5]。而连接池可以减少连接所消耗的时间和系统资源,采用连接池后,只要少量的连接对象就可以满足大量客户端的需要。每一个连接池都与一个独立的连接字符串及其事务进行关联。每次打开一个新的连接,Data Provider会尝试将指定的连接字符串与连接池的字符串进行匹配。如果匹配失败,Data Provider创建一个新的连接并将它加入连接池。连接池创建之后,系统会创建一些连接对象并将它们加入连接池,直至达到额定的最小连接对象数量。以后,系统会根据需要新建和加入连接对象,一直到达最大连接对象数量限额为止。除了服务器的连接池功能,还提供了客户端ADO.NET连接池功能,可供单个进程中参与连接的两个数据提供程序使用。充分地采用连接池,可以改善性能并促进应用程序存取数据的可伸缩性。

4 结语

在介绍ADO.NET结构体系的基础上,分析了ADO.NET两大数据访问模式,提出了一些优化策略其数据访问性能的方法。当然,所分析的各种技术和方法都具有一定的适应范围,只有根据实际业务需求进行灵活的运用,才能极大地优化程序。通过设计人员较多的经验积累和灵活运用,使应用程序能够获得最大的数据访问效率。

摘要:通过分析ADO.NET的体系结构,给出了ADO.NET的两种数据访问模式,并提出针对这两种数据访问模式的选取原则,深入分析了提高数据访问效率的优化方法。

关键词:ADO.NET,数据访问模型,优化方法

参考文献

[1]周晓娟.基于ADO.NET的数据库访问技术研究[J].现代商贸工业,2009,(24):292-293.

[2]刘万授.ADO.NET性能的优化[J].现代计算机,2004,(197):36-38.

[3]陈平,池同柱.ADO.NET数据访问模式的选择及优化[J].福建电脑,2007,(7):80-81.

[4]涂静.ADO.NET调用存储过程的方法[J].电脑与信息技术,2003,(3):33-36.

上一篇:跖趾关节置换下一篇:临床应用进展