vb+sql程序设计论文

2024-11-12

vb+sql程序设计论文(精选6篇)

1.vb+sql程序设计论文 篇一

Vb课程设计实训总结

为期一周的实训很快就接近尾声了,这一周里很紧张,很忙碌,却很充实!通过这次的实训使我学到了很多,同时也让我意识到我要学的更多。

这次实训的内容主要是利用VB开发工具与数据库SQL server开发一个实用的小型管理信息系统。经过仔细斟酌考虑,我最后决定开发一个学生学籍管理系统。该系统主要包括学籍信息输入、学籍信息管理、学籍信息查询和统计查询四大功能。

刚开始时我觉得开发这个学籍管理系统还是有点难度,很有挑战性的。毕竟学生学籍管理系统是一个比较系统、完善、功能相对较齐全的管理系统,每一个模块都需要具备各种查询、修改、添加和删除等功能,因此程序编写也十分复杂,工作量较大,编写一定要认真。一个小小的失误都可能使程序出现大的漏洞。而我们只是学了点简单的vb程序编写,没有尝试过这种相对来说比较系统完善的系统。所以在做项目的时候我还是感觉有点压力、整个实训过程中都在为这个系统捏着一根紧弦。可即使如此程序的开发过程中还是出现了各种大大小小的错误,比如vb与数据库的连接,一开始我使用的是SQL数据库,程序编写时一切数据都是建立在SQL基础上的,可是中途换了一次机房,该机房里并没有装SQL2005,但是基于时间因素的考虑,最终改用了access。

另外,通过这次实训,让我了解意识到了“规划”这个词的重要

作用。任何事情只有先规划好了才可能一帆风顺的进行下去。一开始,就是因为我没有很好地对这次实训进行规划,所以一上机就开始写程序,想到什么就补,到后来不紧浪费的很多时间,连以前已经写好了 的程序都开始乱套了。因此我得出总结:开发程序,首先要进行程序的设计,全面分析会用到的东西以及考虑可能会出现的情况,理清思绪、写出大致的要点后再上机编写程序以及操作。系统分析越准确,设计的系统越精确,可以大大减少后期的修改、维护工作。当然做好做对一个项目固然重要,同时美观程度也是必不可少的,无论是从参观者的角度还是自己看的角度都很重要。

总的来说,这次实训还是比较成功的。最后看着自己辛苦做出来的程序成功地运行,特别地兴奋,也特别有成就感!因为这是我自己一步步设计、一步步完善、辛苦付出后得到的成果!当然最重要的是这次实训使我学到了更多的知识,帮助我缩小了实践和理论的差距,通过这次实训让我更深一步的对vb这门课程的知识有更进一步的渴望,同时对自己的专业,对自己的能力,对自己所学的知识有正确的认识,并且希望能在以后的学习工作中不断提高和完善自己!

2.vb+sql程序设计论文 篇二

关键词:科技,VB,Web安全,SQL注入,黑客

一、引言

SQL注入攻击已经成为网络攻击的主要手段。很多Web程序编写者在编写的程序中会留存多种SQL漏洞, 而能够检测漏洞的自动工具却很少。为了方便初学者掌握和使用, 笔者用VB来编写一个SQL注入检测机, 和有兴趣的朋友一同分享。

二、研究原理

尘缘雅境图文系统综合管理系统V3.0, 主要漏洞存在于ReadNews.asp?NewsID=中, 系统没有对NewsID提交的参数进行过滤。正常情况下ReadNews asp?NewsID=7程序是这样处理here NewsID=7的:如果我提交的内容变成ReadNews.asp?NewsID=7 and1=2, 那么此时程序就变成where NewsID=7 and 1=2, 结果将变成了false, 也就不能返回正常页面;如果提交ReadNews.asp?NewsID=7 and 1=1, 这时where后条件仍为true, 可返回正常页面。根据这个原理, 页面地址后面跟上%20and%200< (select%20count (*) %20from%20admin) , 其中%20就是提交空格了, admin是表格名, 如果正常显示页面, 那么就可确定该表格是存在的。用%20and%20 (select%20top%201%20len (username) %20from%20admin) >0, 其中username是字段名, 如果可以正常显示, 就可以确定该字段的存在。这里打开数据库就可以知道, 存放密码的是admin表, 其中username是用户名, passwd是密码。

