您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页移动数据访问范文

移动数据访问范文

来源:二三娱乐

移动数据访问范文(精选9篇)

移动数据访问 第1篇

随着移动通信技术的快速发展,移动网络中的无线终端设备应用日益广泛,基于移动设备的各类应用也飞速发展。随着数据的网络化处理的要求越来越高,很多场合都有使用移动终端来远程访问数据库的需求。通过便携的、无线的移动设备,如智能手机、平板电脑等,利用通信系统进行实时交互,快速地获取所需的数据,实现无地理阻隔的信息利用,己经是人们的必然需求。

Android系统是Google最新推出的移动设备平台,与其他Symbian、Windows Mobile手机操作系统相比,其源代码完全开放,任何人和机构都可以免费使用,基于Android系统研发己经成为了一个热门的方向[1]。Android系统具有强大的应用层API和丰富传感器功能,其开放的平台有利于开发者开发出各类应用软件,是一个真正意义上的开放性移动设备综合平台。

为了能够实现群组Android手机接入服务,提供友好的实时状态,通过移动设备与终端的互通,使终端用户能通过Android手机随时随地与服务端通信,进行即时数据通信传输,我们提出一种移动终端远程数据访问控制方法,设计实现了数据访问控制容器,经过测试,可以稳定运行,群组Android手机可以快速与服务器进行通信,满足群组Android手机远程数据访问的服务需求。

1 SOCKET通信

Socket是建立在传输层协议上的一种套接字规范,它定义了三种类型的套接字:流式套接字、数据报套接字和原始套接字。它们分别支持TCP/IP及UDP协议[2]。

Socket是一个客户/服务器环境的代理协议。Socket独立于应用层协议,包含两个主要组件,即Socket服务器和Socket客户机[3]。当客户机与远程主机应用层服务器建立连接时,客户机首先与代理服务器建立连接,双方应用层服务器的地址、端口均将被传递给代理服务器。

在Socket协议系统中,当客户机要与应用层服务器建立连接时,首先与Socket代理服务器建立连接,应用层服务器的有关地址、端口均会在这一过程中传递给Socket代理服务器。客户机与Socket服务器经过认证协商后,Socket服务器会根据Socket客户机请求与远程服务器建立相应的TCP或UDP连接,实现相应的应用程序协议。

2 Java多线程分析

2.1 多线程的提出

移动终端对后台数据的访问需要考虑实时性、并发性,在单线程数据通信中,一个进程中只能有一个线程,剩下的进程必须等待当前的线程执行完,导致系统完成一个很小的任务都必须占用很长的时间,而且这种方式应对突发事件能力不强,如果某个连接发生了异常,将会导致整个程序的崩溃。采用了多线程技术的应用程序可以更好地利用系统资源。其主要优势在于充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求作出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。

要实现群组Android手机对后台数据的访问,就需要开发支持大量客户机的服务器端应用程序,可以将应用程序创建成多线程形式来响应每台Android手机端的连接请求,使每个连接用户独占一个客户端连接线程,通过多线程,用户感觉服务器只为连接用户自己服务,从而缩短了服务器的客户端响应时间。Java作为优秀的网络编程语言之一,提供了强大的Socket编程机制,利用Java语言,我们可以比较容易实现Android手机的多线程访问控制。

2.2 Java多线程的实现

Java语言使用的是Thread类及其子类的对象来表示线程的,线程也是有状态和声明周期的,每个Java程序都会有一个缺省的主线程[4]。Java中实现线程的方式有两种,一是生成Thread类的子类,并定义该子类自己的run()方法,线程的操作在方法run()中实现。第二种实现线程的方法是实现Runnable接口,通过覆盖Runnable接口中的run()方法实现该线程的功能。

无论采用继承Thread类还是实现Runnable接口来实现应用程序的多线程能力,都需要在该类中定义用于完成实际功能的run()方法,这个run()方法称为线程体(Thread Body)。按照线程体在计算机系统内存中的状态不同,可以将线程分为创建、就绪、运行、睡眠、挂起和死亡等类型[5]。

