数据访问接口范文

2024-06-23

数据访问接口范文(精选9篇)

数据访问接口 第1篇

OCI (Oracle Call Interface) 是Oracle公司开发的一个应用程序开发工具, 它提供了一组可对Oracle数据库进行存取的接口子例程, 通过在第三代程序语言中进行调用可达到存取Oracle数据库的目的[1]。作为一种数据库访问方法, 它比ODBC更灵活, 访问数据库服务器速度更快[2], 而在UNIX平台这几乎是唯一的访问方法。在应用系统的开发中, 通常通过对OCI的封装为其他开发人员提供访问数据库的接口。本文讨论了OCI接口在非阻塞方式下的编程中需要改进的地方, 并给出解决这个问题的方法, 文中方法也可以较好地应用于类似阻塞问题的解决。

2. OCI数据库访问接口的设计和实现简介

2.1 接口的设计要求

一个应用系统往往由多个团队同时进行开发, 基于OCI的数据库访问接口一般要求:对OCI底层函数调用进行类的封装, 提供统一友好的接口, 隐藏复杂的OCI函数调用, 对外只提供连接、执行、查询、断开等直观的数据库访问方法;封装接口具有跨平台特性, 可以在windows和多种UNIX平台中使用。

2.2 接口的实现

基于OCI的数据库访问接口采用C++语言开发, 参考众多开源OCI的C++封装接口, 以下为基于OCI 7.3的一个实现, 该接口提供两个类:COCIConnMan和COCISql, 其中:COCIConnMan是基于OCI的数据库连接管理接口, COCISql是基于OCI执行SQL语句的接口。上述两类的主要接口如下:

其中OpenConnect中调用oopen打开连接, ExeSql调用oparse、oexec等函数完成SQL语句的执行和结果的返回, Test_Conn使用"select 1 from dual"查询语句进行数据库运行状态的检查。

2.3 阻塞与非阻塞

在应用系统中, 数据库的访问通常使用如下的软硬件部署:配置专用的Oracle数据库服务器, 其他的主机无论是应用软件运行的服务器或者运行用户界面的主机均安装oracle的客户端, 运行在这些主机上的进程使用OCI接口访问数据库。该接口在这样的应用系统大部分运行时间能较好地完成任务, 但是一个长期不间断运行的应用系统不可避免会出现数据库服务器宕机或网线插拔的动作, 如果这时进程正在使用OCI接口进行数据库操作, 进程将阻塞于正调用的OCI函数上, 如果故障不能及时恢复, OCI函数将长时间阻塞十几分钟, 对应用程序来讲大多数情况下这是不允许的。

OCI函数有两种工作方式:blocking (阻塞) 和non_blocking (非阻塞) 。在OCI的非阻塞方式下, 如果某个OCI函数 (如oopen) 只需调用一次即可获得成功或失败的结果, 说明该函数本身就是非阻塞的;如果某OCI函数 (如olog, oparse等) 是通过不断循环调用同一函数直到获得运行结果, 则该函数为阻塞函数;如果接口中的OCI函数工作于非阻塞方式是否可以在数据库服务器宕机或网线插拔这样的情况发生时及时发现故障, 减少阻塞时间呢?答案是否定的, 以oopen为例, 这个函数依然会长时间阻塞, 也就是说OCI函数的非阻塞实际上是在服务器、网络工作均正常下表现为非阻塞而在故障发生时表现为阻塞, 这与TCP编程中socket函数的非阻塞在表现上完全不同, 毕竟后者的功能是在操作系统层面上提供的。

3. 阻塞问题之改进

3.1 基于sigalarm的解决方法

在UNIX系统中对于阻塞的解决通常使用sigalarm信号[5], 在可能的阻塞模块前调用alarm函数, 以信号触发的时间为函数的参数, 然后调用阻塞函数, 如果阻塞在指定的时间里得以完成, 可以调用alarm (0) 解除定时器, 这个技术在许多著名软件中得到使用, 如ftp服务器软件wu_ftpd。该方法在单线程环境中可以较好地解决上述OCI阻塞问题。但是大型的应用系统进程通常都由很多模块组成, 不可避免地需要使用线程, sigalarm信号是异步信号[6], 在多线程环境中不太容易控制。这种方法的另一个问题是其跨平台性稍差, 不能在Windows环境中使用。

3.2 基于子线程的解决方法

在Windows和UNIX操作系统, 许多阻塞函数都有超时版本, 比如pthread_cond_time dwait是条件变量超时等待的版本, 如果将OCI阻塞的程序段放入一个临时创建的线程T1里, 如果T1中的程序段能够在指定时间里完成, 在主线程回收T1, 当主线程发现T1运行超时, 强行终止T1;这样就可以将上述封装的接口函数改造为"超时阻塞"功能的版本。以下为对exesql改造后的UNIX平台的关键代码:

exesql为子线程, sqlparam为参数, 该线程体里执行SQL语句, 如果能够在指定时间完成, 子线程中将调用pthread_condition_signal, pthread_cond_timedwait的阻塞将被解除从而得到pthread_join的正常回收, 否则pthread_cancel将强行终止这个线程。

该方法的优点是处理粒度较大, 前面描述的基于sigalarm的处理方法必须对每个可能产生阻塞的OCI函数进行改造, 工作量较大;子线程方法可以对包含多个OCI函数的封装函数如ExeSql进行处理, 改造时较为方便。

该方法的缺点是在实用中存在一定的效率问题, 通常一个线程的创建和回收需要花费一些系统时间, 如果每一个需要执行的SQL语句都用这样一个线程来完成, 较多的请求势必带来较大的开销。

3.3 基于可管理线程的解决方法

如果能够连续地将OCI请求函数的执行放入同一个线程中, 就可以省去创建与回收的时间, 以下为部分参考著名开源软件包libprops[7]和Spserver[8]中线程池实现而得到的解决方案, 本方法简化了其中管理子线程的技术, 回收和取消等处理完全自行完成:主线程创建一个用于管理线程的类充当管理者, 这个类创建线程T2, T2运行后立即在一个条件变量Cond1上等待管理者的触发, 执行SQL语句的函数指针和参数作为一个任务注入 (也就是赋值) 处于阻塞状态的T2后, 管理者对Cond1发出信号解除T2的阻塞, T2开始执行注入的任务;管理者立即在另一个条件变量Cond2上阻塞等待, T2完成任务后对Cond2发出信号, 而T2重新阻塞在Cond1上等待下一个任务;其该方法的原理如下图所示:

上图是中数字为表示因果和时序关系的顺序编号, 其中条件变量Cond2的阻塞为使用pthread_cond_timedwait的超时阻塞, 当T2不能正常完成任务时Cond2会超时解除阻塞, 管理者强行终止T2, 在下一个SQL请求来时, 管理者再创建新的T2即可。

在数据库和网络工作正常时T2中的任务可以在指定的时间里完成, 所以大部分时间里任务只是不断的注入T2和在T2中完成, 线程只是在阻塞和执行任务间不断循环, 只有在异常出现时会出现线程的终止取消和重建。该方法较之第二种方法可以大大降低线程创建和回收的时间。该方法在处理粒度与第二种方法一致, 是一种较之第二种方法更好的办法。

4. 结语

基于第三种改进方法的Oracle数据库访问接口已成功应用在某大型空中交通管制系统中, 运行情况良好。

本文是在以Hp Tru64主机为Oracle9i数据库服务器, 以SCO UNIXWARE和Linux RedHat 9, Windows等系统为客户端的环境中使用通过的。在上述解决方法中, 还需要添加在超时发生时异常处理代码, 这些代码包括关闭游标、关闭连接、中断O-CI调用和重新连接等操作, 最终才能完成完善的OCI编程接口。在Win32平台中需要用event来完成类似UNI平台下条件变量的功能, 同样的, 可以使用TerminateThread和WaitSingleObject分别替代UNIX中的pthread_cancel和pthread_cond_t imedwait。

本文提供的三种阻塞超时的解决方法还可以用在其他的类似处理阻塞的应用环境里。

参考文献

[1].汪林林, 马锐.用OCI开发ORACLE数据库的方法[J].计算机应用.2005.12

[2].郑军, 陈正阳.利用OCI于OLE开发Oracle空间数据库[J].计算机工程与设计.2004.6

[3].庞维翰, 陈有青.用OCI封装类进行数据库间应用系统的移植[J].计算机工程与应用.

[4].王晋兴, 朱敏.多线程数据回传服务器软件的设计与实现[J].微计算机信息.2007.9

[5].杨继张译.Richard Stevens, UNIX网络编程 (卷一) [M].北京:清华大学出版社.2000.

[6].陈涓, 赵振平译.Kay A.Robbins, Steve Robbins, UNIX Systems Pro-gramming[M].北京:机械工业出版社.2005.5

[7].Ilan Aelion.libcprops 0.1.8.[EB/OL].http://sourceforge.net/projects/cprops/

基于本体的通用数据访问方法 第2篇

基于本体的通用数据访问系统的核心在于构建出合适的统一数据描述模型,以此模型为基础,构建数据访问引擎,并通过抽取配置工具建立了数据描述模型与数据实体之间的映射关系,最终通过通用数据访问软件实现异构数据的统一访问和展现。

【关键词】异构数据 本体 描述模型 映射 通用访问

1 引言

随着近年来网络技术的快速发展,各领域之间数据共享的需求日益增强,在网络基础设施日益完善的前提下,如何对不同行业和格式的数据资源进行统一访问和集成使用就成为了关键的问题。

国内外对于异构数据库数据的集成近期提出了ETL(数据抽取、传输、加载)机制,在实现中采用XML(可扩展标记语言)实现通用的数据交换,利用全局逻辑视图或者集成的综合数据库的方式实现对各类异构数据资源的集成。

本文通过定义数据本体,设计了一种通用的数据访问方法,建立不同的数据资源与本体之间的映射,使得综合系统直接访问各个异构业务数据库,从而提高数据的使用效率,降低数据冗余。

通用数据访问面向的异构数据具有海量、多元、复杂、动态、移动、实时等特征,为了更好的解决异构数据资源的访问、集成和展现,在设计与实现通用数据访问系统时,必须提供用户对异构数据源透明、一致和实时的访问能力:

(1)透明性,是指屏蔽底层数据源的差异,从用户的角度看来,得到的数据不是来自于若干个数据源,而是一个数据源;(2)一致性,是指消除数据源之间的存在的结构异构和语义异构;(3)实时性,是指访问到的数据是最新的数据,并且对数据库中实时变化的信息能够及时地捕获与展现。