在newsid=4后跟%20and%20 (select%20top%201%20len (username) %20from%20admin) >一个整数, 这个整数从0增大, 直到页面能正常显示, 就可以判断出用户名的长度。只要把其中的username替换成passwd就可以判断出密码的长度。

newsid=4%20and%20 (select%20top%201%20asc (mid (username, 3, 1) ) %20from%20admin) =109, 页面正常显示, 可以判断用户名的第三个字符的ascii码值是109。关于这个漏洞, 具体可以参见《SQL INJECTION攻击详解》。

根据提交请求后返回的错误代码404, 判断是否能够完成查询。但这样的操作不是很准确, 特别是程序中进行了一些容错处理的情况。如提交的参数不存在, 它可能会返回一个空页面, 而不是错误代码404。

可根据返回正常页面的特征码来判断, 提取出返回正确页面显示而不正确页面没有的内容作为特征码。这样虽然速度慢一些, 但准确度高一些。本文就是采用了这种方式, 利用internet trasfer控件取得页面返回的文档。

三、编程实现

首先新建一个标准模块, 在其中声明2个全局变量:

Public passlen As Integer'密码的长度

Public userlen As Integer'用户名的长度

写一个函数FieldLength, 用于取得用户名或密码的长度。

'完成用户名长度的检测

‘F n a m e用于指定检测用户名或密码Fname=”user”就检测用户名, 否则检测密码。

‘strWord是特征字符串

For i=0 To 16'用户名最长16位

再写一个函数CheckChar, 用于取得用户名的值。

'intNum是用户名或密码的长度

‘strWord是特征字符串

’Fname用于检测用户名或密码, Fname=”user”就检测用户名, 否则检测密码。

For i=1 To k'用户名最长16位

‘InStr函数判断在返回的文档中, 是否存在特征字符串

‘如存在, 则该位用户名字符串正确

加一个按钮控制一下:

txtresult.Text="本程序采用单线程检测, 请耐心等待………"

‘求用户名长度

If MsgBox ("管理员用户名长度"&userlen&", "&vbCr&", "&"继续检测吗?", vbOKCancel) =vbOK Then

密码检测方法只需要把上文中的用户名字段替换为密码字段就可以了, 本文不加赘述。

运行结果如图1所示。

四、结束语

本文演示到这里基本实现了预期的功能。但是由于采用的是单线程, 速度比较慢, 以后可以采用多线程进行改进。本文姑且抛砖引玉, 希望能够对读者有所启发。

参考文献

[1]sniper.SQL INJECTION攻击详解[J].黑客X档案, 2003, 9.

[2]微软公司.数据库访问技术[M].北京:高等教育出版社, 2007.

3.VB程序设计心得 篇三

在课程设计过程中,虽然我对程序设计不是很熟悉,但是通过老师详细的讲解,我按照步骤去做,遇到问题的时候先自己想办法解决,解决不了的就去问同学,问老师,通过这种学习,收获很大,学会了自己解决棘手问题,知道了团结的力量。

刚开始做程序的时候,就是完全按照老师的要求,老师的步骤去做的,结果却发现,怎么运行不了?明明是按照老师的步骤去做的,明明是按照老师的要求去做的,但是就是会遇到一些问题使程序运行不了。开始也没有管那么多,仍然是按照课本上的去做。

第一次,在上机课的时候,我根据老师讲的,在机房里做了一次,但没有做完。于是把东西存在了自己的MP3里面,以便以后上机的时候再来做。但真的没有想到,我的MP3,在一次上电子阅览室的时候,忘了拔了。于是乎,我辛辛苦苦做了一大节课的程序就这样没了。心里真的.很不舒服,但是,不舒服归不舒服,这个程序,还是得继续做下去,这么以点点小小的失误不算什么,然后跑到学校机房,继续我的VB程序设计。但由于时间问题,做的还是有点粗糙,还是不免存在一定的问题,比如说开始的时候打开不了文件,总是出现错误,自己总也找不出来,后来请教了一下同学,结果发现时代码的编写出现了错误,把代码改过来之后,程序终于可以打开运行了。然后,检查的时候,又发现“查找”运行错误,又是代码那里出现的黄色的字样,结果发现,是代码拼写错误,于是,拿着同学的代码对比一下,发现了错误所在之地,然后更正了过来。

