数据库大作业报告

合集下载

数据库大作业报告

数据库大作业报告

1 系统简介及需求分析物资管理是一般工业、商业企业生产经营管理环节中重要的一环,需要对物资基本信息进行管理,对物资调配信息进行完整的监控,以期更有效地利用物资。

物资入库的时候首先需要登记物资的基本信息,包括物资的种类、名称、型号、单位和单价等;然后登记入库信息,包括物资的基本信息、入库地点、入库人、经办人和物资数量等。

出库时,需要登记物资出库信息,包括物资基本信息、出库地点、出库人、经办人、出库数量等。

根据物资的入库出库过程的综合,得到各种物资的余额信息,这样就能对所剩物资有充分的了解,有利于工作的顺利进行。

因此,物资管理信息系统主要功能就是记录物资流通的整个过程。

2 系统设计与开发平台2.1 系统开发平台介绍在本次设计中,我采用SQL Server 2000 作为后台数据库,前台客户端的开发使用Visual C++ 6.0。

整个系统采用C/S结构。

2.2 系统功能分析系统开发的总体任务就是实现物资信息的系统化、规范化和自动化。

系统功能分析是在系统开发总体任务的基础上进行的,本例中物资信息管理系统需要完成的功能主要有以下几个方面。

·有关物资基本信息的输入,包括物资编号、物资名称、规格型号、种类和计量单位等。

·物资基本信息的查询。

·物资基本信息的修改。

·入库物资基本信息的输入。

·入库物资基本信息的查询。

·入库物资基本信息的修改。

·出库物资基本信息的输入。

·出库物资基本信息的查询。

·出库物资基本信息的修改。

·物资余额信息的查询。

·物资余额信息的浏览。

2.3 系统功能设计模块对上述功能进行集中、分块,按结构化程序设计的要求,进行分析,就得到了如下图所示的系统功能模块图。

3 关键技术介绍3.1 C/S结构C/S(Client/Server)结构即大家熟知的客户机和服务器结构。

它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。

数据库课程大作业报告

数据库课程大作业报告

数据库上机实验一上机题目及要求1、设计学籍管理系统2、具体要求:后台数据库设计一所大学的学籍管理数据库,推荐使用SQL Server,其它DBMS 亦可。

数据库的有关语义如下:每个学院可以若干专业,每个专业每年可以招若干班,每个班有若干学生,大二后每个专业可以分若干个方向;学院为专业制订教学计划,学生每年必须按照教学计划修完一定学分的课程(必修课、选修课),如大一上学期必修课22学分、选修课6学分,大三计算机专业软件方向必修课20学分、选修课6学分;教师可以给多个班带课,但是不能给一个班带多门课程;一门课程最多允许学生一次补考,学生达到如下条件之一的被开除:一学期不及格的必修课学分超过10个;不及格必修课学分累计超过30个;不及格选修课学分累计超过20个。

前台程序开发一个学籍管理系统来对数据库进行访问,可以使用PowerBuilder、VC、Java等集成开发环境。

系统实现功能如下:录入学生基本信息,如学号、姓名、性别、出生日期等(其它如课程、教师等信息可以在建库时输入);按学号、姓名查询学生基本信息;录入学生成绩;查询学生所选修的课程及成绩,并给出必修课平均成绩、所有课程平均成绩;查某一个学生被哪些教师教过课;查询快要被开除的学生(假定差2学分即被开除)。

二、实现思路:1、首先画出ER图,将各个表组织起来ER图如下(在纸上画出拍上来的图片)2、建立存储数据的各个表及定义如下:表:School表:Major表:MajorDirection表:Class表:Course表:Teacher表:讲课表表:student表:选课表表:User表:黑名单表:培养计划3、为方便前台执行时,方便查询和删改操作,建立学生表,选课表等表的视图。

三、程序实现思路:1、创建学生表视图,在视图中存储学生的详细信息,方便前台对某个学生的信息查询时使用。

2、创建将课表,实现对学生查询被那些老师教过的功能3、利用选课表存储学生的选课记录和成绩的分数,为学生求平均分等功能做铺垫4、创建黑名单表,所有挂科的学生所损失的学分存储在这里,对以后评判一个学生是否即将被开除等功能做准备5、前台通过java连接mysql数据库,绘制相应的表格和按钮,为按钮加上相应的事件监听,使功能得以实现。