为了区分线程对于操作系统和用户的重要性,Java定义了线程的优先级策略,同样的排列优先级高可以提前被CPU处理,Java将线程的优先级分为10个等级,分别用1-10之间的数字表示。数字越大表明线程的级别越高。相应地,在Thread类中定义了表示线程最低、最高和普通优先级的成员变量MIN_PRIORITY、MAX_PRIORITY和NORMAL_PRIORITY,代表的优先级等级分别为1、10和5[5]。另外可以通过Thread类的set Priority(int a)方法来修改系统自动设置的线程优先级。

3 数据访问控制容器

3.1 数据访问控制容器设计

在移动终端远程数据访问控制容器中,服务器在无连接请求到来时,一直处于等待状态,并随时准备为多个移动终端提供服务,当某一移动终端向服务器发出连接请求时,服务器主线程立即建立一个新的Socket连接,同时产生一个子线程来处理移动终端的请求,当服务器启动完子线程后马上又回到监听状态,等待下一个移动终端的连接请求。每个子线程启动后,各自独立完成与终端设备的数据传输。

数据访问控制容器采用是并发服务模式进行工作,每个移动终端都通过一个独立的线程来处理,由于主线程几乎没有和子线程发生通信,系统开销较小,资源使用效率较高,由于不同的线程关联不同的对象,处理各自异常事件,软件有较强的健壮性。更关键的是,各子线程均使用同步方式接收数据,保证了数据传输实时性要求。

3.2 数据访问控制容器的实现

服务端应用程序启动时,监听器被触发,在服务端监听接口有初始化和销毁两个方法,它会监听servlet容器,通过调用start Pda Server()方法,启动一个主线程,主线程创建之后,就处于监听状态,它有自己的堆栈,可以根据需要派生出多个子线程,但监听收到请求后,动态调用创建子线程函数,派生出独立的子线程,处理不同端口号的请求。主线程在派生子线程后,不对子线程加以控制和调度,子线程单独和客户方发生连接并处理异常。

数据访问控制容器启动后,通过监听指定的本地端口,接收移动终端发来的请求。每次接收到请求,通过实现Java的Runnable接口使用线程,Runnable接口中定义了一个run()方法,在实例化一个Thread对象时,可以传入一个实现Runnable接口的对象作为参数,Thread类会调用Runnable对象的run()方法,继而执行run()方法中的内容启动新的移动终端线程,完成移动终端的请求与响应。服务器端的数据访问控制容器类库如图2所示。

每个子线程启动后,即可获取移动终端传来的请求内容,交给XML解析类处理。解析获得的XML文档,并封装成Java对象,传递给后台处理业务逻辑,并与数据库进行交互。每个子线程启动后,设计一个死锁检测线程,也就是单独的一个用于处理死锁的线程。可为每个启动的线程设置一个计数器,每循环一次加一,监控线程每隔一定的时间间隔对这些线程的计数器记录一个快照并判断线程的循环是否正在运行,如果没有,就销毁该子线程。

4 结果分析

为了对实现的数据访问控制容器进行性能分析,我们分别在台式机与服务器上安装该控制容器。台式机的配置为:Intel Pentium Dual-Core E5500 2.80GHz、3GB内存、操作系统为Windows XP;服务器的配置为:Inter Core i5 750 2.67GHz、8GB内存、操作系统为Windows Server 2008 R2 Standard。对不同配置的电脑,分别开启100、500、1000、2000、5000个线程,每个线程进行一千万次加法计算,最后对整个容器的响应时间进行统计。每个形式都采集10个样本,进行平均,对运算结果进行统计如图3所示。

根据实验结果,可以看出该数据访问控制容器的性能与设备硬件配置有密切关系,随着移动终端数量的增加,不同硬件配置的响应时间差距也明显增加。依据测试结果,当有2000个移动终端同时访问时,在服务器上的响应平均时间为3.8s,基本能够满足群组Android手机用户数据请求的实时性需求。

5 结语

无线网络技术的迅猛发展和无限设备终端的日益普及,使得人们对于无线应用服务的需求不断扩大。本文针对群组Android手机的接入访问进行研究,实现一个移动终端远程数据访问控制容器,目前已经成功应用在信息化项目建设中。通过实践验证,该移动终端远程数据访问控制方法能够很好地响应系统群组手机访问请求,为相关信息化项目建设提供有益的借鉴。