2 总体思路及架构

基于本体的通用数据访问方法面向图形化的数据展现,快速的从异构数据资源中抽取出适用的对象,对其进行统一管理,并借助地理信息系统或表单显示工具向用户提供清晰直观的数据展现。

其主要解决异构数据的统一使用问题,在避免数据格式转换带来大量工作的前提下,实现数据的动态加载,保证应用系统与底层数据资源的分离,同时具有良好的扩展性,在数据种类发生变化时,只需要通过工具界面配置,就能够快速加载新增的数据资源。

基于本体的通用数据访问方法采用分层的体系结构,下层软件给上层软件提供运行支撑或输入,共分为四层,从底到顶分别是:本体定义及管理层、元数据映射层、数据访问层和数据展现层。

2.1 本体定义及管理层

本体定义及管理层主要负责建立基于本体的统一数据描述模型,并制订出一套对该数据描述模型的访问接口规范,是整个方法实现的核心和基础。

2.2 元数据映射层

元数据映射层主要实现数据的灵活配置,通过人工界面配置的手段在数据库元数据与统一数据描述模型之间建立对应关系,并把映射关系保存为XML文件,供通用数据访问软件读取。

2.3 数据访问层

数据访问层主要完成对数据库中实际数据的读取和输出。

通用数据访问软件在实现时遵循本体定义及描述层制订的规范,内部的数据组织关系来自于元数据库映射层生成的映射关系XML文件。

2.4 数据展现层

数据展现层主要包括两种展现手段:基于地理信息的图形化显示工具和表格形式的表单显示工具。

数据展现层属于业务应用范畴,主要需要考虑的是基于地理信息系统(GIS)的数据表现以及海量数据高性能显示的问题,与通用数据访问的实现没有直接关系,因此在本文中不对这部分的实现进行讨论。

3 关键技术及实现

3.1 统一数据描述模型

统一数据描述模型的内容包括图层公共信息(本体)和特征属性族,各类异构的数据在按照统一数据描述模型表述为本体和特征属性族的过程中,消除其原有的异构性,形成统一的数据表述。

统一数据描述模型主要由图层公共信息和一组特征属性族组成。

统一数据描述模型确定种类繁多的数据信息之间存在的内在共同点,建立图层公共信息的统一描述。

图层公共信息:

其中标识属性、空间位置属性、时间属性以及符号属性,这几个属性的组合体现了数据对象在全维图形上的基本价值。

在统一数据描述模型中除了建立统一的图层公共信息描述以外,还借鉴可扩展标记语言的思想,建立了一个对象特征属性族描述方法,用来存放每类数据对象的具体属性项。