数据库大作业实训报告

数据库大作业实训报告

一、实训背景随着信息技术的飞速发展,数据库技术在各行各业中扮演着越来越重要的角色。

为了提高学生的数据库应用能力,培养实际操作经验,本学期我们进行了数据库大作业实训。

本次实训旨在通过实际操作,让学生深入理解数据库的基本原理、设计方法和应用技术,提高学生的数据库应用能力。

二、实训内容1. 实训目标(1)掌握数据库的基本概念、原理和设计方法;(2)熟练运用SQL语言进行数据库操作;(3)学会使用数据库设计工具,如PowerDesigner、MySQL Workbench等;(4)具备独立设计和开发数据库应用系统的能力。

2. 实训内容(1)数据库设计:包括需求分析、概念结构设计、逻辑结构设计和物理结构设计;(2)数据库开发:包括创建数据库、创建表、插入数据、查询数据、更新数据、删除数据等;(3)数据库管理:包括数据库备份、恢复、用户权限管理等。

三、实训过程1. 需求分析本次实训以学生信息管理系统为例,分析并确定系统的功能需求。

主要包括以下模块:(1)学生信息管理:包括学生信息的录入、修改、删除、查询等;(2)课程信息管理:包括课程信息的录入、修改、删除、查询等;(3)成绩管理:包括学生成绩的录入、修改、删除、查询等;(4)教师信息管理:包括教师信息的录入、修改、删除、查询等。

2. 概念结构设计根据需求分析,设计学生信息管理系统的概念结构图。

主要包括以下实体:(1)学生:包括学号、姓名、性别、年龄、班级、联系方式等属性;(2)课程:包括课程编号、课程名称、学分、上课时间、上课地点等属性;(3)成绩:包括学号、课程编号、成绩等属性;(4)教师:包括教师编号、姓名、性别、职称、联系方式等属性。

3. 逻辑结构设计根据概念结构图,设计学生信息管理系统的逻辑结构图。

主要包括以下表:(1)学生表(Student):包含学号、姓名、性别、年龄、班级、联系方式等字段;(2)课程表(Course):包含课程编号、课程名称、学分、上课时间、上课地点等字段;(3)成绩表(Score):包含学号、课程编号、成绩等字段;(4)教师表(Teacher):包含教师编号、姓名、性别、职称、联系方式等字段。

数据库大作业报告

数据库大作业报告

JIJIANGSU UNIVERSITY OF TECHNOLOGY《数据库原理与应用》课程设计报告学院名称:计算机工程学院专业:信息管理与信息系统班级:姓名:学号:指导教师姓名:陈林凯2015年6月学生宿舍管理系统一、引言计算机的普及,以及对计算机的广泛应用,使得计算机的技术正以日新月异的方式不断地进步,其中数据库技术的地位无疑是极为重要的。

宿舍智能管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统。

它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。

能有效的帮助学校和老师掌握学生的情况,方便校方管理及学生的日常寝室生活。

为了实现提高高校宿舍管理部门的工作效率;充分利用资源;减少不必要的人力,物力和财力的支出;方便宿舍管理部门的工作人员全面地掌握学生住宿情况等目的;为宿舍管理部门,开发设计专用系统--高校学生宿舍信息管理系统来进行管理学生宿舍信息,使学生宿舍信息实现标准化的管理和规范化的制度是十分必要的。

专用系统是一个信息管理系统MIS(Management Information System)(以下就称信息管理系统),它将实现检索迅速和查找方便;信息的录入,修改和删除功能;以及对新入校学生进行宿舍安排等功能,学生可以在系统前台以寝室长和室员的身份进行查看和发布寝室的信息。

二、数据库设计2.1 数据库概念结构设计画出E-R图学生实体的E-R图班级(班级ID ,辅导员ID ,系部ID ,班级名称)宿舍楼(宿舍楼ID ,管理员ID ) 宿舍(宿舍ID 、宿舍楼ID )寝室管理员姓名联系方式出生日期管理员ID密码班级班级名称系部ID班级ID辅导员ID2.2 数据库逻辑结构设计列出关系模式学生(学号,班级ID,宿舍ID,姓名,性别,出生日期,入学日期,床位,密码) 寝室管理员(管理员ID,姓名,密码,出生日期,联系方式)辅导员(辅导员ID,姓名,性别,联系方式,学历,出生日期,密码)宿舍楼(宿舍楼ID,管理员ID)宿舍(宿舍ID、宿舍楼ID)报修(报修ID,宿舍ID,报修时间,报修内容,报修状态)班级(班级ID,辅导员ID,系部ID,班级名称)2.3 数据库表本系统使用SQL Server2000作为系统的数据库。