摘要:移动通信技术与互联网技术的飞速发展,对移动终端设备的实时接入与数据响应提出了要求。针对Android手机平台的远程数据访问进行研究,依据Socket通信机制,利用Java的多线程实现方法,设计实现一个数据访问控制容器,解决移动终端设备对后台数据访问的实时性、并发性问题,满足群组Android手机远程数据访问的需求。

关键词:移动终端,Socket,多线程,数据访问控制

参考文献

[2]Forouzan B A,Chunn S F.TCP/IP Protocol Suite[M].The McGraw Hill Companies Inc,2000:602-603.

[3]王远洋,周渊平,郭焕丽.Linux下基于socket多线程并发通信的实现[J].微计算机信息,2009,25(5):70-72.

[6]姚显星,刘卫国.Android的架构与应用开发研究[J].计算机系统应用,2008(11):76-79.

用PC浏览器访问移动视频网站 第2篇

★Chrome浏览器模拟Android设备

首先,右击桌面上的Chrome浏览器快捷方式图标,再选择“属性”,打开相应的对话框,在“目标”文本框的字符后面添加以下语句:“--user-agent="Android"(注意:user前有两个“-”符号,前面还有一个空格),单击“确定”按钮(图2)。

在播放的过程中,如果我们觉得视频画面过小或过大,可通过单击Chrome右上方的“自定义及控制Google Chrome”按钮,然后在出现的菜单中设置“缩放”项来进行调整(图4)。

★FirefoX浏览器模拟Android设备

Firefox浏览器用户可以使用User Agent Switcher插件来完成对User Agent的修改工作。

1)在Firefox浏览器主界面的右上方,单击“打开菜单”按钮,选择“附加组件”页面(图5)然后在其中的搜索框中,输入User Agent搜索User Agent插件,并将其下载安装到Firefox浏览器中(图6)。

2)安装完毕重启Firefox浏览器,选择插件选项按钮,打开相应的对话框,单击New按钮,选择New userAgent命令(图7),打开同名对话框。

3)在Description(描述)文本框中输入Android,User Agent文本框中输入“Mozilla/5.0(Linux:U;Android 2.2;en-us;Nexus One Build/FRF91AppleWebKit/533.1(KHTML,like Gecko)Version/4.0Mobile Safari/533.”,其他项保持默认值,单击“确定”按钮(图8)。即可将Android模拟设备添加到User Agent列表中。

新版本的Firefox浏览器,新添加的工具不能显示在工具栏中,需要手动添加工具栏。单击“打开菜单”按钮,在订制中,把刚才添加的User Agent Switcher插件拖入到工具栏中(图9),以后要访问移动网站观看其中的视频时,只需在Firefox菜单栏中选择“工具→Default UserAgent→Android”即可(图10)。使用后,图标颜色由灰色变为蓝色。

★利用Opera MObIle Emulator实现模拟Android

上述方法仅适用于PC中安装了Chrome或Firefox浏览器,且并不经常用PC端浏览器访问移动网站的用户。有些朋友经常用PC访问移动网站,而且他们希望能以自己指定的设备方式,如Samsung Galaxy sⅡ、HTC Desire或Amazon Kindle Fire等,原汁原味地体验网站内容,这时,就需要借助Opera Mobile Emulator浏览器来实现了。

Opera Mobile Emulator能够在电脑上模拟各种手机、平板等设备,可以100%重现Opera Mobile手机浏览器的效果,几乎和真实版本没有任何区别,所以如果我们要经常访问移动网站中的内容(包括视频),使用它绝对是个不错的主意。

1)安装后运行程序,在出现的Choose language(选择语言)对话框中,选择语言为“简体中文”,单击确定按钮,进入设置界面(图11)。

在这里,我们可以在“资料”栏中选择要模拟的设备,也可以在“分辨率”和“像素密度”等栏中设置相应的参数(一般来说,保持默认值即可)(图12)。

2)设置完毕,单击“启动”按钮,指定设备的Opera Mobile浏览器界面就出现了(图13)。

移动数据访问 第3篇