该属性族由数据对象的类型确定,其可扩展的`特性保证了每一类数据对象信息项的完整,同一类对象属性族项的数量和构成保持一致。

特征属性族定义:

3.2 数据图层映射转换

采用根据数据库中字段的取值确定图层对象的动态映射机制,并提供多种方法来规范映射,提供了语义映射机制,通过将数据库字段与统一数据描述模型中的属性建立字段映射机制;采用数据库数据到图层对象的语义映射,提供量纲映射机制,通过规范数据库中数据到图层对象的取值处理标准,提供多种量纲转换机制,如经纬度的转换机制和时间格式转换机制等等;采用字段映射机制或条件映射机制来处理图层显示属性。

如果显示属性采用字段映射机制进行配置处理,那么将使用配置字段的取值进行显示处理;如果显示属性采用条件映射机制进行配置,那么在进行显示处理时,将对这组字段的取值进行判断,符合某组合的取值,则用该组合的设置值进行显示,没有符合的条件组合就是用默认值进行显示。

4 结束语

本文的研究对象主要是针对数据库形态的数据资源,而文中提出的方法对其他形态的数据资源也同样适用,因此,后续的工作将以建立各种形态数据资源统一访问的软件系统为目标。

参考文献

[1]缪嘉嘉,邓苏,刘青宝.E T L综述计算机工程,2004(2).

[2]沈镭.基于XML的异质多数据库集成系统的设计与实现[J].河南大学学报(自然科学版),2007(9):530-532.

试析JAVA数据库的访问技术 第3篇

关键词:JAVA;数据库;访问技术

中图分类号:TP311.13 文献标识码:A文章编号:1007-9599 (2011) 08-0000-01

Access Technology Analysis of the JAVA Database

Wang Yang

(Haerbin University of Commerce,Haerbin150001,China)

Abstract:Java is more used to use a computer program marks one of the languages,which can be created within a computer database to meet user's needs.For the purposes of Java,JDBC is a Java application with the focus of a variety of database connection.In view of these,this paper on the JAVA database access technology is discussed.

Keywords:JAVA;Database;Access technology

一、JDBC技术介绍

JDBC本质上属于Java API,其能够在执行SQL语句中发挥相应的作用。JDBC的主要结构来源于Java语言编写的类和界面,满足了用户各种使用需求。JDBC体系的主要组成部分包括:应用程序、JDBC API、JDBC驱动程序管理器、数据源。JDBC API利用了JDBC驱动程序管理器、JDBC驱动程序,为数据库内部结构的连接创造条件。JDBC的体系结构如图1所示。

图1.JDBC体系结构图

根据上图得知,JDBC API体系的主要作用体现于将数据库间JDBC驱动程序存在的差异屏蔽掉,为程序人员的设计、编写提供科学的指标,这可以对Java中访问任意类型的数据库创造技术条件。JDBC驱动程序管理器是一种应用程序装载数据库驱动程序。JDBC驱动程序在运行时与数据库之间的关系密切,能够实现与数据源的连接,向数据库发出SQL申请。

当前,国内现有的计算机技术水平有限,最普遍的JDBC驱动程序包括:1.JDBC-ODBC桥+ODBC驱动程序。主要是Java Soft桥产品结合ODBC驱动程序创造JDBC访问。2.本地API。该驱动程序能够实现不同结构的转换运用,如:将客户机API上的JDBC转换为Oracle、Sybase、Informix、DB2参与程序执行。3.JDBC网络纯Java驱动程序。该驱动把JDBC转调整成与DBMS无关联的网络协议,这样可以给服务器的操作功能提供帮助。4.本地协议纯Java驱动程序。其主要是把JDBC调用直接换成DBMS使用的网络协议。由此准许从客户机机器上直接调用DBMS服务器,对Intranet访问可创造有利的条件。

JDBC驱动程形式的选择应按照用户实际使用需要,每种驱动都有自己的优势,程序设计人员要参照所设计的方案科学挑选。根据长期的设计经验看,一般最好不要选择桥驱动程序,即:JDBC-ODBC桥+ODBC驱动程序、本地API,它们仅仅是作为纯Java驱动程序的初始结构,其使用性能并未得到全面认真考核。而JDBC网络纯Java驱动程序、本地协议纯Java驱动程序则是从JDBC访问数据库的最佳方式,其除了能运用程序完成操作外,还能实现跨区域的程序调控,避免了从客户端安装驱动程序造成的不便。JDBC网络纯Java驱动程序的优点较为明显,其能够实现各项数据库的操作,是运用十分广泛的JDBC模式,将这种驱动运用在计算机网络中性能十分优越。

在所有应用程序里,其需要涉及到几个关键的结构形式,包括:Java.sql.Connection完成对某一指定数据库的链接,Java.sql.Driver Manager处理驱动程序的装载和建立新的数据库链接,Java.sql.Statement管理在指定数据库链接上的SQL语句的执行,Java.sql.ResultSet从数据库返回的结果集。

二、优化数据库访问效率的常用方式

(一)数据库连接池技术。根据数据库连接的实际需要创建合适的“缓冲池”是,这是优化数据库连接的前提条件。设计时可向缓冲池添加相应的连接。若使用到建立数据库连接时,则可从“缓冲池”任意调出则可使用。我们可利用设定连接池最大连接数进行优化,这样能避免系统无尽的与数据库连接。尤为关键的是在连接过程中可利用连接池的管理机制对数据库及时监控,如:连接数量、运行状态等,这些可以提高数据库的使用性能,促进新产品的研究开发。

(二)JavaBean技术。JavaBean技术的运用会面临各种不同的问题,程序访问数据库则是最常见的。当数据库需要进行调整时,如:密码、程序等,都应该添加到相应的程序里完成操作,当需要数据库链接时去调用这个文件则能处理问题。常用的方式为将数据库链接做成一个JavaBean,然后进行封装数据库操作。JavaBean技术能够结合JavaBean封装事务逻辑和客户端操作的分离,保证计算机操作系统性能的发挥。这不仅简化了数据库程序的复杂性,还能提高整体系统的运行效率。

(三)数据库批量技术。数据库批量更新技术的重点是对相关的数据程序不断更新,从而保证整个数据库之间的流动性,让其它方面的数据得到充分运用。与把同组中的每一个更新逐一提交给数据库处理方式相比,数据库批量更新技术在使用性能上要上升一个层次,促进了数据库访问速度的提升。

(四)多线程及线程池技术。多线程技术的运用重点在于多处理器的多个线程执行操作进行协调,从而减短处理器单元的闲置时间,使得处理器单元运行能力不断增强。而在操作过程中,若某个程序出现问题则会增加处理器的任务量,给系统的正常运行带来不便。线程池技术引进可大大改善服务器程序性能的。而线程池技术的运用能显著降低虚拟机的工作量,提高了程序指令的运行效率。

三、结语

综上所述,JAVA数据库的访问技术的优化有助于程序指令的执行,这对于新时期网络操作系统性能的改善有促进作用。设计人员在编写程序指令时应详细检查每个步骤,对可疑优化修改的地方详细调整。

参考文献:

[1]刘志君.基于Web和JSP/Java Bean技术的远程教育系统的设计与实现[J].辽宁:辽宁科技学院学报,2005,2

[2]刘中兵.JSP数据库项目案例导航[M].北京:清华大学出版社,2005,12

[3]刘琳,赵文静.提高基于Java的数据库访问效率的研究[J].现代电子技术,2006,8

数据访问接口 第4篇

在信息管理系统 (MIS) 开发中, 数据库访问技术决定着系统性能和效率的重要因素之一, 在不同数据库和不同的数据库访问技术共存的情况下, 开发人员在进行数据库管理系统开发时, 必须要根据不同的数据库分别编写各种数据库访问接口, 访问步骤繁琐, 软件开发的通用性较弱。

本文基于C#.NET, 通过ADO.NT数据提供者对象接口实现了通用数据访问类, 在访问不同的数据库时可以统一调用通用的数据库访问接口, 使应用程序能够高效、快捷和安全访问数据库, 从而提高代码的重用性、通用性、灵活性和可扩展性。

2 数据提供者对象与接口

.NET针对各种类型的数据库访问分别封装了适合于各自特性的命名空间。AD O.NET数据提供者在System.Data命名空间下, 包括数据库连接接口IDb Connec tion、数据库命令接口IDbCommand、数据读取器接口IData Reader和数据适配器接口IDb Data Adapter等不同种类的接口, 接口之后被实现为Connection类、Command类、Data Reader类和Data Adapter类, 通过这些接口, 应用程序可以访问数据库、执行相关的命令操作并获取相应结果。各接口及其相应的描述如表1示。

3 数据访问接口的实现

(1) 载入命名空间和列举可访问的数据提供者类型。本文实现了访问Sql Server、Ole Db (如Access数据库) 、Oracle和ODBC等四种数据库, 需要引入所有的数据提供者的命令空间, 即Syste.Data、System.Data.Sq l Client、System.Data.Ole Db、System.Data.O racle Clien t和System.Data.Od bc命名空间。同时新建一个全局的枚举类型, 用于归纳支持的数据库类型。

public enum Data Base Type{Sql Serve r=0, Ole Db=1, Oracle=2, ODB C=3}

(2) 通过IDb Connection接口, 实现数据库的连接与关闭。在数据库连接时, 传入需要访问的数据库类型db Conn Type和访问数据库字符串conn Str, 通过switch语句判断传入的db Conn Type参数值来创建和打开数据提供者的Connection对象, 以IDb Connection接口返回已连接处理的数据库连接。

在本方法中, 通过switch语句来判断当前应用程序访问的数据类型Data Base Type值进行对数据库的连接。如果是Ole Db、Ora cle或ODBC的数据提供者, 则返回的Conne ction对象分别为Ole Db Connection (conn Str) 、Oracle Connection (conn Str) 和Odbc Connctio n (co n n Str) 。

(3) 通过IDb Command接口, 实现通过Sql语句或存储过程对数据库数据的查询 (SELECT) 、添加 (INSERT) 、修改 (UPDATE) 或删除 (DELETE) 等操作。分别可实现的方法有Execute Non Query () 、Execute Scalar () 、Execute Rader () 等, 现以Execute Non Query () 方法为例, 其主要代码如下示:

(注:以下接口由访问关系数据库的.NET Framework数据提供程序实现)

其中Paras Add为添加参数局部方法, 通过cmd.Parameters.Add (para) 方法添加IDa ta Parameter[]数组中的参数, 以供Command对象执行。

(4) 通过IDb Data Adapter接口, 实现获取DataSet、Data Table对象。Data Set是ADO.NET结构的主要组件, 是从数据源中检索到的数据在内在中的缓存, 其内部是以XML来描述, 可将数据和架构作为XML文档进行读写。是不依赖于数据库的独立的数据集合。通过IDb Data Adapter接口获取DataSet的主要代码如下示:

获取Data Table对象方法同上, 在填充Data Set对象前先通过Data Set ds=new Data Set () 来新建Data Set对象, 然后在返回时数据时返回Data Set对象的第一个表, 即ds.Ta bles[0]。

4 数据访问类的应用

在应用程序的实际开发中, 需要添加本数据访问类的项目引用, 具体以执行查询并返回数据集和更新数据到数据库并返回更新的记录数为例, 调用的代码如下示:

4.1 执行查询并返回Data Set数据集。

4.2 执行数据更新并返回更新记录数。

上述两例应用以访问Sql Server数据库为例, 如果访问的是Ole Db、Oracel或ODBC数据库, 则需改动两处代码: (1) 在IData Pa rameter[]的定义中, 将Sql Parameter分别改成Ole Db Parameter、Oracle Parameter或Odbc Parameter; (2) 将数据提供者DBHelper.d b C onn Type值分别设置为Data Base Type.Ole D b、Data Base Ty pe.Oracle或Data Base Type.O db c。

5 结语

本文研究了运用ADO.NET中数据提供者对象的接口技术实现通用数据库类的方法, 通过封装数据库通用访问类, 为程序开发人员根据实际开发项目的数据提供者的不同而直接调用, 减少了开发工作量, 大大提高代码的重用性和项目的通用性、灵活性和可扩展性。尤其对一个应用程序中需要访问多个数据提供者时, 更加可以灵活运用。

摘要:在信息管理系统开发中, 数据库访问技术尤为关键, 几乎所有的逻辑处理均会基于底层数据库访问技术, 它也决定了系统性能和效率的重要因素之一。本文采用C#开发语言, 基于.NET框架下, 实现针对不同的数据库采用通用数据访问类。

关键词:NET,通用数据访问,接口

参考文献

[1]高丙云.基于.NET环境的数据访问层的设计与实现.中国高新技术企业, 2009年第10期。

[2]叶安胜, 周晓清.ADO.NET通用数据库访问组件构建与应用.现代电子技术, 2009年第32卷第18期.

[3]毛玉柱, 宋国民, 王宝军.空间数据库通用访问接口技术研究.测绘科学.2010年4月.

数据访问接口 第5篇

1 影响查询优化器决策的因素

Oracle数据库引擎访问数据基本上有两种方式, 一种是扫描整个表, 一种是基于冗余访问结构 (如索引) 进行查找或基于表本身的机构 (比如哈希聚簇) 进行查找。查询优化器对于访问数据选用全表扫描还是索引扫描, 基于对这两种访问方式相应开销的估算, 影响优化器决策的因素主要有以下几个:

1) 进行全表扫描需要读取的数据块数目。

2) 进行索引查询需要读取的数据块数目, 这主要基于对WHERE子句谓词返回的记录数目的估计。

3) 进行全表扫描时多块读的相关开销以及为满足索引查询进行的单块读的开销。

4) 内存缓存中的索引块和数据块数目的假设。

当查询优化器正确的选择执行计划后, 并不意味着特定执行计划一定运行良好。所以有时可以通过调整SQL语句或访问结构, 来达到优化的目的。判断数据访问最有效的标准是处理数据时消耗的资源最少, 当然最有效不一定是最快。

2 影响数据访问的因素

一般对全表扫描和索引扫描来说, 在WHERE子句的条件选择性不是很高时, 全表扫描是最合适的检索路径, 而在条件的选择性很高时, 索引或聚簇方法将更合适。

其中影响索引的因素主要有缓存区高速缓存区的命中率、记录大小和数据的分布情况。索引检索有助于获得更高的高速缓存命中率;就IO而言, 无论记录多大, 索引访问的开销几乎是相同的, 而记录越大, 全表扫描必须读取的数据块就越多, 代价越高。对于数据的分布, 如果表中记录大体按照索引列的顺序存储, 那么索引访问需要更少的数据库并大大减少逻辑IO的开销。而对于全表扫描, 如果需要访问表的所有或大部分记录的话, 那么全表扫描是最合适的方法。

3 全表扫描避免的优化

对于这两种访问方式的优化就是对于该使用索引的, 却使用了全表扫描, 而应该使用全表扫描的却使用了索引。因此对应的优化方法主要有两类, 一类是让索引起到该起的作用, 避免意外的表扫描, 一类优化必要的全表扫描。

即使存在适当的索引或散列检索路径, 由于SQL语句的写法, 优化器也可能无法利用这些访问路径, 因此避免意外的表扫描主要有以下几个原则及解决方法:

1) 避免使用不等条件。如果使用不等条件, Oracle一般不会使用索引, 因此如果认为某个查询使用索引更加高效, 那么请使用IN、OR或>来重写查询。

2) 空值查询。当索引中列的数据都为空值时, B*树索引中的条目将不会创建, 因此不能使用某列的B*树索引查找空值, 而应该将列定义成非空并设置默认值, 而后用默认值检索。

3) 在列上使用函数或表达式而无意中禁用了索引, 因此应避免在WHERE子句中的索引列应用函数或操作, 而是在与索引进行比较的值上应用函数或操作。

4) 对于无法避免在索引列使用函数或表达式是, 可以考虑使用基于相同函数或表达式的函数索引。

5) 对于多列查询可以对多列使用组合索引或使用多个索引合并。

6) 利用Oracle的统计信息或创建虚拟列等技术, 帮助优化器做出精确的估算, 从而更准确的选择出数据的访问方式。

4 全表扫描的优化

以上讨论的避免全表扫描的方法并不总是能获得最优的访问, 尤其是访问表的大部分数据时, 更是如此。有许多的全表扫描优化技术, 主要的几个技术包括:

1) 通过让表变小来减少扫描所需要的逻辑读取的数量。通过提高数据库IO的效率降低扫描所需要的物理块读取的数量。

2) 通过缓存或抽样降低扫描的开销。

3) 通过使用并行查询选项为扫描分配更多的资源。

4) 执行快速的全索引扫描来代替全表扫描。

5) 对表进行分区, 只读取所选择的分区。

特别需要注意的是, 完成全表扫描的工作数量主要取决于需要扫描的数据块数量, 因此也有很多有效的方法来减少扫描的数据块数量, 主要有以下四种方式:

1) 通过重建表来降低高水位线。当需要进行全表扫描时, Oracl会去读取从第一个被分配的块到曾经包含数据的最高那个块之间的每一个块。因此如果一张表上经常发生大量的删除操作, 高水位线将比实际需要的位置更高, 每块里的记录条数减少, 检索时IO的开销就会增加。

2) 通过修改PCTFREE和PCTUSED参数来向每个块里放入更多的记录。该方法由于自动段存储管理的广泛使用, 而现在几乎没有意义, 但是对使用早期的数据库版本来说有一定的作用。

3) 减少记录的长度, 可能是通过将大的且并不常访问的列迁移到独立的表中。如果表经常进行全表扫描而且包含大量的不常访问的列, 就可以将这些列迁移到其他的表中来减少需要扫描的块, 尤其是很少访问的长列。

4) 压缩表中的数据, 压缩表也能生成更小的表, 从而使扫描速度更快。

5 总结

大多数情况下, 优化器会自动选择好数据的访问方式, 但是当优化器不能选择最优的访问路径时或需要一个不同的访问路径, 需要系统管理维护人员能够评估优化器的选择, 并给出一个更优的访问路径, 这就需要利用以上的优化方法如创建索引、聚簇或表分区等来影响优化器做出更正确的决策。

同时在索引访问和全表扫描之间没有通用的一个平衡点, 如果需要访问表的所有或大部分记录, 那么全表扫描时最快的方式, 如果从大表里检索一条记录, 那么基于该列的索引将提供更有效的访问路径, 在这两个极端之间, 要预见哪种方式更高效是很难的。

参考文献

[1]Sam R.Alapati, Darl Kuhn, Bill Padfield.Oracle Database 11g性能优化攻略[M].朱浩波, 译.北京:人民邮电出版社, 2013:50.

[2]Christian Antognini.Oracle性能诊断艺术[M].童家旺, 胡怡文, 冯大辉, 译.北京:人民邮电出版社, 2009:269-274.

[3]GuyHarrison.Oracle性能优化求生指南[M].郑勇斌, 胡怡文, 童家旺, 译.北京:人民邮电出版社, 2012:197-209.

[4]李展涛, 曹英忠.基于Oracle数据库的SQL语句优化[J].微型机与应用, 2011, (21) :11.

ADO访问数据库 第6篇

随着网络技术和数据库技术的不断发展,现在的应用系统对数据集成的要求越来越高。O DB C、O L E DB和ADO都是一种数据访问技术,但是较ADO, O DB C和O L E DB是一种的底层的数据库访问技术。ADO是基于O L E DB的访问接口,它是面向对象的O L E DB技术,继承了O L E DB的优点,属于数据库访问的高层接口。

ADO (Active X Data O bjects) 是一种CO M类,用于操作数据库,它与数据库的连接既可以采用O DB C也可以采用O L E DB。ADO具有较高的运行性能,扩展性好,既可以访问关系型数据库,也可访问非关系型数据库,这是O DB C做不到的,O DB C只能访问关系型数据库。ADO被设计来继承微软早期的数据访问对象层,包括R DO (R emote Data O bjects) 和DAO (Data Access O bjects) 。ADO组件的使用需要利用支持CO M的高级语言,例如ASP中的V B Script或者V isual B asic,甚至Delph i, 微软的竞争对手B orland的一个产品。

二、ADO对象模型的介绍

ADO对象模型如图1所示,主要包含七个对象,主体对象有三个:Connection、Command和R ecordset对象,还有几个集合对象E rror、P aram eters、F ields和P roperty等所组成。C onnection, Command和R ecordset,可被独立创建和释放。而P aram eters对象虽然可独立于Command对象创建,但不能独立于一个Com m and对象使用。F ields, E rror和Propety对象则不能独立创建,只能依附于它们的父对象而存在,它们的关系可参考图1。

(1) 数据连接 (Connection) :Connection建立一个数据交换环境,应用程序通过Connection访问数据。Connection对象用于规定特定的数据提供者和附加参数。由Connection发生的一系列数据存取操作形成一个事务处理过程,ADO确保事务过程成功操作的结果传给数据源,如果其中某个操作失败或用户取消事务过程,数据源中的数据就会维持原先的状态。对象模型并不明确地具体表示一个事务过程,而通过一套Connection对象方法实现。

(2) 命令 (Command) :Command通过已建立的Connection发出命令, 例如绑定SQ L语句使用。典型的命令有增加、删除和更新表中的记录。

(3) 记录集 (R ecordset) :R ecordset存储查询命令返回的结果,是检查和修改记录的主要手段,在R ecordset对象中可以检查记录,浏览记录的次序,增加修改或删除记录、更新记录已变化的数据源等。

(4) 错误 (E rror) :任何涉及ADO对象的操作都会生成一个或多个提供者错误,此时一个或多个E r r o r对象被放到Connection对象的错误集合中.新的E rror将替换先前的E rror对象。

(5) 参数 (Parameters) :在执行命令时,可以指定参数,参数可以在命令发布之前进行更改。例如,可以重复发出相同的数据检索命令,但是每一次指定的检索条件不同。

(6) 字段 (F ields) :记录集的每条记录由一个或多个字段组成,每个字段包括自己的名称、类型和数据值,可以通过修改记录集中的字段对象值.最终传递到数据源中。

(7) 属性 (Property) :ADO有内置和动态2种属性,前者是ADO固有的.始终生效;后者是数据提供者添加到ADO对象的Property集合中,仅在提供者被使用时才能存在。

三、ConnectionString连接字符串

Connection String是Connection对象的属性名称,为可读写String类型,它为数据提供者或服务提供者提供了打开到数据库连接所需要的特定信息,包括Provider、Driver、Server、Database、DSN、U ID、PW D或者Provider、Data Source、U ser、Password、Initial Catalog等。

(1) Provider:字符串表达式,指定提供者的名称,可以缺省。一般有三种提供者:数据提供者、服务提供者和服务组件。数据提供者拥有自己的数据并将数据以表的格式显示给应用程序;服务提供者将服务封装,使ADO应用程序中的功能得以扩大;服务提供者也可以进一步定义为服务组件,服务组件必须连同其他服务提供者或组件一起工作。

(2) Driver:字符串表达式,表示驱动程序的名称,有些驱动程序是微软公司的产品,在安装操作系统时就已经安装好了;而有些数据库产品的驱动程序由开发数据库产品的软件公司随数据库产品一起提供,需要在安装数据库时选择安装后,才可以使用。

(3) Server (SR V R) :字符串表达式,指定数据库服务器名称。

(4) Database (DB) :字符串表达式,指定数据库服务器上的数据库名称。即使DS N定义已经指定了数据库,也可以在DSN之外指定Database参数以便连接到不同的数据库。

(5) DSN (Data Source) :字符串表达式,指定连接的O DB C数据源的名称。

(6) U ID (U ser ID) :字符串表达式,为O DB C数据源指定用户标识 (用户账号名) ,可以为空。

(7) PW D (Password) :字符串表达式,为O DB C数据源指定用户口令,可以为空。

四、具体应用

V B使用ADO数据库可以分为有源数据库和无源数据库,即是否使用了O DB C DSN数据源。下面分别讨论有源数据库和无源数据库的连接方法。

1、有源的数据库连接:

利用O DB C DSN来访问数据库,要完成这项工作,必须先通过“控制面板”“管理工具”—“O DB C数据源”来建立一个数据源名,例如叫做T est Data_R esoure。

(1)通过系统数据源 (Sy stem DSN) 的连接

(2)通过文件数据源 (F ile DSN) 的连接

2、无源的数据库连接:

利用数据库驱动程序直接访问数据库的连接字符串。

(1) Access数据库

先定义一局部连接对象变量。然后定义连接A c c ess数据库的过程.通过M icrosoft.J et.O L E DB数据访问方式访问数据库,M icrosoft.J et.O L E DB又有多种版本,其中4.0是最高版本,它能访问ACCE SS 2000,所以这里的数据提供者指定为M icrosoft.J et.O L E DB.4.0。指定了本地数据库和提供者后,就可打开一个数据库了,用open方法实现。示例代码如下:

(2) SQ L Server数据库

SQ L Server数据库是M icrosoft开发的一种广泛使用的后台数据库。访问S Q L Server可以通过指明O DB C驱动程序为SQ L Server来实现,即在连接字符串中要有driver={SQ L Server}, 由于它是后台数据库,所以必须指明SQ L Server所在的计算机名。SQ L Server的用户分为W IN N T和授权用户,W IN N T用户是不需要指定用户名和密码的超级用户,否则要指明用户名和密码。示例代码如下:

(3) O racle数据库

O racle数据库是目前最有影响的一种广泛使用的后台数据库。访问O racle先指明其提供者M SDAO R A。O racle与Sql Server不同的是它不是通过数据库来管理的,所以它不需指明数据库,但它连接时必须指明用户,即使是超级用户也如此。示例代码如下:

五、结束语

采用ADO技术访问数据库是极其容易的:访问数据库时设置与不设置O DB C数据源各有千秋。但对于SQ L Server等大型数据库而言,采用不设置O DB C数据源或通过O L E DB即利用数据库驱动程序,直接访问数据库会更方便些。无数据源连接时,只要建立了命名一致的数据库,代码可在不同的机上重用。而有数据源连接时,每当改变运行环境,就要进行手工O DB C数据源设置,并且DSN还必须与源代码的Connectlon Stfing属性相同。

参考文献

[1]Brian Sihr.Jef Spotts.VB6.0开发使用手册[M].北京:机械工业出版社.C200X

[2]徐新华.IDE争Object Pascal语言[M].北京:人民邮电出版社.1998.

[3]MSDN, Mierosott CoporationIS].1998.

[4]莫卫东.Visual Basic6.0高级编程技巧--ADO数据访问篇[M].西安市:西安交通大学出版社.1999.

数据访问接口 第7篇

关键词:存储区域网,光纤通道,文件系统,缓存,超元数据

引言

随着Internet技术的迅猛发展,网络上的数据信息已经呈爆炸式增长,网络服务器需要存储的信息和数据也越来越多,对服务器存储容量要求不断提高,导致简单的内部存储从容量上已经无法满足这一境况,用户对于数据传输可靠性或数据传输速率等方面的要求也越来越高。因此,服务器存储“外部化”已经成为必选的策略。为服务器提供专用的外部存储环境,充分利用最新的存储硬件技术和网络技术,才能够最终满足对大容量数据快速可靠的存储、精确高效的访问和安全稳定的备份等需求。

1 网络存储技术的发展

1.1 直连式附加存储(Direct Attached Storage,DAS)

在存储功能“外部化”的发展历程中最先被设计出的存储体系架构被称为DAS[1,2,3,4],在现在的部分网络环境中仍然被使用。其特点是磁盘阵列(Redundant Array of Independent Disk,RAID)等存储设备通过总线技术直接连接到计算机的系统总线上,而计算机既作为应用服务器,同时作为存储服务器,响应客户机的访问请求后,访问直连的存储设备并返回数据给客户[5]。这是一种以服务器为中心的存储体系结构,在更高要求的场合存在较多问题:存储设备只存在于单一的服务器,不同服务器的存储设备不能共享,利用率不高;不同服务器的存储设备不能相互备份,安全性不高;当存储设备越来越多后,需要在更长距离和服务器连接,此技术上的连线距离有限,增加存储设备等变更操作困难;各个NAS设备之间的数据信息不容易聚合,而且NAS的集中式结构容易产生单点故障失效问题等[6]。为了部分解决问题,出现了将数据从通用的应用服务器中分离出来,建立专门的存储子系统服务器的技术,跨越了机内存储。

这种技术通过专用电缆将服务器总线和存储设备连接,并通过小型计算机系统接口(Small Computer System Interface,SCSI)协议和指令来存取数据。但本质上这种方案和DAS还是统一形式,具有DAS的各种缺点。

1.2 网络附加存储(Network Attached Storage,NAS)

为了解决DAS的各种问题,逐渐发展出了NAS网络附加存储技术。它通过网络文件系统(Network File System,NFS)和公用网络文件系统(Common Internet File System,CIFS)等标准化的协议提供文件级的数据访问。

在NAS网络中,计算机系统是通过文件重定向器从一个NAS中得到的数据。当一个用户/应用试图通过网络访问NAS中的数据时,重定向器把对本地文件系统的本地路径重定向到使用TCP协议的网络操作系统而连接到某个远程服务器,服务器上运行的软件提供支持多个客户访问的文件系统。

1.3 区域存储网络(Storage Area Network,SAN)

SAN是通过专用高速网将一个或多个网络存储设备和服务器连接起来的专用存储系统。如图1。SAN在最基本的层次上定义为互连存储设备和服务器的专用光纤通道网络,它在这些设备之间提供端到端的通讯,并允许多台服务器独立的访问同一存储设备。与局域网(Local Area Network,LAN)非常类似,SAN提高了计算机存储资源的可扩展性和可靠性,使实施的成本更低,管理更轻松。

SAN网络根据具体实现的协议不同被划分为IP SAN和FC SAN两种。其中IP SAN是伴随着i SCSI协议的出现而逐步投入实际应用之中,它使用IP协议族,运行于高速以太网。而FC SAN相对目前应用更为广泛,使用光纤通道(Fiber Channel,FC)协议族,运行于专门的光纤通道网络之上。

2 文件系统

文件系统是对文件存储器空间进行组织分配,负责文件存储并对存入的文件进行保护和检索的系统[7][8]。文件系统中的数据一般包括两部分:文件数据和元数据。其中,文件数据包括目录数据和实际数据;而元数据是用来组织和管理文件数据的数据。

随着信息化时代的快速发展,各领域的数据信息量也迅速膨胀扩大。一般采用文件系统对海量的数据进行管理和存储。由于这些存储的数据需要随时查阅或实时更新,因此要求文件系统中的数据能够方便快速地被访问。现有技术中,在对文件系统的数据进行访问时,通常是通过磁头寻道硬磁盘的方法来确定待访问的数据,即根据文件系统中各个磁盘之间的逻辑对应关系,查找到需要访问的数据。现有技术数据访问方法中,定位待访问数据都需要通过磁头寻道硬磁盘来访问待访问数据,这种方法由于受到磁盘机械结构的限制,导致了文件系统的响应时间增长,降低了服务质量。

为了便于理解下面列举一个访问文件系统中数据的例子。例如文件系统中共有20个存储块,依次编号为0、1、2、3……19;如果此时需要访问文件系统中的某一数据,服务器首先找到的是第0号存储块,第0号存储块各级访问请求中携带的信息(可以理解为线索信息),索引找到第3号存储块,在找到第3号存储块后,第3号存储块根据线索信息索引到第1号存储块,在找到第1号存储块后,第1号存储块根据线索信息索引找到第9号存储块,进而从第9号存储块中定位所要访问的待访问数据。可见,访问文件系统中的数据首先都需要经过数个或数十个不同磁盘间相互查找的过程定位待访问数据,进而对待访问数据进行访问。

3 本方案详细阐述

3.1 本方案所要解决的问题

由于硬磁盘的机械结构限制,磁头寻道时间大约要10毫秒,一个硬磁盘对随机请求的响应率仅仅为每秒100个请求。即使是网络存储使用磁盘阵列的前提下,把请求分配到各个磁盘上,也很难突破每秒1 000个。

目前的缓存技术主要就是针对访问过的数据进行高速的缓存,如果数据一段时间内没有被访问就被替换出缓存。这种类型缓存的问题主要有两个:

(1)当大量访问文件数据以后(比如拷贝巨大文件),以前缓存的目录和文件系统的数据由于一段时间没有使用就被替换出去,当访问其他目录的时候会出现一段时间非常缓慢的现象。这降低了服务器的服务质量。

(2)访问没有访问过的目录或者文件花费的时间相对较长。

本方案提出了基于超元数据缓存的高速数据访问,以使得应用服务器在访问文件系统中的数据,尤其是访问目录数据和元数据时,能够快速响应应用服务器的数据访问请求,提升服务质量。

3.2 本方案实现的具体实施例

本方案通过在存储网络中增加独立的缓存系统,来加速文件系统的访问速度。本方案中的缓存系统就是图2中的超元数据缓存模块。存储系统是磁盘系统。服务器对存储的访问分为3类:超元数据块的读;超元数据块的写;数据块的读写。

(1)元数据缓存模块首先会从存储系统中把所有的超元数据读取出来,并且缓存。这个过程后面叫超元数据块载入过程。

(2)超元数据缓存模块收到服务器的文件数据块请求。这个过程叫数据块请求过程。

(3)超元数据缓存模块把请求直接转发给存储系统。这个过程叫数据块请求处理过程。

(4)超元数据缓存模块收到服务器的元数据读请求,直接把缓存的数据提交给服务器。这个过程叫超元数据块读请求处理过程。

(5)超元数据缓存模块收到服务器的元数据写请求,直接修改缓存中的数据。这个过程叫超元数据块写请求处理过程。

(6)然后把修改的缓存数据同步到存储系统。

(7)检查修改的超元数据缓存,如果有新的超元数据块需要载入或者删除,则载入或删除新的超元数据块。(在添加或删除目录和文件的时候可能会出现)。

3.3 本方案实施实例的数据访问方法

代理服务器预先获取存储服务器的文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存。本实施实例的数据访问方法包括:接收应用服务器发起的数据访问请求和超元数据更新操作请求。

为了为应用服务器提供其想要查找的数据,首先需要接收应用服务器发起的数据访问请求,判断数据访问请求是否为超元数据访问请求,具体可以判断数据访问请求中索引信息指示的数据是否为目录数据和元数据中的至少一个,如果“是”,对超元数据进行读取或更新操作;如果“否”,将数据访问请求发送至存储服务器的文件系统。

在判断出数据访问请求的数据是超元数据的情况下,直接在预先保存的超元数据中找到索引信息指示的数据即可,进而根据数据访问请求中的要求对索引信息指示的数据进行相应的读取或更新操作。

应用服务器的数据访问请求为超元数据访问请求时,可以直接在预先保存的超元数据中查找,将索引信息指示的数据发送给应用服务器。

应用服务器可以对超元数据进行更新操作,更新操作包括数据增加、修改和删除操作,针对不同的数据访问请求,处理方法也不同,因此需要在确定数据访问请求中索引信息指示的数据为超元数据的情况下,按照是否将原来不是超元数据的数据增加为超元数据的条件,进一步确定数据访问请求为超元数据增加请求还是超元数据修改、删除或读取请求。

增加超元数据,从文件系统中获取超元数据中不存在的数据,并加入到超元数据中。

修改超元数据,可能是将一些原来不是超元数据的数据更新为超元数据,也可能是将原来是超元数据的数据更新为文件数据,而这些数据往往以存储块的形式存在的,因此,预先保存的超元数据可能就会从文件系统中载入新的超元数据块,或删除原有的超元数据块。

上述方法不需要通过磁头寻道硬盘的方法来访问超元数据,而是直接对缓存的超元数据进行读取或更新操作,能够快速响应应用服务器的超元数据访问请求,并能够将数据访问请求对代理服务器中存储的超元数据进行的操作同步到文件系统。该方法整体提升了存储服务器的服务质量。

3.4 本方案实施实例的数据访问装置

本方案给出了2种数据访问装置:

数据访问装置1能够对应依次执行上述方案实施例中的步骤。缓存器预先获取存储服务器的文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存。访问接收模块用于接收应用服务器发起的数据访问请求,并将数据访问请求发送给第一判断模块。第一判断模块用于接收访问请求,可以是判断数据访问请求中索引信息指示的数据是否为目录数据和元数据中的至少一个。

请求转发模块用于在第一判断模块的判断结构为“否”的情形下,将数据访问请求发送至存储服务器的文件系统;超元数据模块用于在第一判断模块的判断结果为“是”的情况下,对超元数据进行读取或更新操作。超元数据操作模块结构包括数据获取模块获取数据访问请求中索引信息指示的数据;数据发送模块用于将索引信息指示的数据发送给应用服务器,如图3。

数据访问装置2缓存器是预先获取存储服务器的文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存。访问接受模块用于接收应用服务器发起的数据访问请求,并将数据访问请求发送给请求判断模块。请求判断模块用于接收访问请求,判断数据访问请求是否为超元数据访问请求。

请求转发模块用于在请求判断模块的判断结构为“否”的情形下,将数据访问请求发送至存储服务器的文件系统;超元数据模块用于在请求判断模块的判断结构为“是”的情况下,对超元数据进行的操作。超元数据操作模块结构包括第二判断模块,判断数据访问请求中索引信息指示的数据中是否包括超元数据中不存在的数据;第一处理模块用于在第二判断模块的判断结果为“是”时,从文件系统中获取超元数据中不存在的数据,并加入超元数据;第二处理模块用于在第二判断模块的判断结果为“否”时,从数据访问请求修改或删除索引信息指示的数据,如图4。

本方案中数据访问装置可以是代理服务器。代理服务器能够预先获取文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存。之后,代理服务器接收应用服务器发起的数据访问请求,判断数据访问请求中索引信息指示的数据是否为目录数据和元数据,如果是,对超元数据进行读取或更新操作;如果否,将数据访问请求发送至文件系统。代理服务器不需要通过磁头寻道硬磁盘的方法来访问超元数据,而是直接对缓存的超元数据进行访问,能够快速的响应应用服务器的数据访问请求,提升了存储服务器的服务质量。

3.5 本方案实施的数据访问系统

本方案实施的数据访问系统1包括存储器和存储器进行通信的处理器,存储器中存储处理器可执行的程序代码,程序代码包括:

(1)用于获取文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存;

(2)用于接收应用服务器发起的数据访问请求;

(3)用于判断数据访问请求是否为超元数据访问请求;

(4)用于在(3)的判断结构为“是”的情况下,对超元数据进行读取或更新操作;

(5)用于在(3)的判断结构为“否”的情况下,将数据访问请求发送至存储服务器的文件系统。

存储器中存储处理器用于获取上述程序代码,并执行。

数据访问系统1能够通过处理器执行存储器中的操作指令,完成预先获取文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存;在接收到的应用服务器发起的数据访问请求中索引信息指示的数据为目录数据和/或元数据时,从预先保存的超元数据中确定索引信息指示的数据;在索引信息指示的数据不是超元数据时,将数据访问请求发送至文件系统等操作。

本方案实施的数据访问系统2包括应用服务器、代理服务器和存储服务器。存储服务器拥有存储文件系统,应用服务器用于向代理服务器发起数据访问请求。代理服务器用于预先获取存储服务器的文件系统中所有的目录数据和元数据,并将目录数据和元数据作为超元数据保存;接收应用服务器发起的数据访问请求,当数据访问请求为超元数据访问请求时,对超元数据进行读取或更新操作;当数据访问请求为非超元数据访问请求时,将数据访问请求发送至存储服务器的文件系统。

该数据访问系统中代理服务器不需要通过磁头寻道硬磁盘的方法来访问超元数据,而是直接对缓存的超元数据进行读取或更新操作,能够快速的响应应用服务器的超元数据访问请求,并能够针对超元数据访问请求的类型不同进行不同的操作,整体提升了存储服务器的服务质量。

4 本方案实验和数据

4.1 实验环境介绍

本实验的网络环境如图5,网络中有5个设备,两台服务器,一台FC交换机,一台磁盘阵列以及cache设备。实验过程中cache设备并不是始终接入网络的。我们通过对比网络中是否接入cache设备的目录访问效率来观察cache设备的作用。

两台服务器配置intel i7处理器,2G内存,并在服务器上运行ubuntu 14.04。然后我们在服务器上创建实验所需要的目录环境。首先,创建目录test_dir,并在该目录下创建1000个子目录,然后在各个子目录下面继续创建100个子目录,并在这些子目录中的最后一个子目录存放一个目标文件target。创建过程由下面脚本实现:

4.2 简单查找实验和数据

首先,网络中并不接入cache设备,登陆服务器,接着进入test_dir目录,最后运行timefind–name target命令并记录运行时间。

然后,网络中接入cache设备,重复执行timefind–name target命令并记录运行时间,单位为秒。多次实验得到图6数据:

图6中纵轴表示时间,单位是秒,横轴表示不同次查找。从图6中可以看到接入cache以后,服务器查找文件的性能有少量的提升。在不接入cache的情况下,服务器多次查找同一个文件所花费的时间也是会下降的,这是因为服务器会使用内存来做缓存,从而减少磁盘的访问。

4.3 复杂查找实验和数据

4.2节中的实验服务器只进行文件查找操作,并没有任何的文件读写操作,现实情况并不存在这样简单的场景。所以本节我们构造复杂的实验环境,首先我们在服务器后台运行dd if=/dev/zero of=var/test bs=8k count=100000命令,其次运行进入test_dir目录,运行timefind–name target命令。最后对比cache服务器是否接入网络的数据。多次实验得到图7数据:

图7纵轴表示时间,单位是秒,横轴表示不同查找的编号。从图7中可以看出当服务器进行大量文件访问的时候,同时进行文件查找的效率是很低的,并且查找时间不稳定,极大影响了用户的体验。其原因是文件访问时服务器把大量的内存用于缓存文件的内容,此时进行目录查找则需要多次的访问磁盘,导致查找性能急速下滑。而接入cache设备以后,服务器在大量访问文件的时候,同时查找的性能保持不受到任何的影响。

5 结语

本方案不需要通过磁头寻道硬盘的方法来访问超元数据,而是直接对缓存的超元数据进行读取或更新操作,能够快速响应应用服务器的超元数据访问请求,并能够将数据访问请求对代理服务器中存储的超元数据进行的操作同步到文件系统。该方法整体提升了存储服务器的服务质量。提高服务器文件系统加速,尤其是访问目录的时候,缩短服务器集群主备切换时间。

参考文献

[1] Gibson G A,Meter R V.Network-attached storage arch itecture[J].Communication of the ACM,2000,43(11):11-17

[2] Phillips B.Have storage area networks come of age[J].Computer,1998,31(7):10-12

[3] Katz R H.Network-attached storage systems[C]//Proceedings of the Conference on Scalable High Performance Computing.Williamsburg,VA,USA,1992:68-75

[4]赵跃龙等.一种智能网络磁盘(IND)存储系统结构[J].计算机学,2008,5:859

[5]谢胜彬等.DAS、NAS与SAN的研究与应用[J].计算机与现代2003,7:8

[6] Yokota H.Autonomous disks for advanced database applications[C]//Proceedings of the 1999 International Symposium on Database Applications in Non-Traditional Environments(DATE'99).Kyoto,Japan,1999:435-442

[7] Ghemawat S,Gobioff H,Leung S.The Google file system[C]//Proceedings of the 19th ACM Symposium on Operating Systems Principles.New York,USA,2003:29-43

数据访问接口 第8篇

关键词:ORACLE数据库,军卫一号,HIS,并发访问,访问冲突

0 前言

作为全球知名的关系型数据库产品, ORACLE数据库以其出色的数据库管理能力、超强的稳定性、良好的并发控制机制而闻名。ORACLE数据库系统本身是一个多用户并发处理系统, 任何一个时间节点内都可能有许多用户同时访问和操作同一个数据库对象。因此, 并发访问控制是数据库最核心的管理机制之一, 也是在数据库运行过程中容易出现错误和故障的地方。本文对ORACLE数据库并发访问控制机制展开探讨, 并就实际工作中容易产生的并发性错误提出相应的解决方法。

1 闩锁和锁定机制

ORACLE数据库通过闩锁 (latch) 和锁定 (lock) 两种机制来解决并发性访问问题[1]。闩锁是一个低级别、轻量级的锁, 获得和释放的速度很快, 以类似信号灯的方式实现。锁定可能持续的时间很长, 通过使用队列, 按照先进先出的方式实现。可以认为闩锁用于微观领域, 而锁定用于宏观领域。

1.1 闩锁

ORACLE数据库使用闩锁来管理内存、数据块的分配和释放。当某个用户进程 (假定为A) 要对一个数据块 (block) 进行写操作时, 将先获得该数据块的闩锁, 在其写操作完成之前, 该闩锁将被此用户进程独占, 此时如果有其他进程 (假定为B) 试图对此数据块进行写操作, 会因无法获得闩锁而被迫进入等待状态, 当A进程结束操作时将释放闩锁, B进程可以获得闩锁开始对数据块进行读写操作。闩锁不仅用于数据块读写管理, ORACLE中任何涉及到内存地址的读写操作都要通过获得闩锁来实现串行化, 一次只能有一个服务器进程在读或写内存地址[2]。闩锁分两种类型:愿意等待 (Willing-To-Wait) 和不等待 (No-Wait) 。大部分闩锁属于第一种类型。当进程无法获得闩锁时, 会绕着CPU旋转一段时间 (以μs来计算) 并再次尝试获得闩锁, 当反复旋转CPU并尝试获取闩锁的次数超过某个上限 (该上限由隐藏参数控制) 时, 该进程才会释放CPU并进入睡眠状态, 同时产生一个对应的等待事件并记录在视图V$session_wait里。No-Wait型闩锁较少见。当进程请求此类闩锁时, 若请求失败, 进程将不会旋转CPU而直接转向另一个闩锁的申请。

1.2 锁定

锁定用来控制多用户对数据库表的相同数据的并发访问。锁定分TX锁 (TX锁) 和表级锁 (TM锁) 。当用户进程找到被更新数据块的相应数据行时, 在其头部设置一个行级锁, 并在头部记录当前事务所使用的ITL槽的槽号。其他用户进程如果要更新此数据行的数据, 将发现该条记录已经被添加了行级锁而进入等待状态, 直到前面的进程完成更新操作并释放TX锁为止。由此可见, TX锁是一种排他锁 (X锁) , 即一旦用户对某个资源添加了X锁, 则其他用户都不能对该资源添加任何类型的锁, 直到该用户释放了资源上的X锁为止。用户对表数据进行更新时, 不仅会在数据行的头部记录行级锁, 而且还会在表的级别上添加一个TM锁。TM锁共5种模式[3]: (1) 行级排他锁 (RX锁) :DML操作会自动在被更新的表上添加RX锁。该模式允许其他事务通过DML语句修改相同表里的其他数据行, 但不允许其他事务对相同的表添加X锁; (2) 行级共享锁 (RS锁) :通过select…from

for update语句可以添加RS锁, 该锁不允许其他事务对相同的表添加X锁, 但允许其他事务通过DML语句锁定相同表里的其他数据行; (3) 共享锁 (S锁) :通过lock table

in share mode命令添加该S锁。该锁不允许任何用户更新表, 但允许其他用户对表添加RS锁; (4) X锁:通过lock table

in exclusive mode命令添加该X锁, 该锁不能对表进行任何的DML和DDL操作, 只能对该表进行查询; (5) 共享行级排他锁 (SRX锁) :通过lock table

in share row exclusive mode命令添加SRX锁, 该锁不能对相同的表进行DML操作, 也不能添加共享锁。

2 锁定的相关视图

ORACLE数据库借助以下几个数据字典来管理锁定问题[4]:

(1) V$transaction:该视图记录当前每个活动事务的信息。其中比较重要的字段包括XIDUSN (当前事务使用的回滚段的编号) 、XIDSLOT (事务在回滚段头部的事务表中对应的记录编号) 、XIDSQN (序列号) 。

(2) V$lock:该视图记录了当前对话已经获得的锁定以及正在请求的锁定信息。其中比较重要的字段包括SID (session的ID号) 、TYPE (锁定的类型和级别) 、REQUEST (正在请求的锁定模式) 、BLOCK (是否阻止了其他用户获得锁定) 。

(3) V$locked_object:该视图记录当前已经被锁定的对象信息, 其中比较重要的字段包括XIDUSN (当前事务使用的回滚段的编号) 、XIDSLOT (事务在回滚段头部的事务表中对应的记录编号) 、XIDSQN (序列号) 、OBJECT_ID (当前被锁定对象的ID) , LOCKED_MODE (锁定模式的数字编码) ) 。

(4) V$session:记录当前session的相关信息。其中比较重要的字段包括SID (session编号) 、SERIAL# (序列号) , SID和SERIAL#共同标识一个session。

3 并发访问冲突的现象、原因、检测和解决方法

3.1 并发访问冲突的现象

笔者所在的单位是一所部队医院, 运行的是“军卫一号”医院信息系统, 该系统以ORACLE为数据库管理系统 (目前版本是10g) , 开发环境是Power Builder9.0, 并发用户数在400台左右。在长期的数据库维护管理工作中, 笔者经常遇到并发访问冲突的问题。表现为:某一台或几台机的用户在进行程序操作特别是进行数据保存时死机 (鼠标呈沙漏状) , 此时系统不会有任何错误提示, 若用户强行结束任务后重新进行上述操作仍然失败, 最极端的情况是所有写某个数据表的用户都会死机。

3.2 原因

造成上述访问冲突的原因一般有以下两种[5]:

(1) 应用程序中的BUG。Power Builder经常通过数据窗口技术 (datawindow) 来实现对数据的读写。当数据窗口完成一次数据更新后, 要通过resetupdate () 函数来进行数据窗口更新状态的复位。否则数据窗口在进行多次数据读写操作后很容易出现更新数据但不提交的现象 (即对某数据表UPDATE后没有COMMIT) , 当其他用户或程序也对该表的相同行数据进行写操作时, 就会把用户锁定。

(2) 客户端的电脑故障。当客户端对数据表进行读写操作时, 如果此时客户端电脑发生故障, 如WINDOWS系统死机等, 此时该用户的COMMIT动作没有完成。其他用户如果也在访问该表的相同数据行, 则很容易产生锁定。

3.3 检测和解决方法

笔者通过一个具体的例子来阐述并发访问冲突的解决方法。假设A用户在SQL_PLUS中执行语句:update dept_dict set dept_name=’aaa’where dept_code=’1001’;然后B用户执行语句:update dept_dict set dept_name=’bbb’where dept_code=’1001’, 此时B用户的SQL语句运行将出现死机。当执行select*from v$locked_object语句, 查出当前被锁住会话的session_ID是9和11。再执行语句select sid、type、ID1、ID2、lmode、request、block from v$lock where sid in (9, 11) , 查询结果, 见表1。

从表1可知, A用户的SQL语句 (即SID=9的会话) 已经在DEPT_DICT表中添加了TX锁和TM锁, 当B用户执行自己的SQL语句 (即SID=11的会话) 时也往该表的同一条记录添加TX锁和TM锁。TM锁添加成功, 添加TX锁时由于该行记录已被A用户的会话锁住且尚未释放, 所以添加失败, 因此第4行记录的Lmode字段值为0, 表示TX锁未添加成功, 同时第1行记录的Block字段值为1, 表示sid=9的会话的TX锁阻止了其他用户获得此锁。查明是由于sid=9的会话阻塞了sid=11的会话获得锁定后, 我们就可以进行解锁操作了。通常的解锁操作有两种:一种是将前面会话的SQL操作正常提交, 即运行COMMIT语句, 当A用户的SQL操作完成后自动会将TX锁和TX排他锁释放, B用户即可获得该条记录的TX锁并完成自己的SQL操作。第二种方法是将前面会话删掉, 此方法用于前面会话已经无法正常提交的情况。以本例而言, 可执行语句:select sid, serail#from v$session where sid=9, 查出sid=9的会话serial#=189;然后运行语句:alter system kill session (9, 189) , 将A用户的会话强行删除, 该会话自动释放TX锁和TM锁, 这样B用户即可获取相应锁并完成自己的SQL操作。

4 结束语

综上所述, ORACLE数据库主要是通过闩锁和锁定机制来实现对数据库并发访问的控制, 前者基于内存和数据块层面, 属微观范畴;后者基于数据表和记录, 属宏观领域。同时ORACLE提供了若干数据字典和视图, 方便数据库管理员 (DBA) 实时了解数据库当前的用户连接和锁定状况, 共同为ORACLE用户提供强大的并发控制机制和高效的并发管理能力。

参考文献

[1]余钢, 朱莉, 张云睿.ORACLE DML封锁等待原因分析和应用中的处理方法[J].电脑知识与技术, 2005, (10) :42-43.

[2]萨师煊, 王珊.数据库系统概论[M].3版.北京:高等教育出版社, 2000.

[3]沈金发, 郑甫京, 王令赤, 等.ORACLE关系数据库系统[M].北京:清华大学出版社, 1992.

[4]韩思捷.ORACLE数据库技术实用详解[M].北京:电子工业出版社, 2008.

[5]滕永昌.ORACLE9I数据库管理员使用大全[M].北京:清华大学出版社, 2004.

[6]周芃, 顾凤军, 周昕.ORACLE闪回技术的使用与分析[J].中国医疗设备, 2009, 24 (2) :51-53.

视频网站访问数据挖掘系统 第9篇

随着互联网的飞速发展, 网络已逐渐取代电视、报刊等传统媒体成为广大用户的主要信息源。自2010年起, 我国广电业顺势而行入驻网络平台, 各地的网络电视纷纷上线对外提供服务。然而如何有效衡量网站价值, 如何从网站获得有效信息来吸引更多用户点击, 提高网站访问量, 从而提升广电业在网络平台的影响力已成为共同关注的难题。

网站数据挖掘技术为解决这个问题带来一线曙光。网站挖掘技术是数据挖掘技术在网站上的应用实例, 可从挖掘对象上将其分为网站结构挖掘、网站内容挖掘和用户数据挖掘三类[1]。网站访问数据挖掘是指分析网站服务器日志以自动发现用户的访问特点[2]。近年来, 应用网站访问数据挖掘技术以获得用户相关信息已成为一个研究热点, 并得到一定范围的应用。如收集用户在特定网站的访问信息, 对该信息进行分析, 识别用户的行为特点, 从而预测该用户的未来行为并对其进行个性化服务[3];或对具有相似访问行为的用户进行聚类, 从而对此类用户提供同类的定制服务[4]。

尽管网站数据挖掘技术已得到一定肯定和应用, 但该技术在视频网站方面的研究和应用仍十分少见。对广电业所有各网络电视台而言, 视频网站数据挖掘技术则至关重要, 有效的视频挖掘技术除了可以监控网站视频流畅度, 及时调整流媒体分发策略提供流媒体访问体验, 还可以优化视频内容的制作和利用, 结合现有的网站数据挖掘技术向用户提供更多符合其访问习惯的内容, 改善网站整体的友好度并提高网站访问量。

本文结合前人的研究成果与视频网站特点, 提出适用于视频网站的数据挖掘系统模型, 并以上海电视台所属的看看新闻网数据挖掘系统为例介绍视频网站数据挖掘系统的系统架构及其作用。该视频网站数据挖掘系统可完整采集用户的访问数据并完成数据建模, 使用友好且交互性强的界面方便用户进行模型分析, 帮助用户及时发现网站页面流量以及用户访问等方面的特点, 为网站的内容与结构调整提供可靠的数据基础以优化网站整体, 从而改善网站的客户体验提高网站流量, 提升网站品牌知名度。

1视频网站的用户数据挖掘

网站的用户数据挖掘的目的在于从用户的网站访问数据中获取有用的访问数据, 分析得出用户的浏览模型, 从而改善网站结构或为用户提供个性化服务。从处理流程上来看, 可以分成数据采集、数据预处理、模型发现和模型分析几个阶段, 如图1所示。

1. 数据采集

网站数据包含网站自身发布的网站文件以及用户访问数据, 这些数据在不同规模程度上体现用户在网站上的访问行为。用户访问数据记录在各种访问日志中, 如页面访问日志、视频访问日志、来源日志等, 日志数据通常从服务器端、客户端及代理服务器上获得。

2. 数据预处理

数据预处理主要目的是将前一阶段采集到的网站内容数据、网站结构数据和用户数据抽象为可用于模式发现的数据。管理者可通过网站内容和结构数据, 获得网站页面分类、站点内容以及站点拓扑数据, 这也是目前搜索引擎用来衡量网站/页面价值的关键数据;用户数据则可以根据WCA (W3C Web Characterization Activity) 提出的相关数据抽象定义[6], 如UV、PV、服务器会话、访问流等, 进行统一处理。

3.模型发现

在模型发现阶段, 管理者将使用多种方法或算法[7,8], 如数理统计、数据聚类、数据分类、机器学习及模式识别等, 将预处理阶段获得的数据、以及其他途径获得的相关数据针对特定的应用进行进一步整理, 以获得可有利于网站建设及运营的信息。分析方法和分析目标 (或适用场景) 是模型发现阶段的核心因素, 它们的组合及选取是否恰当将直接决定网站使用数据挖掘的成败。

4.模型分析

如图1所示, 模型分析是网站使用数据挖掘的最后一步。在该阶段, 管理者将根据分析目的将预处理阶段获得的数据及模型发现阶段获得的信息进一步筛选, 结合各种人工分析手段获得对网站建设或运营有益的规则或模型等。数据筛选是该阶段的主要技术元素, 常用的数据筛选方法有信息过滤、信息查询 (如SQL) 及基于OLAP的可视化数据挖掘技术对信息进行进一步分析, 使管理者获得所需信息, 从而进行人工分析, 对网站进行各种优化调整。

2视频网站数据挖掘系统

本文将以看看新闻网 (www.kankanews.com) 的数据挖掘系统为例, 介绍视频网站数据挖掘系统的构建及应用。隶属于东方传媒集团 (SMG) 的看看新闻网是一家以视频新闻为主的网站, 网站内容包含一个24×7的新闻直播页 (live.kankanews.com) 以及大量的点播视频新闻, 其分发架构模型如图2所示。

视频网站的数据挖掘在页面数据上与传统网站相似, 但在视频挖掘上与传统网站有所不同。传统网站的数据挖掘关注页面访问情况, 如页面的访问频度、逗留时长等, 即页面会话数据。视频网站的数据挖掘除了需要收集页面会话数据, 还需要关注视频的实际播放情况, 如视频的访问时长、视频片段的播放频度、视频访问来源等, 即视频会话数据。相比于仅使用页面会话数据的传统网站数据挖掘系统, 综合了页面会话数据和视频会话数据的视频网站数据挖掘系统, 可以更完整的记录用户对视频网站的访问情况, 提供视频被关注的准确数据, 可提供传统的网站调整数据支持, 更可提供视频内容制作的指导, 从而优化视频网站的整体内容及结构, 提高网站的用户体验。看看新闻网网站使用的数据挖掘系统是一个分布式部署的大型网站量化分析系统, 其架构模型如图3所示。

1.数据采集

如图2所示, 看看新闻网利用CDN (Content Delivery Network) 来实现网站内容分发, 用户与网站之间的交互也基本通过CDN完成。CDN的使用保障了网站访问的稳定性和可靠性, 但给数据采集带来了以下难度。

1) 数据完整性:由于大量用户请求在由CDN直接完成, 故网站源站Web Server服务器日志将遗漏大量的用户访问数据。

2) 数据准确性:综合CDN日志与Web Server服务器日志可得到完整的网站内容请求数据, 但是这些日志将记录大量的非用户访问数据, 如网络爬虫等数据;此外, 用户单一会话的数据可能离散记录在CDN日志和Web Server日志中, 这给数据预处理阶段的会话识别带来很大难度。

3) 数据定制:服务器日志所能提供的访问信息有限, 对视频访问信息的记录基本为零;为能记录以上信息, 必须对服务器日志进行相关定义修改, 而源站与CDN独立的分发架构以及服务器日志本身的限制, 导致相关的日志定制难以实现。

考虑到以上问题, 网络新闻台数据挖掘系统采用在客户端 (即网页中) 植入Javascript代码的方式来采集用户访问数据, 该方法可以有效解决以上3个问题。当然系统的扩展性设计使该系统也可以接受其他数据来源, 如服务器日志等, 以满足网站管理者的分析需要。

2.预处理

在预处理环节, 系统将采集到的数据按照一定规则进行整理。根据看看新闻网的数据使用需要, 部分视频访问数据将优先进行数理统计以满足网站的实时监控需要, 图4即为看看新闻网的实时视频性能监控界面。其他访问数据 (含页面访问数据与视频访问数据) 将在当天的数据都采集完后, 统一进行数据清洗:通过用户访问会话识别, 整理获得基于独立会话的用户页面访问行为和视频访问行为信息, 对这些信息进行数据抽象, 获得多维度的数据切片 (如用户访问来源、用户退出路径等) 以及可量化的数据指标 (如PV、UV等) , 以适合系统数据仓库的格式, 写入数据仓库。

3. 模型发现

在模型发现环节, 系统将读取数据仓库中的内容, 根据系统预定义的指标和维度构建数据模型, 以供后续分析。看看新闻网数据挖掘系统主要构成以下数据模型。

1) 视频质量衡量。视频与图文在呈现方式上的不同本质, 使得很多用于传统网站图文内容衡量的方法, 如页面滞留时间等无法准确衡量视频内容, 因此看看新闻网使用了一套不同于传统图文网站的视频质量衡量模型:视频流畅度衡量与视频内容衡量。

(1) 视频流畅度衡量。视频网站的视频流畅度直接影响用户的访问体验, 故网站运营者需要一套可准确衡量用户对视频流畅度直观感受的工具, 以使其了解网站视频的流畅度表现, 并可进一步调整网站运营策略。

在本系统中, 将针对后续的不同应用, 施行两套视频流畅度衡量方法。

(1) 实时视频流畅度衡量。系统使用之前采集到的当前时刻影响流畅度体验的关键数据:视频播放是否卡顿、卡顿时间长度、首次缓存时间等, 对这些数据进行综合统计衡量, 提出视频流畅度指标, 以此定量衡量此刻视频的流畅度表现。

(2) 基于独立视频会话的视频流畅度衡量。与实时视频流畅度衡量方法相似, 该方法同样将综合衡量各影响流畅度体验的关键数据, 提出视频流畅度指标。但与实时视频流畅度衡量方法不同在于, 该方法将以独立视频会话的数据为单位进行独立衡量, 获得基于独立视频会话的流畅度指标。这种方法将获得更多的视频流畅度信息, 如特定视频的流畅度、特定时段的流畅度 (图5) 等, 为模型分析提供更多分析维度。

(2) 视频内容衡量。与传统的通过人工主观评价视频内容的方法不同, 本系统采用基于用户行为的视频内容衡量方法。通过记录用户对视频片段的实际观看表现, 如观看时间长度、观看次数、是否回拖等, 综合评价该视频内容是否被用户认可, 甚至于通过衡量单个视频会话中, 视频中各片段被观看的次数来精确定位受用户欢迎 (或导致用户急剧流失严重) 的视频片段, 从而对内容制作人员提出更精准的基于实际访问数据的制作指导。

2) 用户分类。在预处理阶段, 系统已获得不同维度的数据切片, 如来源路径、浏览器、地理位置等, 通过对这些维度的数据进行选择和组合, 即可设定特定的用户分类, 如上海地区从搜索引擎到达看看新闻网的用户等, 管理者可针对特定分类的用户进行进一步模型分析。

3) 路径分析。通过对用户访问会话进行序列分析, 可以获得用户从特定页面出发的, 在看看新闻网的访问路径, 如图6所示。管理者可以结合其他信息维度信息 (如用户分类等) 对用户访问序列进行分析。

4. 模型分析

在该阶段, 看看新闻网数据挖掘系统由实时监控和基于OLAP的可视化数据挖掘两部分组成, 网站管理者可通过访问相应界面, 使用之前获得的各种数据模型, 进行进一步分析达到网站运营的各种数据支持。

1) 实时监控。看看新闻网的实时监控界面如图4所示, 网站管理者可以从中获得网站视频访问人数信息、视频流畅度信息等, 目前该界面已在以下方面发挥作用。

(1) 视频分发策略实时调整。实时监控界面中的地图窗口实时显示当前访问网站的各地用户所感受到的视频流畅程度, 以红色气球表示不流畅、蓝色气球表示非常流畅, 数值表示位于该地的访问人数。当地图上出现大量的红色气球且数值较大时, 通常意味着网站的流媒体加速可能存在问题, 网站管理者可以通过调整CDN分发策略来调整视频流畅度。而该监控节目也可用于观察实时调整的效果。

(2) 直播节目内容实时调整。电视节目管理者无法实时获得的所有观众的收视反馈, 因而对传统电视媒体而言, 根据观众行为调整直播节目的内容进程是难以实现的。但网络媒体的数据挖掘系统可以有效弥补这一不足, 通过对所有观众视频观看数据的采集及处理, 网站管理者可以实时获得当前观看该直播的人数变化曲线 (如图5在线人数窗口所示) , 通过对访问人数监控可有效调整网站直播内容, 如适时停止不受欢迎的话题、多次重播或改编受欢迎的视频片段等。

(3) 其他运维监控。从该实时监控界面网站运维人员可以获得所有看看新闻网的视频访问用户的基本访问信息, 当监控出现各种异常, 如视频缓冲次数异常波动、在线人数猛增时, 运维人员可以根据其变化趋势, 提前做好准备, 以保障网站稳定运行。

2) 基于OLAP的可视化数据挖掘。基于OLAP的可视化数据挖掘是该数据挖掘系统在模型分析阶段的核心。通过使用模型发现阶段构建的数据模型以及多维度数据立方体的数据结构, 网站管理者可以在OLAP可视化分析中查询聚合数据, 进行多维度深入分析, 获得对网站运营有益的相关指导。如通过分析用户的访问, 可以帮助网站管理者深入分析用户的浏览习惯和点击习惯, 将访问者最感兴趣的内容放到最容易引起点击的区域, 使网页设计和栏目设置更符合访问者的习惯, 增加用户粘度和提升网站流量。

3总结与展望

从目前网站的发展来看, 各大网站都往用户个性化产品服务发展。网站数据挖掘系统可以有效对网站上用户的访问进行衡量, 了解影响网站访问的各种因素, 以便快速调整网站策略等。看看新闻网在视频网站数据挖掘的建设上已初具成效, 目前网站的数据挖掘系统已在流媒体监控及内容指导上发挥出积极作用。但由于样本量不高, 该系统在发掘网站用户的访问偏好, 从而利用这些信息来发展用户、指导网站建设方面, 尚有余力可以发掘。随着网站的推广, 数据量逐渐丰富, 看看新闻网数据挖掘系统将成为一个关键工具, 为网站的内容与结构调整提供可靠的数据基础, 帮助网站提升品牌知名度。

摘要:随着我国各大电视台所属的网络电视台纷纷上线, 视频网站的价值衡量, 指导网站建设, 从而凸显传统媒体在网络平台上的影响力已成为广电人的一个新研究方向。而视频网站数据挖掘技术作为该研究方向的一个分支, 目前已得到一定应用。本文提出了适用于视频网站的数据挖掘系统模型, 并以看看新闻网数据挖掘系统为例介绍视频网站数据挖掘系统的系统架构及其作用, 该系统可有效地优化网站视频分发效果, 指导视频内容的制作, 向用户提供更多符合其访问习惯的内容, 从而改善网站整体的友好度, 提高网站访问量和媒体影响力。

关键词:视频网站使用数据挖掘,网站使用数据挖掘,数据挖掘

参考文献

[1]Cooley R., Mobasher B., and Srivastava J.“DataPreparation for mining World Wide Web browsing patterns”, Journal of Knowledge and Information System, 1999, pp.1-27.

[2]Cooley R., Mobasher B., and Srivastava J.“GroupingWeb page references into transactions for mining World WideWeb browsing patterns”, New port Beach, CA.IEEE, 1997, pp.2-9.

[3]Srivastava J., Cooley R., Deshpande M.and Tan P., “Webusage mining:Discovery and applications of usage patternsfrom Web data”, SIGKDD Explorations, 2000, Vol.1, pp.12-23.

[4]Wang T.and Ren Y., “Research on PersonalizedRecommendations Based on Web Usage Mining UsingCollaborative Filtering Technique”, WSEAS Transactions onInformation Science and Applications, 2009, Issue 1, Vol.6, pp.62-72.

[5]Cohen E, Krishnamurthy B., and Rexfor J.“Improvingend-to-end performance of the web using server volumes andproxy filters”.In Proc.ACM SIGCOMM, 1998, pp.241-253.

[6]World wide web committee web usage characterizationactivity.http://www.w3.org/WCA.

[7]Rawat S.and Rajamani L.“Discovering potential userbrowsing behaviors using custom-built apriori algorithm”.International Journal of Computer Science&InformationTechnology (IJCSIT) , 2010, 2 (4) , pp.28-37.

上一篇:微笑的日子下一篇:电影的产品力