数据库实训大作业报告书

数据库实训大作业报告书

一、引言随着信息技术的飞速发展,数据库技术在各个领域中的应用越来越广泛。

为了提高我们的数据库应用能力,我们选择了本次数据库实训大作业。

通过本次实训,我们不仅巩固了数据库的基本理论,还提升了实际操作技能,为今后从事相关工作打下了坚实的基础。

二、实训背景与目标1. 实训背景数据库是存储、管理和处理数据的系统,是现代信息社会的核心组成部分。

随着数据量的不断增长,对数据库技术的要求也越来越高。

本次实训旨在通过实际操作,让我们深入了解数据库的基本原理、设计方法和应用技巧。

2. 实训目标(1)掌握数据库的基本概念和术语;(2)熟悉关系型数据库管理系统(RDBMS)的基本操作;(3)能够根据实际需求设计数据库;(4)具备一定的数据库应用开发能力。

三、实训内容与过程1. 实训内容本次实训内容主要包括以下几个方面:(1)数据库设计:包括需求分析、概念结构设计、逻辑结构设计和物理结构设计;(2)数据库实现:包括创建数据库、创建表、定义约束、插入数据、查询数据等;(3)数据库应用开发:包括编写SQL语句、使用存储过程、触发器等。

2. 实训过程(1)前期准备:了解数据库的基本概念和术语,掌握RDBMS的基本操作;(2)需求分析:明确项目需求,确定数据库的用途和功能;(3)概念结构设计:根据需求分析,绘制E-R图,确定实体、属性和关系;(4)逻辑结构设计:将E-R图转换为关系模型,确定表结构、字段类型和约束;(5)物理结构设计:选择合适的数据库管理系统,确定数据存储方式和索引策略;(6)数据库实现:根据设计,创建数据库、创建表、定义约束、插入数据、查询数据等;(7)数据库应用开发:编写SQL语句、使用存储过程、触发器等,实现数据库应用功能。

四、实训成果与总结1. 实训成果通过本次实训,我们成功完成了以下项目:(1)设计并实现了学生信息管理系统,包括学生基本信息、课程信息、成绩信息等;(2)设计并实现了图书管理系统,包括图书信息、借阅信息、罚款信息等;(3)设计并实现了订单管理系统,包括商品信息、订单信息、客户信息等。

数据库大作业总结

数据库大作业总结

数据库大作业总结在数据库大作业中,我学到了很多关于数据库设计和实现的知识和技巧。

这次大作业要求我们创建一个完整的数据库系统,包括数据库设计、表结构的创建、数据的插入和查询等。

首先,我学会了如何进行数据库设计。

在设计数据库时,我们需要考虑到数据库的目标和需求,确定数据库的主题和范围。

然后,我们需要分析数据库中的实体和关系,将其转化为实体关系模型(ER模型)。

在ER模型的基础上,我们可以继续进行表结构的设计,确定每个表的字段和数据类型。

在完成数据库设计之后,我学会了如何使用SQL语句创建表结构和插入数据。

SQL语句是数据库管理系统与用户之间进行交互的语言。

通过使用SQL语句,我们可以创建表格、定义字段以及插入数据。

我学会了创建主键和外键,以及如何利用索引来提高查询效率。

接下来,我学会了如何编写SQL查询语句。

通过使用SELECT语句,我们可以从数据库中检索所需的数据。

我学会了使用WHERE子句来过滤数据,使用ORDER BY子句来排序数据,以及使用JOIN语句来连接多个表。

这些查询语句可以帮助我们根据特定条件来获取所需的数据。

在数据库大作业中,我还学会了如何进行数据库的备份和恢复。

数据库的备份是为了防止数据丢失或损坏,可以通过创建数据库的镜像或者将数据导出为文件的方式来进行备份。

而数据库的恢复则是在数据库出现故障或数据丢失时,将备份的数据重新导入到数据库中。

总的来说,通过这次数据库大作业,我对数据库的设计和实现有了更深入的理解。