经过一番努力,程序终于做完了。

您现在阅览的是工作总结网-心得体会wWw.GzzONGjie.Cn/xdth/谢谢您的支持和鼓励!

后来,室友看了我的程序,她说运行不了的,就是出现了错误,出现了错误,就应该改过啊,这时的我才恍然大悟。“是错误,那么就要改正的!”于是当天,我就去了学校机房,再一次运行我的程序,仍然出现错误情况,需要调试,我回忆起上课的时候,老师是怎么跟我们讲的,哪里出现了错误,需要怎么样改正。于是,我就耐着性子,一个一个,一个一个得改正,编辑代码,一个一个得检查,终于完成了。完成之后,我在运行一下,一切正常,心里终于舒了一口气。经过这次的VB程序设计,让我知道了更多学习的方法。具体如下:(1)保持良好的学习心态,第一,要有自信,自强,积极主动学习.第二,克服畏难情绪,树立学好程序设计的信心(2)要了解概念:VB程序设计本身并不复杂,变量,函数,条件语句,循环语句等概念较多.要真正能进行程序设计,就要深入理解这些概念.应该重视概念的学习.

(3)自己动手编写程序,亲自动手进行程序设计是培养逻辑思维的好方法.因此我们得多动手编写程序,逐渐提高写程序的能力.自己动手,编写一些程序,才会有成就感,进而对课程产生兴趣,做起来才比较从容.等你在编写大量程序之后(4)上机调试程序应注意多问问同学,多问问老师、,把不懂的地方标出来。(5)养成良好的编程习惯,第一,程序构思要有说明;第二,学会如何调试程序;第三,对运行结果要做正确与否的分析。

但是,如果以前上课的时候不认真的听讲的话,做这个程序设计就会有点点困难,所以,同时也在提醒我们,学习,任何时候都要认真!

4.vb程序设计课程设计题目 篇四

一.题目:

1.记事本的设计与实现 2.学生成绩管理系统 3.弹球游戏

4.图书馆管理系统 5.打字练习程序 6.超市销售管理 7.小型测试系统 8.仓库管理系统 9.猜数字游戏 10.工资管理系统 二.要求和说明:

1.自己独立完成,最终提交课程设计报告和实验成果

2.对各个系统实现功能进行分析并设计好系统界面,要求界面设计美观方便

3.课程设计报告格式:封面、题目、时间地点、要求、内容、详细步骤和过程、总结 1)功能描述

对系统要实现的功能进行确切的描述。

2)概要设计

根据功能分析,建立系统的体系结构,即将整个系统分解成若干子模块,用框图表示各功能模块之间的接口关系

3)详细设计

详细说明各功能模块的实现过程,所用到的算法、技巧等(附上代码)。

4)效果及存在问题

说明系统的运行效果(附上界面图形)、存在哪些不足以及预期的解决办法。

5)心得 :谈谈在课程设计过程中的心得体会。4.指定时间必须在实验机房上机

5.最终成绩包括平时成绩(30%)和最终考核成绩(70%)

6.实验设计内容必须以老师指定的题目为准,老师指定的题目为最终检查的依据 三.内容:

1. 仿照windows记事本应用程序,要求实现新建,打开,保存文件,对文本进行字体颜色编辑,对文本实现查找,能够复制粘贴功能。

2. 学生成绩管理系统要求实现用户登陆管理,浏览、添加、删除和修改学生的成绩信息,提供多种成绩的查询方式。1)登陆模块

每个用户只有三次登陆机会,三次均未能输入正确的用户名和密码,系统将强行推出。参考界面如下所示

2)主控模块

进入系统主界面后,自动打开学生成绩数据库,“学号”,“姓名”,“班级”,“英语”,“VB”,“数据库”6个字段分别绑定相应文本框,“总分”和“平均分”的内容根据“英

语”,“VB”,“数据库”文本框内容的改变而改变。