随着信息技术的发展,网络在高校办公及教学中起到越来越重要的作用。高校网络化使传统的手工选课被网络选课所代替,然而学生在享受便捷的网上选课同时,也深深感受到网络拥塞带来的不便。在网上选课的高峰时刻,几千个节点同时请求服务器响应,极易造成网络瘫痪,使得大家在选课平台上无法进行正常操作。移动Agnet(MA)技术,充分利用其移动性、自主性和智能性等特点,通过把查询任务存储到一个可以通过网络进行移动的Agnet上,Agen将其移动到服务器上,执行查询并存储结果,然后返回到用户,这样的系统具有查询效率高、支持间断计算、网络适应性强等优势。因此,在传统的B/S和C/S选课模型基础上,提出基于移动Agent的选课系统就可以解决网络拥塞,提高数据库访问质量。

1 移动Agent

Agent技术属于人工智能领域。Agent是一种软件程序,能够自主运行和提供相应服务,具有一定智能,它可以模拟人类行为和关系。移动Agent的思想就是让Agent在网络中移动并执行来完成某些功能。

这种新的计算模式能有效地降低分布式计算中的网络负载,提高通信效率,移动Agent可以在异构的软、硬件网络环境中自由移动。随着网络环境的变化动态适应,并提供较强的安全性和容错能力。移动Agent技术已被广泛应用于电子商务、分布式信息检索、信息发布、个人助手、安全中介、电信网络业务等领域。

当用户创建移动Agent后,移动Agent离开用户机器自主地在网络上执行用户任务,不需要用户机器的参与,而将最终结果返回给用户。移动Agent在用户机器断开网络后也能正常工作,此能力在恶劣网络环境中,特别是对移动计算起到关键性的作用,而应用传统技术是很难实现的。传统的基于Client/Server的结构比较适合于信息检索量小(少于100K)、连续访问站点少(少于4个)和处理延迟低(少于20ms)的情况,而在实际的应用中这些条件有时很难具备。随着信息检索量和连续访问不同站点的数量的增加,与传统C/S结构(即客户端应用程序与数据库服务器紧密一致性藕合)的实现方法相比,移动Agent技术性能上的优势就越来越明显。

2 基于移动Agent的选课系统设计

2.1 总体设计

基于移动Agent的网上选课系统模型如图1所示。在此模型中,个人用户(Personal Computer)和远程数据服务器(Remote Database Server)安装了MA运行环境(MAE),MAE提供了MA运行所需的各种资源,包括处理器、内存及访问接口。当个人用户进行选课操作时,本地MAE首先创建一个移动Agent,然后将其分派到远端的数据服务器。移动Agent到达目的服务器后,首先初始化JDBC驱动器,之后与数据库相连,执行相应操作,得到操作结果,而此时移动Agent并没有马上将结果发回去,而是在目的主机上筛选查询结果,选出最能满足客户要求的记录,只把结果发送回客户端。这样就减少网络传输的数据量,使网络负载减轻,数据传输所用的时间就相应减少,随之用户请求的响应时间也就减少了。

2.2 移动Agent平台Aglet

Aglet是由IBM日本公司用纯Java开发的移动Agent技术,提供了实用的平台Aglet Workbench,开发或执行移动Agent系统。到目前为止,Aglet是最为成功和全面的系统,它提供了一个简单而全面的移动Agent编程模型:为Agellt间提供了动态而有效的通信机制;还提供了一套详细且易用的安全机制。Aglet这个字是由Agent与Applet两个字所合成的,简单地说就是具有Agent行为的Javaapplet对象;但Aglet同时传送代码及其状态而Applet只传送代码。Aglet以线程的形式产生于一台机器上,可随时暂停正在执行的工作,而后整个Aglet可被分配到另一台机器上,再重新启动执行任务。因为Aglet是线程,所以不会消耗太多的系统资源。

每个Aglet是一个Java对象,它能够从网络上的一部主机移动至另一部主机,即一个Aglet可以将自己派遣至远端的另一部主机,并还原执行,无需从头开始执行,而是从中断执行之处再开始执行,同时在源主机瞬间停止执行。移动时,Aglet将程序代码连同它携带的所有对象的状态一起转移。而且一个内置的安全机制可以保证主机遇到不确信的Aglet时的安全性。Aglet的AgletProxy接口可以为每个Aglet代理提供了通用的方法与其它的代理进行通信,所有的代理都运行在AgletContext代理环境中。