我学会了如何进行数据库设计,如何创建表结构和插入数据,以及如何编写SQL查询语句。

这些知识和技巧对于我未来的工作和学习都非常有帮助。

数据库大作业实验报告

数据库大作业实验报告

Oracle大作业设计报告题目:高校运动会分数统计系统****:***学号:22、20专业班级:计科14101同组姓名: 胡君阳****:***设计时间: 2016 年下学期指导老师意见:评定成绩: 签名: 日期:一.需求分析本文按照数据库系统设计的基本步骤,采取了事先进行需求分析,然后进行数据库的概念设计和逻辑结构设计,最后进行数据库详细设计的方法,完成了一个高校运动会分数统计系统的设计。

1.1、系统功能实现(1)运动员信息管理、运动项目管理、成绩统计等功能,包括运动员信息的添加、修改、删除及查询;(2)运动项目的添加、修改、删除及查询;(3)各项目分数查询等功能1.2、系统功能要求1) 概念结构设计:在需求分析和总体功能设计的基础上,设计 e-r 模型,详细描述实体的属性和实体之间的联系。

2) 逻辑结构设计:实现 e-r 图向关系模型的转换,详细列表显示完整的数据库表结构。

2、创建表空间3、在表空间中创建表在 sql*plus 环境中输入 pl/sql 代码,创建数据库中的各个表,至少包括运动员信息表、运动项目表、成绩表等 5张表(自行设计用到的表,注意表中字段的设置及类型);向表中插入数据,每张表至少插入 10条数据,数据要合理。

4、索引和完整性在表上建立相应索引。

实现列、行及参照完整性(必须建立主键、外键、检查约束等)。

5、数据查询和视图使用 select 语句实现运动员信息、项目信息、成绩信息等的查询(要求查询要和系统的功能联系起来,做单条件的查询、组合条件的查询、多表查询等,至少完成 10个查询)。

创建视图查询各个院系的总分。

6、存储过程和触发器的使用创建存储过程实现表中数据的修改和删除。

创建函数统计教工的参赛人数。

创建触发器实现如下功能:一个运动员至多参加四个项目。

7、用户、角色创建用户并授权,将其赋予某个角色成为其成员。

不同的用户授予不同的权限,管理员的权限最高,可以对各种信息进行修改删除等操作。

数据库实训作业报告

数据库实训作业报告

一、实训背景随着信息技术的飞速发展,数据库技术在各行各业中发挥着越来越重要的作用。

为了提高我的数据库应用能力,我在本学期参加了数据库原理及应用课程实训。

通过本次实训,我掌握了数据库的基本原理、设计方法、SQL语言以及数据库应用开发技术。

二、实训目标1. 掌握数据库的基本概念、数据模型和关系数据库模型;2. 学会数据库设计方法和规范;3. 熟练掌握SQL语言,包括数据查询、数据插入、数据更新和数据删除等;4. 熟练运用数据库设计工具,如E-R图、数据字典等;5. 学会数据库应用开发技术,如存储过程、触发器等。

三、实训内容1. 数据库基本概念和原理数据库是存储、管理和处理数据的系统。

数据库管理系统(DBMS)是数据库系统的核心,负责管理数据库的建立、使用和维护。

数据库中的数据以表的形式存储,表由行和列组成,行代表数据记录,列代表数据字段。

2. 数据库设计方法数据库设计是数据库应用开发的重要环节。

数据库设计方法主要包括以下几种:(1)E-R图法:通过实体-联系(E-R)图描述数据库中实体及其之间的关系。

(2)数据字典法:对数据库中的实体、属性和关系进行详细描述,形成数据字典。

(3)规范设计法:根据数据库规范化理论,对数据库进行规范化设计,提高数据冗余度和数据依赖度。

3. SQL语言SQL(Structured Query Language)是一种用于数据库查询、更新、删除和插入的编程语言。

以下是SQL语言的基本操作:(1)数据查询:SELECT语句用于从数据库中查询数据。

(2)数据插入:INSERT语句用于向数据库中插入新数据。

(3)数据更新:UPDATE语句用于修改数据库中的数据。

(4)数据删除:DELETE语句用于从数据库中删除数据。

4. 数据库应用开发技术数据库应用开发技术主要包括以下几种:(1)存储过程:存储过程是一组为了完成特定功能的SQL语句集合,存储在数据库中,可以重复调用。