单击“首记录”,“尾记录”,“上一条”,“下一条”按钮可以浏览数据库,但不能修改记录。通过选择相关菜单命令可以执行相应的操作。其中执行“输入”和“修改”命令后,“首记录”和“尾记录”按钮隐藏,“上一条”,“下一条”按钮变为“确定”和“取消”按钮,参考界面如下:

3)查询模块

可以通过选择不同的菜单命令进入查询模块后,根据用户输入不同的查询条件在查询窗体中显示查询菜单,参考图如下所示:

根据不同的查询所得查询界面参考下图:

3.弹球游戏要求理解游戏玩法,正确设计游戏规则,合理设计实现算法,参照演示程序实现功能。

4.图书馆管理系统要求实现功能有:用户登陆,图书的借阅和归回,图书信息的添加,修改,查询和删除操作。

5.打字练习程序要求自行设计程序界面,能够实现打字测试和打字练习功能,对打字正确率和速度进行测试,并给出测试结果。

6. 超市销售管理系统要求实现登陆管理,超市销售商品管理(销售商品的添加、删除和修改)查看超市的全部销售记录,可按销售记录号、销售商品名称查询相关销售记录、销售统计等功能。

7.小型测试系统的设计与实现要求能够随机生成20道数学计算题(要求有加,减,乘,除运算,规定操作数的个数),对用户结果进行判断,并能最终计算总成绩,要求用户在规定的时间内做完试题,超时自动终止并给出成绩。

8.仓库管理系统要求实现注册登陆功能,对仓库信息的添加、删除和修改,入库和出库的登记和查询操作等。

9.猜数字游戏要求:游戏开始电脑随机产生一个数字不重复的四位数;将猜的数填在框内按回车或者确定按钮提交;电脑会将提交的数与它自动产生的数进行比较,结果显示成“*A*B”。A代表位置正确数字也正确,B代表数字正确但位置不正确,比如:“2A2B”表示有2个数字的位置正确且数值也正确,除此以外,还猜对了2个数字,但位置不对;共有10次机会,在10次内,如果结果为“4A0B”,游戏成功。如果10次里都没有猜对游戏失败。

5.VB 课程设计 篇五

首先简单地阐述本人所要实现系统的目的,然后应较详细的叙述本系统所要实现的功能。

************ *******

二、概要设计

1、系统功能模块框图设计

根据功能描述,建立系统的体系结构,即将整个系统分解成若干子功能模块,并用框图表示各功能模块之间的衔接关系,并简要说明各模块的功能。

程序流程框图如图所示:(仅供参考)

图1 程序流程图

2、数据库设计

包括数据库的组成说明,数据库中各表的结构说明(包括字段名、字段类型等),可以包含图片例如下表:

表1 学生信息表

三、详细设计

详细说明主要窗体的实现过程,包括窗体的设计图片及其上所包含的控件名和属性设置;

详细说明主要操作的代码实现过程,包括过程间的调用关系(注:在此给出不完全代码)。如下所示:

1、账号登录

帐号登录模块中登录与注册两按钮,单击注册会进入注册模块中,单击登录会进入系统进行下一步的操作,帐号文本框与数据库相连接,当在帐号文本框输入帐号后点击登录按钮后,会在数据库中进行查询看数据库中是否会有该帐号,且该帐号的密码是否与密码框中输入的相同,如果相同会进入系统,如果不存在该账号或密码与帐号不相匹配,则会提示“帐号或密码错误”,帐号文本框会得到焦点,让重新输入。

(1)窗体截图(如图2)

图2 注册窗体

(2)功能实现

2、学生信息查询窗体

图3 查询窗体

四、调试中存在的问题及解决方法

包括调试过程中遇到的主要问题及采取的解决方法。例如:

1、注册账号出现的错误

数据库中帐号被设为主键,当注册时的帐号与数局库中的帐号有相同时就会出错。

2、解决方法:在写入数据库前先进行查询数据库

五、心得体会

本人在本次实习中取得的收获、遇到的困难、如何面对和克服各种困难、本系统的不足之处,将要改进的思想等。

六、参考文献

[1] 罗朝盛.Visual Basic 6.0程序设计教程(第3版).人民邮电出版社,2009年2月