3 数据库访问方法

JavaSoft公司制订的JDBC是Java数据库连接规范,JDBC由Java语言编写,为Java程序提供了一个对各种数据库的统一接口访问,是一个能够支持基本SQL功能的通用底层的API。

图2表示JDBC包含的两部分:一部分是面向程序开发人员的JDBC API,另一部分是面向底层的JDBC驱动器API(JDBC Driver API)。这两部分构成JDBC的总体结构,并且它们与数据库独立。当JDBC访问网络数据库时,Java程序通过JDBC驱动器API访问JDBC驱动器管理者(JDBC Driver Manager),驱动器管理者再通过驱动器API访问不同的JDBC驱动器(JDBC Driver)。这样应用程序编写一次并移植到各种驱动器上,虽然驱动器不同,但应用程序无需改变就可以实现对不同数据库的访问。

管理各种数据库软件商提供的JDBC驱动器的JDBC驱动器管理者,对没有提供相应驱动器的数据库管理系统,采用特殊的JDBC-ODBC(Open Database Connectivity,开放数据库互连)桥驱动器,该驱动器支持JDBC通过现有的ODBC驱动器访问其数据库管理系统,并且JDBC网络驱动器还允许使用通用网络协议访问不同的数据库管理系统。

3.1 路由问题

当一个移动Agent被派出时,可能需要查询多个数据库服务器,因此系统必须以当前的任务和当前的网络条件为依据,选择一条最佳的移动路线,这样移动Agent完成整个任务所花的代价最少,一个最佳的移动Agent行程表就制定出来,这与数据结构中的“旅行商问题”十分类似,一般可以定义如下:

有N+1个站点Si(0≤i≤N),用Agent从Si移动到Sj花费的时间Tij来表示任意两个站点Si到Sj的距离,Agent在Si上逗留的时间为Pi。当一个任务完成后,该Agent必须返回到起始站点S0。为使完成该任务所花费的时间T最少,要求给出一移动路线(I0,Il,I2,…,In,I0)。

此问题有以下几个特点:

(1)因为任意两个站点间的延迟Tij并不固定,可以随着时间和网络流量的变化而变化。所以查询开始时计算的最佳路由,因为在查询过程中可能会因环境条件而变化,所以不再是最优的。

(2)查询完毕后,MA可以自行消亡而不必回到起始点,因为MA在查询过程中,当结果达到一定数量后就回传给源查询主机。

(3)MA代码具有可重用性,可在查询过的站点上保留备份,整个任务完成后,再使所有的MA消亡。

因此可以采用“最小生成树”的Prim算法或Krusal算法来解决上述问题。下面给出Prim算法的基本步骤:

(1)集合:N={已到达的站点},S={未到达的站点},初始值:N=(1)N={{s0},S={sl,s2,.....sn};

(2)对任意si∈N,计算si到sj∈N的延迟lij,并选取lmin=Min{lmn|sm∈N,sn∈s},S=S{sN},N=N∪{sN},在站点Sm派发移动Agent到站点Sn进行搜索;

(3)重复步骤(2),直到S=Φ为止;

(4)移动Agent从最后一个站点回到初始站点s0。

为了保持各个移动Agent的S、N集合数据的一致性,可由源查询主机维护集合S、N。并在MA在某个站点查询完毕;MA克隆出副本到别的站点并行查询时执行Prim算法。由此可见,由源查询主机根据各MA返回的路径信息,确定最优查询路径,是一种综合了集中式查询和分布式查询两种技术特点的查询算法。

3.2 系统实现

由于移动Agent的运行需要移动Aglet平台的支持,选择校园网上的两台PC机作为实验环境,需要安装Aglet平台,源主机名为local作为访问的客户端,数据库服务器名为main,采用的数据库服务器软件为SQL Server 2000。

按照已定制的各个Agent功能要求,在编写移动Agent代码时,从Aglet类扩展出一个子类,使Agent完成相关功能并编写相关代码。

通过Aglet平台运行,产生一个移动Agent(MyAglet),并执行相应的用户需求。执行编译形成的class文件,它源于编译源代码之后产生一个的MyAglet.class文件。

图3,图4所示,实验成功的实现了移动Agent技术的访问网络数据库的基本功能。

4 结论

经实验证明,采用基于移动Agent的网上选课系统数据库访问技术,大大缓解了网络拥塞,提高了数据库访问质量了,很大程度上解决了学生同一时间段密集访问的问题。证明了除了升级硬件,更应该寻找高效、安全、适应性强的数据库访问方法,移动Agent的引入进一步扩展了选课系统的数据库设计思路,对整个网络选课系统的设计提供了基础。

参考文献

[1]Wooldridge M J,Jennings N R.Intelligent agent:theory and practice[J].Knowledge Engineering Review.1995,10(2):115-152.

[2]D.B.Lange,M.Oshima,Seven Good Reasons for Mobile of the ACM,1999,42(3):88-89.

[3]张云勇,刘锦德.移动Agent技术[M].北京:清华大学出版社,2003.

[4]姜波,赵文清.利用移动Agent实现对远程数据库的访问[J].山西电子技术,2006,34(2):5-6.

[5]肖清雷.基于Web网上选课的大并发访问模型设计[J].科技广场,2009(9):164-166.

移动数据访问 第4篇

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访问数据库 第5篇

随着网络技术和数据库技术的不断发展,现在的应用系统对数据集成的要求越来越高。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.

移动数据访问 第6篇

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

引言

随着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 storage arch of the ACM,2000,43(11):11-17

[2] Phillips B.Have storage area networks come of

[3] Katz R 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

移动数据访问 第7篇

关键词: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.

移动数据访问 第8篇

[关键词]大数据;非均匀存储访问;线程调度

[中图分类号]C37 [文献标识码]A [文章编号]1672-5158(2013)06-0031-02

引言

在当今时代,互联网迅猛发展,各行各业数据量猛增。数据种类繁多,数据量巨大,大数据时代来临。随着大数据的来临,大数据处理成为越来越有价值的工作,而大数据的高性能处理则至关重要。

目前大数据处理大都采用多处理器系统,而多处理器系统中的非均匀存储访问架构为进行大数据高性能处理的主流体系结构之一。

1 非均匀存储访问技术特点

1.1 多处理器系统模式

在多处理器系统中,比较流行的有三种模式,即对称多处理模式、大规模并行处理模式、非均匀存储访问模式。对称多处理模式是在一个主存上连接着两个或两个以上的处理器,这些处理器共享一个主存,也被称为均匀性存储访问系统。大规模并行处理模式是分布式存储器模式,可扩展性比较好,但是需要并行编程和并行编译,在软件系统构建上比较复杂,使用不便。非均匀存储访问架构是将若干个单元通过专门的互联设备联结在一起组成分布式和共享内存系统。每一个处理器可以访问自己单元的存储器,也可以访问其他单元的存储器,所有访存有远近、时延长短之分,称为非均匀存储访问。

1.2 非均匀存储访问架构的性能优势

非均匀存储访问架构的性能优势主要体现在以下几个方面:第一,非均匀存储访问处理器访问同一单元上的内存的速度比一般对称多处理模式超出一倍。第二,非均匀存储访问的突破性技术彻底摆脱了传统的超大总线对多处理结构的束缚,它大大增强单一操作系统可管理的处理器、内存和I/O插槽。最后,非均匀存储访问系统提供内存互联的硬件结构,这种技术可以开发新型动态的分区系统。系统分区可以允许系统管理员根据用户工作负荷的要求,简单地管理和使用CPU和内存资源,从而达到最高的资源利用率和最佳的性能。正因为以上的原因,非均匀存储访问架构得到越来越广泛的应用。

2 非均匀存储访问技术线程访问时间研究

非均匀存储访问系统的基本特征是具有多个CPU模块,每个CPU模块由多个核(如6个)组成,并且具有独立的本地内存、I/O槽口等。由于其节点之间可以通过互联模块进行连接和信息交互,因此每个CPU可以访问整个系统的内存。但是线程访问远近程存储器的时间是不一样的。

我们使用的非均匀存储访问系统是四个主频为2.2GHZ的双核AMD opteron多处理器,每个处理器有2x1GB DDR400 DRAM内存。如(图1)所示。四个处理器由coherent HyperTransport(相关性超传输)总线连接,每个处理器有一条双向HyperTransport(超传输)总线和I/O连接,两条双向相关性超传输总线分别和另外两个双核处理器连接。每个双向超传输总线的数据传输带宽为4 GB/s。系统有4个节点NO,N1,N2,N3。每个节点有自己的内存控制器(MCT),连接着本节点的内存。每个节点有2个核CO,c1,两个核连接着一个系统需求接口(sRI),系统中间有一个交叉设备XBar,SRI、内存控制器、各种各样的超传输总线都和XBar连接。

在非均匀存储访问系统中,内存需要可以来自于本节点的核,也可以通过超传输总线来自于其它节点的核。前者叫做本地访问,对内存的访问要求从核到SRI,到XBAR,再到MCT;后者叫做远程访问,内存访问要求的路线是从远程节点的核通过超传输总线到达XBAR,从XBAR再到MCT。每个节点的SRI、XBAR、MCT都有缓冲区,缓冲区用来存放需要传送的数据包。

在非均匀存储访问系统里,影响应用程序处理大数据的性能主要有以下几个方面:

①远程内存访问。处理器访问远程存储器的次数多少会直接影响一个应用程序的性能。提高非均匀存储访问系统性能的策略之一就是减少远程访问的次数。要尽可能地让进程在本节点执行。

②相互连接的超传输总线带宽的影响。

③内存竞争的影响。当许多处理器在同一时刻访问一个内存单元的时候就会出现内存竞争,内存竞争会增加内存响应时间,降低程序的执行效率。恰当的数据分配策略会减少内存竞争。

④内存带宽的影响。

⑤缓冲区影响。在非均匀存储访问多处理器系统中,缓冲区在性能上发挥着重要的作用。如果处理器在本地缓冲区中没有找到需要的数据,就会访问远程的存储器。

⑥系统中各种各样缓冲区可容纳缓冲队列长度的影响。

2.1 远近程内存访问的时间差别

线程本地存储器访问和远程存储器访问时间究竟有多大的差别呢?我们先用一个例子来研究远近程内存访问的时间差别。

我们得到处理器所记录的当前时间的方法是使用时钟周期数TSC的值乘以CPU的时钟周期cycle来得到。就是在每次处理器启动的时候把TSC的值清零,然后每个时钟周期TSC的值都加1,这样要得到代码执行的周期数就在一段固定代码执行前后分别读取TSC的值即可。用下列公式可以计算代码执行时间:

T=(TSC1-TSC2)·cycle

当线程运行和访问内存都在同一个节点时,就叫做本地访问或0-跳访问。当线程运行在一个节点,访问内存却在其他节点,就叫做远程访问。在远程访问中,如果线程运行的节点和内存访问的节点是彼此直接连接的,就叫做1-跳访问。如果线程运行的节点和内存访问的节点不是直接连接的,就叫做2-跳访问。如图1中,线程在节点0运行,则其对于节点1、2、3的访问即为远程存储器访问,对节点1、2的内存访问叫做1-跳访问,对节点3的内存访问叫做2-跳访问。

我们采取了一段串行程序使用一个线程向不同节点存储区域写入5M相同大小数据量的方法来测试访问的时间,并且,每次实验我们重复了2000次。统计结果表明,本地存储区域的访问时间是最短的,平均为2166μs;而对于远程存储区域的访问则需要较长的时间,其中1、2节点的访问时间平均达2445μs,而节点3,访问距离最远,访问时间也最长,平均达3032μS。

由此实验可见,在非均匀存储访问系统中,访问远程内存的速度要慢于访问本地内存的速度。在本例中,1-跳距离的存储访问时间是本地存储访问的1.13倍,2-跳距离的存储访问时间是本地存储访问的1.4倍。访问远程数据的距离越远,付出的时间代价越高。我们在应用程序中,尽量保持数据在节点内部访问。

2.2 单线程只读和只写远近程存储器的研究

如果对内存的访问为只读或只写,本地访问和远程访问时间有什么差别呢?我们用下面的例子来研究只读和只写访问远近程存储器的影响。

我们采取一段串行程序使用一个线程向不同节点存储区域分别连续读出和写入60M相同大小数据量,读写入的大小要远远大于缓冲区大小。线程运行在节点O的C0上。并且整个系统只有这一个线程运行。线程的数据访问分为以下几种:

*线程本地访问节点0内存。(0-跳)

*线程远程访问节点1内存。(1-跳)

*线程远程访问节点2内存。(1-跳)

*线程远程访问节点3内存。(2-跳)

访问时间结果表明,随着访问距离的增加,读写访问的访问时间都增加了。每种情况,写访问的时间都大于读访问的时间,因为写操作会生产出更多的内存带宽负载。但是读写访问的访问时间都随着访问内存距离的增加而增加。

2.3 节点间和节点内线程调度访问研究

如果是多线程,通过节点调度多线程有以下几个制约因素:

*系统是否空闲,也就是系统有没有其它负载;

*多线程是否访问各自私有的数据。

*多线程是否访问共享的数据。

我们先来研究系统空闲下线程只访问本节点私有的数据。

我们使用2个线程进行写操作,每个线程都写)260M的数据,都访问本节点的内存。第一种方法是节点间调度,即一个线程在节点0的核0运行,另一个线程在节点1的核0运行;第二种方法是节点内调度,即2个线程分别在节点0的核0和核1上运行。比较两个线程运行的总时间。结果表明,节点间调度线程的执行时间比较少。