(2)触发器:触发器是一种特殊的存储过程,在特定事件(如数据插入、更新或删除)发生时自动执行。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

23
实验与分析
实验I join基本操作。验证3种join操作的正确性,考察3种join操作的效率,考察 数据的不同分布情况对join结果的影响 实验II 多表join操作。考察3种多表join优化策略的正确性,考察不同的优化策略 对join效率的影响,考察数据的不同分布情况对join结果的影响
24
5
普通连接(normal join)
Map端唯一的工作是给数据打标记 Reduce端进行join操作(又称为reduce端的连接) 缺点:网络传输量大,没有任何优化,效率低下 优点:可以认为没有内存限制(如果这种join方法因为内存不足而无法执 行,那么其他join方法自然也不行)
6
复制连接(copy join)
使用hadoop的distributedcache,在连接开始之前将较小的表发送至每一 个map端 Map端可以完成join过程(又称为map端连接) Reduce端的唯一工作是去重 缺点:内存限制高,要求小表能放进内存buffer 优点:map端连接,极大减少网络传输量,效率最高
7
半连接(semi join)
借用半连接的思想实现等值连接 使用hadoop的distributedcache,在连接开始之前将小表的key发送给每个 mapper(实际中压缩为bloom filter) Map端利用bloom filter过滤掉不可能出现在结果中的数据,极大减少了网 络传输量 Reduce端执行join操作并去重
data (数据结构)Βιβλιοθήκη driver (启动入口)
utils (测试工具)
mapper
engine (优化引擎)
reducer
model (代价模型)
CostModel
17
测试和分析
在测试和分析之前,首先对测试数据进行一些简要说明 为了方便讨论,这里先给出有关测试数据的3个概念: 1. 重合度(coincide) 2. 核心长度(core size) 3. 重复度(duplicate)
14
代价模型
当任意join任务的join方法被确定后,可以使用搜索、贪心、动态规划等 技术确定多表连接的调度方案 我们实现了3种调度引擎: 1. Naï ve,从左到右顺序连接,即没有任何优化的调度方案,可作为 benchmark。空间复杂度为O(1) 2. Greedy,类似huffman编码的思想,每次挑选代价最小的表做join。空 间复杂度为O(n) 3. DP,用动态规划方法找出最优的调度方案。空间复杂度为O(n^3)
2
假设和前提I
假设在连接时参与连接的列只可能是表的最左列或最右列。例如:
R
S
T
假设R、S、T三个表做连接,参与连接的列只可能是带颜色的那些列
在这个假设下,多表连接时不需要关注除了表两侧的那些列,不需要对 连接查询语句进行语义分析 在这个假设下,多表连接的顺序不能随意调换,简化了连接优化过程
3
假设和前提II
缺点:预处理过程多,启动延迟大 优点:利用bloom filter过滤数据,极大减少了网络传输量,效率较高
8
数据采样
在连接前先对数据随机采样,获取统计信息,使代价模型能够更加精确 地估计出连接代价 数据采样百分比可以在配置文件中按需设定 采样信息包括:
Size numBlock numTuple sizeBlock sizeTuple distinctKeyLeft distinctKeyRight 表的大小(byte) 表包含的block数 表包含的tuple数 一个block的大小(byte) 一个tuple的大小(byte) 最左列的distinct value数 最右列的distinct value数
2. 在各表中填充不参 与join的其他数据,使 得重合度和重复度符 合要求
22
表的重合度(coincide)、核心长度(core size)和重复度(duplicate)这三 个参数大体上反映了真实环境中的数据特征,而且直接影响到join操作的效率 和join的结果表的大小
通常情况下,核心长度这个参数反映了join结果表的大小,而重合度越高,说 明表的“干货”比例越高,“水分”越少,如果重复度大于1,则join操作会 使表的体积呈指数级膨胀 例如: 如果指定表R的core size=1KB,coincide=20,则产生出来的表R的实际大小为 1/0.2=5KB 如果指定表S的core size=1KB,coincide=50,则产生出来的表S的实际大小为 1/0.5=2KB 如果表R的重复度=3,表S的重复度=1,则R和S做join之后的结果表的大小约等 于3*1*(5+2)=21KB 可见带重复key的表之间的join操作会使join结果迅速增大,对于10个1MB的小 表,即使他们各自的重复度只有2,join的结果也将达到2^10*10=10000MB (10GB)的规模
outputsize(KB) time(s) outputsize(KB) time(s) outputsize(KB) time(s) 26
注:copyjoin有一项为null是因为输入太大,无法使用copyjoin方法
实验II:多表连接优化
Join方法:普通连接,复制链接,半连接 优化策略:Naï ve、Greedy、DP 测试数据:多个表 考察数据:操作时间,结果表的大小 注意:灰色格子代表变化的参数,绿色格子代表实验结果
可以看出,三种优化策略的outputsize都相同,因此相互验证了三种优化 策略的正确性 此外,Greedy策略比Naï ve策略在效率上有一定提升(红色方框) DP策略在10个表做连接的时候没有结果,是因为实际测试的时候/tmp目 录写满了(大约4GB),无法继续执行。但为什么/tmp目录会爆掉,这 个目前还不是很清楚
9
10
代价模型
在hadoop任务串行化执行的假设下,任意时刻最多有一个join任务在执行, 可以认为这个join任务独占了系统资源。因此在硬件资源许可的情况下应 该尽量选择效率高的join方法 • 复制连接要求小表要能放进内存buffer • 半连接要求bloom filter要能放进内存buffer(通常情况下都能满足) • 基本连接对内存大小没有要求
18
重合度(coincide)
R
S
19
核心长度(core size)
R
20
重复度(duplicate)
R
21
产生测试数据恰好是join的逆过程,首先产生join结果,然后将其拆分 可以看出,这种方法产生的表的核心长度(core size)都相同 1. 产生join的结果表, 即核心长度(core size)
效率:复制连接>半连接>基本连接 下面对3种join方法的代价进行简单分析,假设R表和S表做连接得到T表
11
普通连接的代价估计
12
复制连接的代价估计
假设有n个mapper,且S表很小
13
半连接的代价估计
Semijoin分为2个mapreduce任务 假设由S表产生bloom filter,且忽略bloom filter的代价
copyjoin 6200 5 6200 4 6200 3
copyjoin 6.3 2 6200 2 null null copyjoin 1600 2 6200 2 14000 2
semijoin 6200 9 6200 4 6200 4
semijoin 6.3 4 6200 5 623900 97 semijoin 1600 3 6200 5 14000 6
coincide(%)
10 50 100 coincide(%) coresize(KB) 1 50 1000 100000 coincide(%) coresize(KB) duplicate 1 2 duplicate 1000 2
coresize(KB)
duplicate
inputsize(MB)
实验I:三种连接方法
Join方法:普通连接,复制链接,半连接 测试数据:重合度、核心长度、重复度各取3种不同值 考察数据:操作时间,结果表的大小 注意:灰色格子代表变化的参数,绿色格子代表实验结果
25
可以看出: 1. 不管测试数据如何变化,3种join方法得到的outputsize相同,相互验证了 三种join方法是正确的(红色方框) 2. 从time可以看出,3种join方法的效率大致为:复制连接>普通连接>半连接。 这主要是因为在伪分布式环境下,semijoin可以“极大减少网络传输量” 的优势无法体现,而且多一次次mapreduce过程,增加了额外时间开销
实际测试结果为:
table 10 duplicate 1~3 coincide 10~90 coresize(KB) 1000 naive greedy dp 1200000 1200000 1200000 118 55 67 outputsize(KB) time(s)
可以看出,三种策略在任务执行效率上有比较大的不同(红色方框)。需要 注意的是动态规划的方案反而不如贪心的方案!经过分析,我认为原因主要 有2点: 1. 贪心法和动态规划法在实现上不同。贪心法可以一边执行一遍构造执行 树,估计的部分较少;而动态规划方法需要在任务开始之前就构造出整 个执行树,估计的步骤太多,所以导致动态规划的误差较大。 2. 代价模型实际情况有一定误差。伪分布式环境、多种假设和简化等等导 致代价模型比较粗糙
27
第一次测试,5个表连接和10个表连接做对比,结果如下:
table 5 2 10 50 4200 duplicate coincide inputsize(KB) naive greedy 10700 100700 17 17 5800000 5800000 406 166 dp 10700 14 null null outputsize(KB) time(s) outputsize(KB) time(s)
相关文档
最新文档