[2] [3]

七、附录

6.vb+sql程序设计论文 篇六

map函数和reduce函数是交给用户实现的,这两个函数定义了任务本身。map函数:接受一个键值对(key-value pair),产生一组中间键值对。Map Reduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。reduce函数:接受一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。

本文描述了一个建立在Map Reduce之上的SQL查询引擎,设计了一个低达10秒级延迟,高效的系统,同时扩展性强。用户也可以通过SQL扩展比如用户自定义函数和对嵌入式关系型数据的本地化支持来访问底层平台。

1 整体架构

系统有四个主要组件:worker池,查询服务器,客户端接口,和元数据服务器。查询引擎的整体架构如图1所示:

分布式worker池:作为执行系统,它会选择一个查询执行计划,然后执行Map Reduce。为了降低查询延迟,我们不是每次都重新生成新进程,而是让进程一直处于运行状态。这帮助我们显著降低了查询的端到端延迟。该池由master和worker节点组成,再加上一个称为master watcher的守护进程。Worker会对定义在元数据层的所有表的数据进行操作。查询引擎是一个异构系统,后台存储可能是多种数据存储的混合,比如Column IO[5]、Bigtable[6]、GFS[7]、My SQL数据库等。

查询服务器:作为连接客户端和worker池的中间桥梁而存在。查询服务器会解析查询,进行优化,然后将执行计划发送给master执行。优化器会采用某些基本规则和基于开销的优化来创建一个最优的执行计划。

接口:包括一个命令行客户端(CLI)和一个网页用户界面(Web UI)。CLI提供了一些更强力的功能比如复杂脚本,通常由那些高级用户使用。Web UI具有一些易用性特性,比如查询和表的浏览,字符高亮,更适合于新手和中级用户。同时还提供一个可以直接在worker池上执行查询的应用程序编程接口(API),这样单独的二进制程序可以不通过服务端组件,就能够在Map Reduce jobs中启动查询。

元数据服务器:提供了一个用于存储和获取诸如表名和schema以及指向底层数据的指针的这样一些元数据的API。元数据服务器也会负责存储ACLs和其他的与表相关的安全信息。服务器使用Bigtable作为持久性的后台存储。

2 查询生命周期

一个典型的查询会经历如下步骤:

(1)用户(或者另一个进程)通过Web UI、CLI或API向查询服务器提交查询;

(2)查询服务器将查询解析为一个中间语法树;

(3)查询服务器从元数据服务器获取相应的元数据,然后创建一个更完整的中间形式;

(4)优化器扫描该中间形式进行各种优化;

(5)优化后的执行计划由一个或多个Map Reduce组成。对于每个Map Reduce,查询服务器通过master watcher找到一个可用的master,将该查询提交给它。在这个阶段,执行过程已经被物理地划分为多个工作单元;

(6)空闲的workers从masters那里拉取已就绪的任务。Reduce workers将它们的结果写入到一个中间存储区域中;

(7)查询服务器监控该存放结果的中间存储区域,当它们到达后进行收集。之后结果会被流式地返回给客户端。

3 SQL特性

SQL查询引擎为了能进行更高级的分析,在核心SQL之上提供了很多增强功能。这些增强功能设计,充分利用了底层的Map Reduce框架,可以完全地并行化。

3.1 DDL

查询引擎提供了大量的DDL操作支持,包括CREATE TABLE、ALTER TABLE、DROP TABLE、RE-NAME TABLE、GRANT和REVOKE。它们与标准SQL一致,同时是控制元数据和访问的主要方式。此外,它具有一个内建的元数据目录机制来简化数据的导入。

3.2 DML

查询引擎提供了基本的DML操作支持:INSERT,UPDATE和DELETE。这种支持是批处理模式的。

INSERT实现是通过创建新的数据集,然后将新数据添加到现有数据集上。它允许用户声明主键和外键,但是并不要求用户必须提供。对于UDATE和DELETE的支持,是通过将更新应用到数据集上然后产生一个新的数据集。然后用新数据集的一个引用替换掉元数据中的老的引用。

3.3 Joins