随后我们又使用8-CPU非均匀存储访问系统工作站(AMDOpteron 6168 1.9GHz processor,64G RAM,48 core,8节点,每个节点6个核)实验环境,使用6个线程进行写操作。都访问本节点内存,分上述两种情况,即第一种方法是节点间调度,每个线程分别在6个节点的核0运行,第二种方法是节点内调度,6个线程都在节点0的每个核运行。结果为,第一种情况执行时间比较少。

在非均匀存储访问系统中,在空闲执行环境下访问私有的数据,我们应尽量避免使用第二种情况来调度线程。从负载平衡的角度来说,如果某一个节点负载过多,而其他节点空闲,必然会导致一个节点内的资源产生竞争,从而影响应用程序的执行效率。

如果在空闲执行环境下,各线程之间的数据共享,我们使用2个线程和6个线程在2种环境下分别进行了测试。线程都访问本节点内存,第一种方法是节点间调度,一个线程在节点0的核0运行,另一个线程在节点1的核0运行;第二种方法是节点内调度,2个线程分别在节点0的核0和核1上运行。6个线程写60M数据的两种方法,第一种方法是节点间调度,每个线程分别在6个节点的核0运行,第二种方法是节点内调度,6个线程都在节点0的每个核运行。结果表明,在节点内调度线程的执行时间比较少。因为各线程之间数据共享,访问内存数据的距离越短,时间越少。所以我们在空闲环境下进行线程调度,各线程间数据共享,优先从节点内进行调度,一个节点调度为完毕,再从另一个节点进行调度。

对于上述实验,我们在系统有少量负载的情况下也做了相应的实验,取得了类似的结果。

由此可知,在非均匀存储访问系统中,在系统空闲的情况下,或者少量负载的情况下,对应用程序进行大数据处理提出如下建议:

*如果线程仅访问本节点私有的数据,优先从节点间调度线程;

*如果线程间数据共享,优先从节点内调度线程,一个节点饱和后再从另一个节点进行调度;

*如果线程需要访问的既有独立数据又有共享数据,但私有数据远远大于共享数据,优先从节点间调度线程。

3 结束语

当今,在互联网及各行各业都存在着大量数据需要高性能处理,本文通过实验对非均匀存储访问技术进行研究,发现了读写内存、不同访问距离等各种情况下线程内存访问的性能特点。得出了应用程序在线程调度中的重要结论,对大数据的高性能处理有重要的指导意义。

参考文献

[1]都志辉,高性能计算并行编程技术-MPI并行程序设计,清华大学出版社,2001

视频网站访问数据挖掘系统 第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视频网站数据挖掘系统

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

[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.

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务