基于Map Reduce的Joins也已经被很多团队研究过了[8,9,10]。joins是查询引擎中最重要的部分之一,因此对不同类型的joins的实现和优化花费了大量时间。

我们引入了对嵌套循环,sort/merge和hash joins的支持。对于sort/merge和hash joins,并行度必须根据优化器限制显式说明。

(1)DISTRIBUTED SORT-MERGE JOINS

分布式的sort-merge joins是Map Reduce实现中最广泛使用的join方式。当进行join的两个表大小相等并且都不具有一个在join key上的索引时,这种方式通常是最有效的。

(2)DISTRIBUTED HASH JOINS

分布式hash joins通常是最有效的join方法,当:

(1)两个表都无法完全放入内存;

(2)其中一个表的大小要比另一个大一个数量级;

(3)都没有在join key上的索引。

考虑如下查询的执行:

查询引擎会按如下方式进行处理:

调度器可以智能地进行并行化以让hash join可以运行地更快。比如在该例子中,编译器会将MR3和MR1链接起来,同时将MR2标识为一个join的数据源,这就给后台调度器如下提示:

(1)MR1和MR2可以并行启动;

(2)MR3在MR2结束和MR1开始产生数据时就可以启动,而不用等待MR1结束。

我们也为Map Reduce框架添加了几个优化来提高分布式hash joins的性能,比如:避免排序,streaming,memory chaining和block shuffle。将在5.1节详细讨论。

3.4 集合操作

查询引擎支持所有的标准SQL集合操作,比如UNION,UNION ALL,ALL,MINUS和MINUS ALL。集合操作主要是在reduce阶段实现的,同时mapper会输出以整个记录为key的记录,以保证类似的key会落到同一个reduce调用中。对于UNION ALL我们进行了特殊处理,我们为它使用了round robin partitioning,同时关闭了reducer端的排序以获得更高的性能。

3.5 嵌套查询

查询引擎支持在任何可以是表名的地方放入一个SELECT查询,这与SQL标准是一致的。通常,每个嵌套的SQL会被转换成一个独立的Map Reduce,同时产生的临时表将会在外部查询中被使用。但是,编译器也能够对某些相对简单的嵌套查询进行优化,比如那些根本不需要创建额外的Map Reduce job的查询。比如,如下嵌套查询:

SELECT COUNT(*)FROM(SELECT DISTINCT emp_id FROM Employee);

将会产生两个Map Reduce任务,一个用于内部的DISTINCT,另一个用于外部的COUNT。但是,下面的这个查询:SELECT*FROM(SELECT DISTINCT emp_id FROM Employee);只会产生一个Map Reduce job。如果需要两个或更多的Map Reduces,查询引擎会将reducer和后续的那个mapper放到同一个进程中。

3.6 Aggregation

查询引擎支持所有标准的聚合函数,比如SUM,COUNT,MIN,MAX等。此外,还支持很多统计性的聚合函数,比如CORR,COVER,和STDDEV。同时使用了基于hash表的聚合进行优化。

基于hash表的聚合在RDBMS中很常见。但是,很难使用基本的Map Reduce进行高效地实现,因为reducer总是会对数据根据key进行不必要的排序。我们修改了Map Reduce框架来放松这个限制,使得具有相同key的所有value会落到同一个reducer片段内,但不一定是相同的Reduce()调用中。这就使得完全避免在reducer端的排序步骤以及在Map Reduce之上实现一个单纯的基于hash表的聚合成为可能。这对于某些特定类型的查询性能会有显著的影响。由于受优化器的限制,用户必须显式指明他们希望采用一个基于hash的聚合。如果没有足够的内存存放该hash表时,使用基于hash的聚合的用户查询会失败。

考虑如下查询:

下面是伪代码:

3.7 视图

查询引擎支持在数据之上的逻辑视图。视图主要用于安全性目的:可以让用户访问视图而不授权给他们访问底层表的权限,这样就可以做到行和列级别的安全性控制。

考虑一个具有emp_id,ldap_user,name,dept_id,和salary字段的Employee表。我们可以在它之上创建如下视图:

该视图允许用户可以看到其他雇员的部门信息,但是看不到其他雇员的薪水。

4 性能

查询引擎的一个关键设计目标就是要达到与传统MPP数据库系统比如Teradata、Netezza和Vertica相媲美的性能。为了实现这个目标,有很多工作需要去做。目前我们已经对Map Reduce框架进行了一些改进来提高吞吐率,降低延迟,来让SQL操作更加高效。面临的关键挑战之一就是需要将延迟从分钟级降到秒级。为了实现这个目标,必须要实现一个不需要为每个新的分析查询的二进制程序创建新进程的解决方案。一个典型的pool由三个进程组组成:

(1)master watcher。Watcher负责接受一个工作请求,然后将该任务分配给一个空闲的master。Watcher也会监控pool的整体健康状况,比如空闲资源,正在运行的查询数,等。通常一个pool的实例会对应一个watcher。

(2)master pool。它由相对较少的进程组成(通常是几十个)。Master的任务是协调某个查询的执行。Master会从watcher那里接受任务,然后监控它们的进度。需要注意,一旦一个master收到了一个任务,那么就由它来负责该任务,watcher进程挂掉了也不会影响该任务的执行。

(3)worker pool。它有一系列workers组成(通常有数千个),worker负责进行实际的数据处理。每个worker既可以作为mapper也可以作为一个reducer。每个worker会一直监控某个固定位置以获取新任务,随着新任务到达,通常会以FIFO的模式进行任务的选取。我们计划实现一个基于优先队列的,这样查询就可以根据优先级进行处理。

通过使用这种方法,查询引擎的执行延迟降低到了大概7秒。

5 结束语

本文中我们描述了一个建立在Map Reduce之上的SQL查询执行引擎。可以得出如下结论:

(1)基于Map Reduce框架构建一个具有完整功能的SQL引擎是可能的,同时还可以提供一些可以让SQL进行更深入的分析的扩展;

(2)通过对Map Reduce进行一些相对小的改进,是可以实现当前商业数据库系统中采用的大量优化的,同时可以创建一个可以与商业MPP DBMS在吞吐率和延迟上相媲美的系统;

(3)Map Reduce框架基于廉价的不可靠硬件,提供了高性能,高可靠性和高度可扩展性。这使得它成为一个构建在大规模数据集上进行复杂操作的分布式应用程序的出色平台;

(4)通过设计一个可以感知异构数据源的各种特性的引擎和优化器,使得创建一种可以充分利用底层数据源特点的智能系统成为可能。

参考文献

[1]覃雄派,王会举,杜小勇,等.大数据分析——RDBMS与Map Reduce的竞争与共生[J].软件学报.2012(1):32-45.

[2]谢桂兰,罗省贤.基于Hadoop Map Reduce模型的应用研究[J].微型机与应用.2010(8):4-7.

[3]李成华,张新访,金海,等.Map Reduce:新型的分布式并行计算编程模型[J].计算机工程与科学.2011(3):129-135.

[4]J.Dean,S.Ghemawat.Map Reduce:Simplied data processing on large clusters[C].Communications of the ACM.2008,51(1):107-113.

[5]S.Melnik,A.Gubarev,J.J.Long,G.Romer,et al.Dremel:Interactive Analysis of Web-Scale Datasets[C].In Proceedings of the VLDB Endowment,2010,3(1).

[6]F.Chang,J.Dean,S.Ghemawat,W.C.Hsieh,et al.Bigtable:A distributed storage system for structured data[J].ACM Transactions on Computer Systems(TOCS),2008,26(2):1-26.

[7]S.Ghemawat,H.Gobio,S.Leung.The Google file system[J].SIGOPS Oper.Syst.Rev.2003,37(5):29-43.

[8]F.N.Afrati,J.D.Ullman.Optimizing joins in a Map-Reduce environment[C].In Proceedings of the 13th International Conference on Extending Database Technology,ACM,2010:99-110.

[9]S.Blanas,J.M.Patel,V.Ercegovac,J.Rao,E.J.Shekita,et al.A comparison of join algorithms for log processing in Map Reduce[C].In Proceedings of the 2010 international conference on Management of data,ACM,2010:975-986.

上一篇:学校的毕业典礼演讲稿下一篇:废旧物资企业税收优惠政策