• 1012.50 KB
  • 2022-04-22 13:45:07 发布

实验室资源协作共享管理系统毕业论文.doc

  • 34页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'实验室资源协作共享管理系统毕业论文目  录  1 引言1  1.1 课题背景1  1.2 项目开发的目的和意义1  1.3 设计的目标1  1.4 研究现状及存在问题2  1.5 项目工作流程2  2 系统分析3  2.1 系统需求分析3  2.1.1 功能需求分析3  2.1.2 数据需求分析3  2.2 系统可行性分析4  2.3 运行环境5  3 系统总体设计6  3.1 系统用例图6  3.2 数据库的设计6  3.2.1 数据库概念结构设计6  3.2.2 数据库逻辑结构设计9  3.2.3 数据库表的设计10  3.3 系统总体描述12  3.4 功能模块图12  3.4.1 登录模块设计13  3.4.2 用户注册模块设计13  3.4.3 信息发布与查询模块设计14  3.4.4 预约模块设计14  3.4.5 预约处理模块设计14  3.4.6 用户管理模块设计15  3.4.7 后台管理模块设计15  4 详细设计与系统实现16  4.1 开发工具选择16  4.2 系统详细设计与实现17  4.2.1 用户登录功能17  4.2.2 用户注册功能17  4.2.3 信息发布和查询功能18   4.2.4 实验室资源预约功能18  4.2.5 预约处理功能19  5 软件测试与分析20  5.1 系统测试20  5.2 系统运行情况20  5.3 系统评价20  6 总  结21  参考文献22  致  谢23  附  录24 1  引言1.1 课题背景全国许多高校都拥有数量不等的实验室,其实验设备和实验室环境无论从层次上还是质量上也不尽相同,为了实现跨高校、跨地区、跨领域的实验室资源协作共享[1],利用现在发达的网络资源,建设实验室资源协作共享管理系统是必需的。实验室资源协作共享管理系统采用php程序设计语言的程序设计与数据库相结合的手段进行开发,其特点是结构紧凑、运行速度快、操作简单。此项目主要包含了登录模块、用户管理模块、信息登记和查询模块、预约和授权使用模块、财务管理模块等。实验室资源高效的管理,不仅能从一定程度上满足科研人员的需要,也充分实现了实验室的经济效益和利用率。1.2 项目开发的目的和意义目的:(1)熟悉和掌握B/S模式和框架,了解其优势。(2)熟悉PHP程序设计语言。(3)学会网页制作工具的运用。(4)进一步熟悉MySQL的数据库的功能。(5)培养团队合作的精神。意义:如何高效合理的运用实验室是一项繁琐和细心的工作。人力操作不仅效率低,而且还容易出错。本系统的实现不仅能让实验室资源得到充分共享,还能对实验室开放带来的繁琐工作进行高效的管理,另外也可以减少各高校重复购置相同资源的问题。1.3 设计的目标本系统以实现实验室资源共享为指导思想。系统将采用结构化系统开发方法,前台采用HTML实现,后台数据库采用MySQL。本系统的设计目标是通过查询、分析、编程、调试等过程来实现基于Windows系统的实验室资源协作共享管理系统的设计,为全国各高校和企事业单位提供优质服务,提高投资效益和资源的利用率[2]。本系统包括登录模块、用户管理模块、信息发布和查询模块、预约和授权使用模块、财务管理模块。系统的功能如下:(1)实验室资源协作共享管理系统在Internet上实现,能够在Internet上的任何终端上进行实验室设备的申请和授权工作;(2)系统具有权限管理功能,权限由低到高依次为:普通浏览者、申请人(需注册和审核)、实验室管理人员、系统管理员;(3)系统能够方便的输入、编辑和浏览实验室设备的基础参数,比如仪器设备的名称、性能参数、应用范围、收费标准,联系方式、联系人、存放地点、设备状态(正常、预约、维护)、开放时间等参数;(4)系统有成果使用购买、信息查询、预约、统计和财务支付等功能;32 1.4 研究现状及存在问题国外的实验室资源共享机制,所有的大型仪器设备一般均实行开放管理,贵重仪器设备的技术指标、使用运行情况大部分都上学校网,有的与互联网连接,可通过电子邮件和WEB方式进行预约使用,仪器从使用、管理、维修等各项开放措施都十分到位和有经费保障。进入十二五以来,我国对教育和科研的创新发展日益重视,不断推出支持政策、加大投入力度。信息化建设正处于资源共建共享的阶段,许多的共建共享平台被建立了起来[3]。这其中仍然存在着一些问题,例如,实验室得不到充分共享,各高校之间设备没有得到充分利用;设备使用率不均,特别是大型仪器,造成重复购置和资源浪费;实验室资源数据和科学研究成果得不到及时共享,一定程度上造成实验数据和成果的重复开发,对已有资源及平台的利用不充分,共建共享平台难以推广,建设的资源难以满足实际需要等,这些问题一定程度上制约了我国教育信息化的进一步发展。要解决这些问题就必须要有一个合理的教育资源的共享机制。另一方面,大型仪器共享管理系统和一部分高校已经建立起来实验室设备共享系统,积极共享资源,资源共享平台以其自由、开放、共享的精神得到了越来越多的研究者的关注。目前,由于没有健全完善的管理和运行机制,无法实现优质资源的持续性共享,资源不均衡现象依然严重。归根结底是因为实验室资源开放管理不够自动化、多元化、现代化。1.5 项目工作流程一个项目的开发流程分为:系统分析阶段、系统设计阶段和系统实施阶段,具体如图1-1所示:系统分析阶段系统设计阶段系统实施阶段需求分析功能分析系统的测试与维护输入/输出设计系统流程设计代码设计数据库设计系统建模项目流程描述可行性分析图1-1总体流程图32 2  系统分析2.1 系统需求分析系统需求分析主要就是明确实验室资源协作共享管理系统所要实现的目标,并给出解决方案[4]。对系统的需求分析可以从功能需求和数据需求两方面来进行。功能需求分析主要是对系统所要实现的目的进行分解,使之形成既相互独立又相互联系的几个部分,然后将每个部分映射为一个或多个功能,这些功能相互之间形成一个有机的整体。数据需求分析就是对系统中涉及的数据进行识别,并描述出它们在系统中的关系和流向。2.1.1 功能需求分析实验室资源协作共享系统是针对用户要求利用计算机对各种信息进行统计管理(记录、修改、添加、删除),能够使用户分享自己的实验室,亦可租用或购买别人的实验室资源,以达到实验室资源的充分利用和分享,达到其最大效益。通过需求分析本系统需要具有以下功能:1. 实验室协作入网:用户登录后可以根据自己的实际情况登记、修改或删除实验室的信息,设定计费规则。2. 信息共享:包括实验室设备、实验室成果、实验室资源和一些有价值的信息以有偿方式进行共享。3. 信息查询:用户在自己的权限范围内可以根据需求查询自己需要的信息。4. 在线预约:用户根据需求查找到合适的实验室资源后可以进行时间上的预约。5. 授权使用:实验室管理员根据具体情况可以做出授权。6. 数据传输:用户可以对自己想要的资料进行有偿下载,对自己认为的有价值的信息也可以进行上传。7. 计费结算:不同的实验室资源有不同的计费方式,这需要实验室管理员和领导决定,每个用户使用完实验室资源时都要根据实验室管理员设定的计费规则进行结算。2.1.2 数据需求分析实验室资源协作共享管理系统所涉及的主要数据包括实验室资源共享记录、实验室资源预约记录、实验室资源授权记录、财务记录和用户记录,下面分别分析这些数据需求。1.实验室资源记录实验室资源记录是管理系统中建立的实验室基本信息,主要包括实验室的所属单位、所属类别、设备状态、地理位置和计费标准。实验室基本信息供实验室资源预约、实验室资源授权和实验室资源整合管理使用,即整个实验室资源协作共享管理系统的数据是以实验室记录为基础的。2.实验室资源预约记录32 实验室资源预约记录是在进行对实验室的预约情况做登记,以便合理安排实验室时间,是实验室能够充分的到利用,需要记录是用户信息,被预约的实验室信息,预约时间以及使用日期。3.实验室资源授权记录授权记录是对实验室资源预约的同意授权给预约用户使用,需要记录授权时间,被授权实验室资源名称,同意使用时间,结账时间以及计费标准。4.财务记录财务记录是对实验室计费结账的统计,需要记录实验室资源名称,计费标准,使用次数,实验室授权使用起始时间,结账结果。5.用户记录用户记录是用户管理中建立的用户基本信息,主要包括用户的类别,权限管理,预约和授权记录等。系统数据流图如图2-1所示:图2-1  系统数据流图2.2 系统可行性分析1.技术可行性分析目前,计算机网络编程语言、数据库技术、计算机通信技术和数据存储、安全、保密等IT技术可以完全满足上述任务的要求,系统开发人员能熟练地使用上述工具进行系统的开发。因此,本系统在技术上是可行的。32 2.经济可行性分析学校各个管理部门和学院的办公室都配备了高性能的计算机或服务器,无需另行购置设备。系统实现后,能够极大的实现资源共享,提高设备的利用率和效益。因此,本系统在经济上是可行的。3.操作可行性分析实验室资源协作共享系统易于操作,只要有使用计算机经验的人都可快捷,有效的管理实验室资源,节省了人力,物力的同时达到了资源共享的目的。2.3 运行环境1. 硬件环境  内存:2G;CPU:Intel i3;硬盘:320G2. 操作系统  MicrosoftWindows7Professional3. 软件环境  数据库:MySQL数据库。开发环境:WAMP、Dreamweaver32 3  系统总体设计3.1 系统用例图用例图定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现。外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。具体如图3-1所示:图3-1  系统用例图3.2 数据库的设计3.2.1 数据库概念结构设计数据库概念结构设计是指在数据分析的基础之上,自底向上的建立整个系统的数据库概念结构,即先从用户的角度进行设计,然后将视图集成,最后对集成后的结构分析优化得到最终结果[5]。E-R模型是用于概念结构设计的有力工具。针对一般实验室资源协作共享管理系统的需求,通过对实验室调配工作过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:n实验室资源信息,包括的数据项有实验室信息、设备信息、实验室材料信息;n实验室信息,包括的数据项有名称、类别、应用范围、存放地点、所属单位、联系人、详细包含器材、开放和关闭时间、实验室状态、计费标准、备注;n设备信息,包括的数据项有名称、类别、性能参数、应用范围、存放地点、所属单位、联系人、开放和关闭时间、设备状态、计费标准、备注;32 n实验室材料信息,包括的数据项有名称、所属单位、完成时间、内容概述、收费标准、分享次数、备注;n财务信息,包括的数据项有名称、计费标准、使用开始时间、结账日期、结账金额、备注;n管理用户信息,包括的数据项有用户名、用户类别(系统管理员、实验室管理员、普通用户)、密码、权限、备注;实验室资源信息实体图如图3-2所示:实验室资源实体实验室材料信息实验室信息设备信息图3-2  实验室资源实体图实验室信息实体图如图3-3所示:类别计费标准名称地理位置包含的实验室器材实验室信息实体开放时间实验室状态所属单位图3-3  实验室信息实体图设备信息实体图如图3-4所示:名称类别所属单位地理位置设备信息实体计费标准开放时间设备状态图3-4  设备信息实体图32 实验室材料信息实体图如3-5所示:名称所属单位分享次数完成时间实验室材料信息实体内容概述计费标准图3-5  实验室材料实体图财务信息实体图如图3-6所示:计费标准使用单位名称使用开始时间财务信息实体结账金额结账日期图3-6  财务信息实体图系统用户信息实体图如图3-7所示:用户名用户身份用户实体工作单位真实姓名手机号邮箱账号银行卡账号图3-7  用户信息实体图32 数据库实体E-R图如图3-8所示:图3-8  数据库E-R图3.2.2 数据库逻辑结构设计逻辑设计的任务是根据DBMS的特征把概念结构转换为相应的逻辑结构。概念结构设计所得到E-R模型,是独立于DBMS的,这里的转换就是把表示概念结构的E-R图转换为层次模型或网状模型或关系模型的逻辑结构[5]。现在需要将上面的数据库概念结构转化为MySQL数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。如图3-9所示:图3-9  实体之间关系模型图32 3.2.3 数据库表的设计实验室分类表,用于存储实验室及设备的类别,便于实验室与设备的管理,如表3-1所示:表3-1  class(类别)字段名称数据类型说明classIdInt(11)主键累加classNameVarchar(20)类别名称contentVarchar(20)摘要共享记录表,用于存放登记的共享信息。如表3-2所示:表3-2  share(共享记录)字段名称Int(11)说明shareIdInt(11)主键累加userIdInt(11)预约者IdshareIdInt(11)共享单位IdshareThingInt(11)共享资源Iduse_priceFloat计费标准use_numInt(11)使用设备数量user_amountFloat支付金额startTimedatetime开始时间endTimedatetime结帐日期ContentVarchar(20)摘要实验室信息表,用于存放实验室信息,用于后台管理员的操作和前台用户的浏览,如表3-3所示:表3-3  laboratoryInfo(实验室信息)字段名称数据类型说明labIdInt(11)主键累加labClassInt(11)类别labAddressVarchar(20)地理位置labdepartmentVarchar(20)所属单位labNowbool现在状态labOpenTimeVarchar(20)开放时间labUnitVarchar(20)计量单位labPriceFloat单价labapparatusVarchar(20)实验室设备labPicVarchar(20)实验室照片32 实验室共享单位表,用于存放实验室共享的单位的基本信息,便于预定者查看此单位信息,如表3-4所示:表3-4  LabDepartment(实验室共享单位)字段名称数据类型说明IDInt(11)主键累加Supplier_nameVarchar(20)预约实验名称Contact_personVarchar(20)联系人TitleVarchar(20)职称AdrVarchar(20)地址ProvInt(11)省份CityInt(11)城市TelVarchar(20)电话号码FacsimileVarchar(20)传真号码ConditionVarchar(20)付款条件EmailVarchar(20)电子邮件Contendtext摘要实验室设备表,用于存放实验室设备信息,便于后台管理与前台查看,如图3-5所示:表3-5  apparatus(实验室设备)字段名称数据类型说明appIdInt(11)主键累加appNameVarchar(20)设备名称appClassInt(11)设备类别appDepartmentInt(11)设备所属单位appNowbool设备状态appPriceFloat计费标准appUnitVarchar(20)计价单位实验室设备表,用于存放用户基本信息,便于后台管理与前台会员的登录等,如图3-6所示:表3-6  Userinfo(用户信息表)字段名称数据类型说明userIdInt(11)主键累加userNameVarchar(20)用户名userPwdVarchar(20)密码userFullnameVarchar(20)全名userLoginsInt(11)登录次数userLastlogindatetime上次登录时间32 userLasripVarchar(20)上次登录IPuserDepNameVarchar(20)部门userPorwerInt(2)权限3.3 系统总体描述实验室资源协作共享管理系统主要由登录模块、注册模块、信息发布和查询模块、客户预约模块、预约处理模块、后台管理模块、结账模块组成。1. 登录模块:通过输入用户名和密码验证登录用户的合法性,用户名与密码匹配则可以顺利登录系统进行操作,如果用户名和密码不匹配则不能登录。2. 注册模块:通过输入用户名、密码和再一次重复密码进行注册,如果两次密码是一致的则可以注册成功,否则注册失败。3. 用户管理模块:实现新用户的注册和删除不使用的用户,以确保用户的动态平衡,以及用户密码的更改以便维护用户信息的安全性。不同的用户有不同的权限。4. 信息发布与查询模块:用户登录后,可以发布实验室资源信息,增加、删除自己发布的信息,对已发布信息参数进行修改,还可以查询想要的信息。5. 预约模块:用户可以填写预约单,等待预约审核,删除和管理预约信息。6. 预约处理模块:实验室管理员接收到预约信息后,对预约信息进行审核授权。7. 后台管理模块:内容的更改,用户信息的审核与管理,发布信息和账单审核。8. 结账模块:当用户每次预约成功后,将消费的项目添加到数据库中,在用户结账时通过对数据库的查询,检索出本次对实验室资源使用的详细信息,计算出总额。3.4 功能模块图图3-10  功能总体设计图32 3.4.1 登录模块设计登录界面应该有用户名和密码,按钮应该有确定、注册和取消,老用户可以直接登录,新用户需要注册才可以登录,登录流程图如图3-11所示。图3-11  登录流程图3.4.2 用户注册模块设计对于新用户,系统给予新用户一个合法的身份,为了确保用户不会因为操作失误导致密码不正确,本系统采取了密码确认制度,只有两次密码一致才能注册成功。如图3-12所示。图3-12  注册流程图32 3.4.3 信息发布与查询模块设计信息发布与查询信息发布与查询是实验室资源协作共享管理系统软件非常重要的功能之一,模块设计如图3-13所示。资源参数修改统计使用次数查询实验室资源删除实验室信息增加实验室信息图3-13  信息发布与查询模块3.4.4 预约模块设计收入记录管理是家庭理财系统软件非常重要的功能之一,收入记录管理包括增加收入记录、修改收入记录、删除收入记录、查看现有收入记录等,如图3-14所示。预约模块实验室资源搜索预约系统简介实验室资源列表图3-14  预约模块框架图3.4.5 预约处理模块设计预约信息都保存在数据库中,每个实验室管理员都能看到自己实验室被预约的清单,并能对预约进行授权和管理。如图3-15所示。预约处理状态维护预约处理办理手续删除过期预约单图3-15  预约处理框架图32 3.4.6 用户管理模块设计对于管理员权限的用户来说,它可以管理所有的用户信息,包括增加用户、删除用户、修改用户密码等,如图3-16所示。用户管理增加删除用户用户审核修改用户密码用户资料修改图3-16  用户管理设计框架图3.4.7 后台管理模块设计后台管理是管理员对整个实验室资源共享平台的管理,包括对实验室资源信息的管理、发布信息的审核、系统维护等,如图3-17所示。后台管理系统维护数据统计发布信息审核账单审核实验室资源管理图3-17  后台管理设计框架图32 4  详细设计与系统实现4.1 开发工具选择(1)PHP,一个嵌套的缩写名称,是英文超级文本预处理语言的英文缩写。PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。它可以比CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,成分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统[7]。(2)MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.对于MySQL的前途,没有任何人抱乐观的态度。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库[8]。MySQL数据库的特性[9]:1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。2.支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统。3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等。4.支持多线程,充分利用CPU资源。5.优化的SQL查询算法,有效地提高查询速度。6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径。8.提供用于管理、检查、优化数据库操作的管理工具。9.可以处理拥有上千万条记录的大型数据库。(3)Apache:ApacheHTTPServer(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一[10]。32 4.2 系统详细设计与实现4.2.1 用户登录功能这个窗体主要用来实现用户的登录。用户需要用户名和密码,并通过单击单选按钮来选择相应的用户身份。当单击“提交”按钮后,系统将根据用户名、密码和用户身份等信息进行身份验证,如果在数据表中找到相应表项时,系统将允许用户登录。当登陆信息不符合时,系统将拒绝用户登录。登录界面如图4-1所示:图4-1  用户登录界面4.2.2 用户注册功能用户注册主要检测两次输入的密码是否一致,用户名是否存在,可否分配一个合法的身份给该注册用户,以及该用户的权限。具体如图4-2所示:图4-2  用户注册界面32 4.2.3 信息发布和查询功能管理员用户登录后,可根据实际情况填写实验室资源的详细信息,点击发布,实验室资源信息存入数据库,其他用户登陆后即可查询信息发布的信息,实验室管理员可以查询、修改、删除实验室资源信息。具体实现如图4-3所示:图4-3  信息发布界面设备信息查询具体实现如图4-4所示:图4-4  设备信息查询界面预约或授权信息查询具体实现如图4-5所示:图4-5  预约或授权信息查询界面公告通知查询具体实现如图4-6所示:图4-6  公告信息查询界面4.2.4 实验室资源预约功能用户登录系统后,查找到自己所需要的信息后,只要实验室资源是空闲状态即可进行预约操作,点击我要预约按钮,输入需要填写的信息,完成预约操作,等待预约处理及通知。具体实现如图4-7所示:32 图4-7  资源预约界面4.2.5 预约处理功能实验室管理员对于预约信息进行审核,通过的审核的同意授权,否则发布不同意授权信息。具体实现如图4-8所示:图4-8  授权界面32 5  软件测试与分析5.1 系统测试什么是软件测试?简单的说,软件测试就是为了发现错误而执行的程序的过程。软件测试是一个找错的过程,测试只能找出程序中得错误,而不能证明程序是无错的。软件测试要求用比较少的用力、时间和人力找出软件中潜在的错误与缺陷。系统用了2种测试方法:黑盒测试和白盒测试。白盒测试是一种被广泛使用的逻辑测试技术。白盒测试的对象基本上是源程序,是以程序内部逻辑为基础的一种测试技术。黑盒测试也称为数据驱动测试,在测试时,把程序看做一个不能打开的黑盒,在完全不考虑程序内部结构和特性的情况下进行测试。黑盒测试的主要是通过输入数据、进行操作、观察输出来实现的[4]。本系统主要是采用黑盒测试。5.2 系统运行情况通过对系统的全面测试,所有测试条目都已经通过,实现了基本要求,系统可以正常运行。5.3 系统评价系统评价是指系统在正式运行了一段时间之后,对它在功能上、技术上和经济上所进行的审核评价。(1)系统功能评价根据本系统开发前所订的目标,在系统完成后经过测试运行,该系统达到了预定的开发目标,在实际使用中的功能可以满足用户需求。(2)系统技术评价本系统设计合理,功能达到了预期目标,且系统运行后稳定可靠,安全性高,具有实用性。(3)系统经济评价在规定时间内,该系统完成了系统分析时所确定的系统开发目标,达到了设计要求,投入使用后为用户节省了大量人力、物力、财力,提高了科学管理水平。32 6  总  结这次毕业设计实现了一个实验室资源协作共享管理系统。通过这个设计我深刻的知道了按照系统规划、系统分析、系统设计、系统实施、系统运行的开发规范来开发的重要性。实践出真知,这次设计不仅让我对共享管理系统的分析与设计有了一定程度上的认识,而且是对我这四年所学知识的巩固和整合,也让我学到了许多以前不会的新知识,同时锻炼了我独立思考、认真缜密和动手能力。我的心得有以下几点:首先,设计一个系统它是面向用户的,只有简单易操做的系统才具有实用性。其次,只有在开发前明确开发目标,才能减少时间和精力的浪费。再次,设计一个系统不能急于求成,需要在开发和日后的使用中一点点去完善。最后,设计与测试并行,可以很好的在有效地时间里实现模块的功能。本人测试了本系统,并对不足之处做了修改,系统虽然能正常运行,但跟成熟的产品相比还存在很多不足,在以后的生活中随着我学的知识的不断增加,我会不断完善和提高。32 参考文献[1]  田淑娟,刘荣,许红娟等.大型仪器设备共享及预约系统设计与实现[J].电子设计工程,2011年11期:103~105[2]  陈伶.网上服务预约模块的设计与实现[J].计算机与数字工程,2010年01期:201~204[3]  李健生,伍天媛,李秀权.高等院校教学仪器设备管理存在问题与对策探讨[J].经济师,2012年03期:102~103[4]  张海藩.软件工程导论(第五版)[M].北京:清华大学出版社,2008:11~215[5]  王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2007:16~265[6]  RasmusLerdorf,KevinTatroe.ProgrammingPHP[M].O'ReillyMedia,2006:11~281[7]  陈湘扬,陈过益.PHP5+MySQL网页系统开发设计[M].北京:电子工业出版社,2007:22~327[8]  陈营辉.PHP网络编程从入门到精通[M].北京:清华大学出版社,2007:48~537[9]  赵鹤芹.设计动态网站的最佳方案:Apache+PHP+MySQL[J].计算机工程与设计,2007年04期:32~167[10]  [美]W.JasonGilmore.PHP&MySQLProgrammingDesign(第3版)[M].北京:人民邮电出版社,2009:10~62032 致  谢我四年的大学生活即将结束,带着不舍和好奇即将走进另一种生活。毕业设计和论文的顺利完成多亏刘海博老师的悉心教导和身边同学的热心帮助。在此向刘海博老师和帮助过我的同学们表示真诚的谢意。我还要感谢传授我知识的老师,你们传授了我知识的同时教会了我为人处世的道理。感谢这所大学——我的母校,你使我走上社会更有勇气,更多一份坚持。在即将毕业的时刻,我还要谢谢我的父母,是你们的爱护和照顾,我才能健康的长大,也是你们的关心和支持,我才能顺利走过生活遇到的坎坷。最后,再次向帮助过我的老师和同学们表示衷心的感谢。32 附  录MySQLHistoryMySQLhistorygoesbackto1979whenMontyWidenius,workingforasmallcompanycalledTcX,createdareportingtoolwritteninBASICthatranona4Mhzcomputerwith16KBRAM.Overtime,thetoolwasrewritteninCandportedtorunonUnix.Itwasstilljustalow-levelstorageenginewithareportingfrontend.ThetoolwasknownbythenameofUnireg.Workingundertheadverseconditionsoflittlecomputationalresources,andperhapsbuildingonhisGod-giventalent,Montydevelopedahabitandabilitytowriteveryefficientcodenaturally.Healsodeveloped,orperhapswasgiftedfromthestart,withanunusuallyacutevisionofwhatneededtobedonetothecodetomakeitusefulinfuturedevelopment—withoutknowinginadvancemuchdetailaboutwhatthatfuturedevelopmentwouldbe.Inadditiontotheabove,withTcXbeingaverysmallcompanyandMontybeingoneoftheowners,hehadalotofsayinwhathappenedtohiscode.WhilethereareperhapsagoodnumberofprogrammersouttherewithMonty’stalentandability,foranumberofreasons,fewgettocarrytheircodearoundformorethan20years.Montydid.Monty’swork,talents,andownershipofthecodeprovidedafoundationuponwhichtheMiracleofMySQLcouldbebuilt.Sometimeinthe1990s,TcXcustomersbegantopushforanSQLinterfacetotheirdata.Severalpossibilitieswereconsidered.Onewastoloaditintoacommercialdatabase.Montywasnotsatisfiedwiththespeed.HetriedborrowingmSQLcodefortheSQLpartandintegratingitwithhislow-levelstorageengine.Thatdidnotworkwell,either.Thencametheclassicmoveofatalented,drivenprogrammer:“I’vehadenoughofthosetoolsthatsomebodyelsewrotethatdon’twork!I’mwritingmyown!”ThusinMayof1996MySQLversion1.0wasreleasedtoalimitedgroup,followedbyapublicreleaseinOctober1996ofversion3.11.1.TheinitialpublicreleaseprovidedonlyabinarydistributionforSolaris.Amonthlater,thesourceandtheLinuxbinarywerereleased.Inthenexttwoyears,MySQLwasportedtoanumberofotheroperatingsystemsasthefeaturesetgraduallyincreased.MySQLwasoriginallyreleasedunderaspeciallicensethatallowedcommercialusetothosewhowerenotredistributingitwiththeirsoftware.Speciallicenseswereavailableforsaletothosewhowantedtobundleitwiththeirproduct.Additionally,commercialsupportwasalsobeingsold.ThisprovidedTcXwithsomerevenuetojustifythefurtherdevelopmentofMySQL,althoughthepurposeofitsoriginalcreationhadalreadybeenfulfilled.DuringthisperiodMySQLprogressedtoversion3.22.ItsupportedadecentsubsetoftheSQLlanguage,hadanoptimizeralotmoresophisticatedthanonewouldexpectcouldpossiblybewrittenbyoneperson,wasextremelyfast,andwasverystable.NumerousAPIswerecontributed,soonecouldwriteaclientinprettymuchanyexistingprogramminglanguage.However,itstilllackedsupportfortransactions,subqueries,foreignkeys,storedprocedures,andviews.Thelockinghappenedonlyatatablelevel,whichinsomecasescouldslowitdowntoagrindinghalt.Someprogrammersunabletogetarounditslimitationsstillconsidereditatoy,whileothers32 weremorethanhappytodumptheirOracleorSQLServerinfavorofMySQL,anddealwiththelimitationsintheircodeinexchangeforimprovementinperformanceandlicensingcostsavings.Around1999–2000aseparatecompanynamedMySQLABwasestablished.IthiredseveraldevelopersandestablishedapartnershipwithSleepycattoprovideanSQLinterfacefortheBerkeleyDBdatafiles.SinceBerkeleyDBhadtransactioncapabilities,thiswouldgiveMySQLsupportfortransactions,whichitpreviouslylacked.AftersomechangesinthecodeinpreparationforintegratingBerkeleyDB,version3.23wasreleased.AlthoughtheMySQLdeveloperscouldneverworkoutallthequirksoftheBerkeleyDBinterfaceandtheBerkeleyDBtableswereneverstable,theeffortwasnotwasted.Asaresult,MySQLsourcebecameequippedwithhookstoaddanytypeofstorageengine,includingatransactionalone.Version4.1wasreleasedasalphainAprilof2003,andwasdeclaredbetainJuneof2004.Unlikeversion4.0,itaddedanumberofsignificantimprovements.Perhapsthemostsignificantwassubqueries,afeaturelong-awaitedbymanyusers.SpatialindexingsupportwasaddedtotheMyISAMstorageengine.Unicodesupportwasimplemented.Theclient/serverprotocolsawanumberofchanges.Itwasmademoresecureagainstattacks,andsupportedpreparedstatements.Inparallelwiththealphaversionof4.1,workprogressedonyetanotherdevelopmentbranch:version5.0,whichwouldaddstoredprocedures,server-sidecursors,triggers,views,XAtransactions,significantimprovementsinthequeryoptimizer,andanumberofotherfeatures.ThedecisiontocreateaseparatedevelopmentbranchwasmadebecauseMySQLdevelopersfeltthatitwouldtakealongtimetostabilize4.1if,ontopofallthenewfeaturesthattheywereaddingtoit,theyhadtodealwiththestoredprocedures.Version5.0wasfinallyreleasedasalphainDecember2003.Forawhilethiscreatedquiteabitofconfusion—thereweretwobranchesinthealphastage.Eventually4.1stabilized(October2004),andtheconfusionwasresolved.Version5.0stabilizedayearlater,inOctoberof2005.Thefirstalphareleaseof5.1followedinNovember2005,whichaddedanumberofimprovements,someofwhicharetabledatapartitioning,row-basedreplication,eventscheduler,andastandardizedplug-inAPIthatfacilitatestheintegrationofnewstorageenginesandotherplug-ins.Atthispoint,MySQLisbeingactivelydeveloped.5.0iscurrentlythestableversion,while5.1isinbetaandshouldsoonbecomestable.Newfeaturesatthispointgointoversion5.2.MySQLArchitectureForthelargepart,MySQLarchitecturedefiesaformaldefinitionorspecification.Whenmostofthecodewasoriginallywritten,itwasnotdonetobeapartofsomegreatsysteminthefuture,butrathertosolvesomeveryspecificproblems.However,itwaswrittensowellandwithenoughinsightthatitreachedthepointwheretherewereenoughqualitypiecestoassembleadatabaseserver.CoreModules32 Imakeanattemptinthissectiontoidentifythecoremodulesinthesystem.However,letmeaddadisclaimerthatthisisonlyanattempttoformalizewhatexists.MySQLdevelopersrarelythinkinthoseterms.Rather,theytendtothinkoffiles,directories,classes,structures,andfunctions.Itismuchmorecommontohear“Thishappensinmi_open()”thantohear“ThishappensontheMyISAMstorageenginelevel.”MySQLdevelopersknowthecodesowellthattheyareabletothinkconceptuallyontheleveloffunctions,structures,andclasses.Theywillprobablyfindtheabstractionsinthissectionratheruseless.However,itwouldbehelpfultoapersonusedtothinkingintermsofmodulesandmanagers.WithregardtoMySQL,Iusetheterm“module”ratherloosely.Unlikewhatonewouldtypicallycallamodule,inmanycasesitisnotsomethingyoucaneasilypulloutandreplacewithanotherimplementation.Thecodefromonemodulemightbespreadacrossseveralfiles,andyouoftenfindthecodefromseveraldifferentmodulesinthesamefile.Thisisparticularlytrueoftheoldercode.Thenewercodetendstofitintothepatternofmodulesbetter.Soinourdefinition,amoduleisapieceofcodethatlogicallybelongstogetherinsomeway,andperformsacertaincriticalfunctioninUserAuthenticationModuleWhentheserverisstartedonthecommandline,theInitializationModuletakescontrol.Itparsestheconfigurationfileandthecommand-linearguments,allocatesglobalmemorybuffers,initializesglobalvariablesandstructures,loadstheaccesscontroltables,andperformsanumberofotherinitializationtasks.Oncetheinitializationjobiscomplete,theInitializationModulepassescontroltotheConnectionManager,whichstartslisteningforconnectionsfromclientsinaloop.Whenaclientconnectstothedatabaseserver,theConnectionManagerperformsanumberoflow-levelnetworkprotocoltasksandthenpassescontroltotheThreadManager,whichinturnsuppliesathreadtohandletheconnection(whichfromnowonwillbereferredtoastheConnectionThread).TheConnectionThreadmightbecreatedanew,orretrievedfromthethreadcacheandcalledtoactiveduty.OncetheConnectionThreadreceivescontrol,itfirstinvokestheUserAuthenticationModule.Thecredentialsoftheconnectinguserareverified,andtheclientmaynowissuerequests.TheConnectionThreadpassestherequestdatatotheCommandDispatcher.Somerequests,knownintheMySQLcodeterminologyascommands,canbeaccommodatedbytheCommandDispatcherdirectly,whilemorecomplexonesneedtoberedirectedtoanothermodule.Atypicalcommandmayrequesttheservertorunaquery,changetheactivedatabase,reportthestatus,sendacontinuousdumpofthereplicationupdates,closetheconnection,orperformsomeotheroperation.InMySQLserverterminology,therearetwotypesofclientrequests:aqueryandacommand.Aqueryisanythingthathastogothroughtheparser.Acommandisarequestthatcanbeexecutedwithouttheneedtoinvoketheparser.WewillusethetermqueryinthecontextofMySQLinternals.Thus,notonlyaSELECTbutalsoaDELETEorINSERTinourterminologywouldbecalledaquery.WhatwewouldcallaqueryissometimescalledanSQLstatement.32 Iffullqueryloggingisenabled,theCommandDispatcherwillasktheLoggingModuletologthequeryorthecommandtotheplain-textlogpriortothedispatch.Thusinthefullloggingconfigurationallquerieswillbelogged,eventheonesthatarenotsyntacticallycorrectandwillneverbeexecuted,immediatelyreturninganerror.TheCommandDispatcherforwardsqueriestotheParserthroughtheQueryCacheModule.TheQueryCacheModulecheckswhetherthequeryisofthetypethatcanbecached,andifthereexistsapreviouslycomputedcachedresultthatisstillvalid.Inthecaseofahit,theexecutionisshort-circuitedatthispoint,thecachedresultisreturnedtotheuser,andtheConnectionThreadreceivescontrolandisnowreadytoprocessanothercommand.IftheQueryCacheModulereportsamiss,thequerygoestotheParser,whichwillmakeadecisiononhowtotransfercontrolbasedonthequerytype.Onecanidentifythefollowingmodulesthatcouldcontinuefromthatpoint:theOptimizer,theTableModificationModule,theTableMaintenanceModule,theReplicationModule,andtheStatusReportingModule.SelectqueriesareforwardedtotheOptimizer;updates,inserts,deletes,andtable-creationandschema-alteringqueriesgototherespectiveTableModificationModules;queriesthatcheck,repair,updatekeystatistics,ordefragmentthetablegototheTableMaintenancemodule;queriesrelatedtoreplicationgototheReplicationModule;andstatusrequestsgototheStatusReportingModule.TherealsoexistanumberofTableModificationModules:DeleteModule,CreateModule,UpdateModule,InsertModule,andAlterModule.Atthispoint,eachofthemodulesthatwillreceivecontrolfromtheParserpassesthelistoftablesinvolvedinthequerytotheAccessControlModuleandthen,uponsuccess,totheTableManager,whichopensthetablesandacquiresthenecessarylocks.NowthetableoperationmoduleisreadytoproceedwithitsspecifictaskandwillissueanumberofrequeststotheAbstractedStorageEngineModuleforlow-leveloperationssuchasinsertingorupdatingarecord,retrievingtherecordsbasedonakeyvalue,orperforminganoperationonthetablelevel,suchasrepairingitorupdatingtheindexstatistics.TheAbstractedStorageEngineModulewillautomaticallytranslatethecallstothecorrespondingmethodsofthespecificStorageEngineModuleviaobjectpolymorphism.Inotherwords,whendealingwithaStorageEngineobject,thecallerthinksitis thecallerdoesnotneedtobeawareoftheexactobjecttypeoftheStorageEngineobject.Asthequeryorcommandisbeingprocessed,thecorrespondingmodulemaysendpartsoftheresultsettotheclientastheybecomeavailable.Itmayalsosendwarningsoranerrormessage.Ifanerrormessageisissued,boththeclientandtheserverwillunderstandthatthequeryorcommandhasfailedandtaketheappropriatemeasures.Theclientwillnotacceptanymoreresultset,warning,orerrormessagedataforthegivenquery,whiletheserverwillalwaystransfercontroltotheConnectionThreadafterissuinganerror.NotethatsinceMySQLdoesnotuseexceptionsforreasonsofimplementationstabilityandportability,allcallsonalllevelsmustbecheckedforerrorswiththeappropriatetransferofcontrolinthecaseoffailure.Ifthelow-levelmodulehasmadeamodificationtothedatainsomewayandifthebinaryupdateloggingisenabled,themodulewillberesponsibleforaskingtheLoggingModuletolog32 theupdateeventtothebinaryupdatelog,sometimesknownasthereplicationlog,or,amongMySQLdevelopersandpowerusers,thebinlog.Oncethetaskiscompleted,theexecutionflowreturnstotheConnectionThread,whichperformsthenecessaryclean-upandwaitsforanotherqueryorcommandfromtheclient.ThesessioncontinuesuntiltheclientissuestheQuitcommand.Inadditiontointeractingwithregularclients,aservermayreceiveacommandfromareplicationslavetocontinuouslyreaditsbinaryupdatelog.ThiscommandwillbehandledbytheReplicationMasterModule.Iftheserverisconfiguredasareplicationslave,theInitializationModulewillcalltheReplicationSlaveModule,whichinturnwillstarttwothreads,calledtheSQLThreadandtheI/Othread.Theytakecareofpropagatingupdatesthathappenedonthemastertotheslave.Itispossibleforthesameservertobeconfiguredasbothamasterandaslave.NetworkcommunicationwithaclientgoesthroughtheClient/ServerProtocolModule,whichisresponsibleforpackagingthedataintheproperformat,anddependingontheconnectionsettings,compressingit.TheClient/ServerProtocolModuleinturnusestheLow-LevelNetworkI/Omodule,whichisresponsibleforsendingandreceivingthedataonthesocketlevelinacross-platformportableway.ItisalsoresponsibleforencryptingthedatausingtheOpenSSLlibrarycallsiftheconnectionoptionsaresetappropriately.32 MySQL历史MySQL的历史可以追溯到1979年,当时,工作为一个小companycalledTCX,蒙蒂维德纽创建一个报告工具,用BASIC语言编写,运行4Mhzcomputer上具有16KB的RAM。随着时间的推移,在C重写工具移植到运行在Unix。这还只是一个低级别的存储引擎与报告前端。该工具被称为的名字Unireg。小的计算资源的不利条件下工作,也许是他的上帝赐予的天赋基础上,蒙蒂开发自然非常有效的写代码的习惯和能力。他还开发了,或者也许是有天赋的,从一开始就异常敏锐的眼光有用使其在未来的发展提前多的细节,未来的发展将是什么,不知道什么需要做的代码。除了上述TcX公司是一家很小的公司和蒙蒂的业主之一,他有很多的说发生了什么事他的代码。虽然有也许是一个很好的程序员有与蒙蒂的才华和能力,有许多原因,很少去执行他们的代码超过20年左右。蒙蒂的工作,才干和代码所有权MySQL的奇迹可以建立提供了基础。在20世纪90年代的一段时间,TcX公司客户开始推动他们的数据的SQL接口。几种可能性进行了审议。一个是它加载到商业database.Monty的不是满意的速度。他试图借用mSQL的代码的SQL语句组成部分,将与他的低级别的存储引擎。这并不能很好的工作。随后赶来的经典之举,带动一个有才华的程序员:“我已经受够了这些工具的,别人写的,不工作!我写我自己的!“因此,在5月的1996年版本的MySQL1.0发布了一组有限,其次是一个公共版本3.11.1发布于1996年10月。首次公开发布只提供了二进制分发用于Solaris。一个月后,被释放源和Linux二进制。在未来两年中,MySQL移植到其他操作系统的一些功能集逐渐增加。MySQL是一种特殊的许可下发布的,那些谁是不是重新分配它与他们的软件允许商业使用。特别许可证可用于那些谁想要用他们的产品捆绑销售。此外,商业支持,也被售出。这提供了的TCX一些收入证明MySQL的进一步发展,虽然其独创的目的已经达成了。在此期间,MySQL的发展到3.22版本。它支持一个体面的SQL语言的子集,有可能由一个人写了很多更复杂的,比我们预期的优化,速度极快,是非常stable.Numerous的API贡献,所以人们可以编写一个客户端在几乎任何现有编程语言的。但是,它仍然缺乏支持事务,子查询,外键,存储过程和意见。只发生在表级锁定,在某些情况下可能会慢下来嘎然而止。有些程序员无法得到解决其局限性仍然认为这是一个玩具,而其他人更乐意抛售他们的Oracle或SQLServer支持的MySQL,并处理在他们的代码中的局限性换取改善性能和许可成本节约。大约1999-2000名为MySQLAB公司成立一个独立的公司。它聘请一些开发商建立了合作关系,与SleepycatBerkeleyDB的数据文件提供一个SQL接口。由于Berkeley32 DB的事务处理能力,这将使MySQL支持的交易,它先前lacked.After的代码中的一些变化,准备整合的BerkeleyDB,3.23版本发布。虽然MySQL的开发人员不可能所有的怪癖BerkeleyDB的接口和BerkeleyDB表从来没有稳定,不wasted.As努力的结果,MySQL源代码成为钩子添加任何类型的存储引擎,包括配备事务。2003年4月发布了4.1版,如α,并宣布2004年6月公测。与4.0版本不同的是,它增加了一些显着的改进。也许最重要的是子查询,许多用户期待已久的功能。空间索引支持添加到MyISAM存储引擎。Unicode支持实施。客户机/服务器协议,看到了一些变化。它是由更安全的攻击,并支持预处理语句的。4.1alpha版本的同时,工作进展的又一发展分支:版本5.0,这将增加存储过程,服务器端游标,触发器,视图,XA事务,查询优化器的显着改善,和其他一些功能。因为MySQL开发人员认为这将需要很长的时间来稳定4.1,如果在上面的所有新功能,他们加入,他们不得不处理与存储的程序,作出决定创建一个单独的开发分支。5.0版本终于发布了2003年12月在阿尔法。对于而这创造了相当有点混乱,有两个分支在alpha阶段。最终以4.1的稳定(2004年10月),以及混乱得到解决。随后在2005年11月的5.1第一个alpha版本,其中新增了多项改进,其中一些表数据分区,基于行的复制,事件调度器,插件API和标准化,有利于整合新的存储引擎和其他插件。在这一点上,MySQL是正在积极开发。5.0是目前的稳定版本,而5.1是处于测试阶段,应该很快趋于稳定。进入5.2版本的新功能,在这一点上。MySQL的架构很大一部分,MySQL的架构违背正式定义或specification.When的大部分代码最初是,它没有做一些伟大的系统在将来成为其中的一部分,而是要解决一些非常具体的问题。然而,它写的这么好,有足够的洞察力,它达到的地步,有足够的质量件组装一台数据库服务器。核心模块在本节中我进行了尝试识别系统中的核心模块。然而,让我添加一个声明,这仅仅是一个尝试正式什么exists.MySQL的开发商很少会想到在这些方面。相反,他们倾向于认为,文件,目录类,结构和功能。这是更常听到的“发生这种情况在mi_open()”听到“这发生在MyISAM存储引擎级别。”MySQL开发者知道代码,以便他们能够认为概念的功能,结构,上水平和类。他们可能会发现本节中的抽象,而没用。然而,这将有助于一个人思维模块和经理。32 关于MySQL的,我用的术语“模块”,而松散。不像通常会调用一个模块,在许多情况下,它是不是你可以很容易地拔出并更换另一个实施。从一个模块的代码可能会被分散在多个文件中,你经常会发现从几个不同的模块在同一个文件的代码。这是特别真实的较旧的代码。新的代码往往更好,以适应模块的格局。因此,在我们的定义中,一个模块是一段代码,以某种方式,在逻辑上属于一起,并执行某些关键的功能在用户身份验证模块在命令行上,当服务器启动时初始化模块需要control.It解析配置文件和命令行参数,分配全局内存缓冲器,初始化的全局变量和结构,负载的访问控制表,并进行了一些其他初始化任务。一旦初始化工作完成后,初始化模块通过控制连接管理器,开始监听来自客户端的连接,在一个循环中。当客户端连接到数据库服务器,连接管理器进行了一些低级别的网络协议任务,然后通过控制线程管理器,这反过来又提供了一个线程来处理连接(从现在开始将被称为作为连接螺纹)。连接螺纹可能会被重新创建,或从线程缓存中检索,并叫到现役。一旦连接螺纹接收控制,它首先调用用户认证模块。凭据连接的用户进行验证,客户端现在可以发出请求。连接螺纹请求数据传递到指挥调度。可以容纳一些请求,命令,在MySQL的代码术语称为直接由指挥调度,而更复杂的需要被重定向到另一个模块。一个典型的命令请求服务器运行一个查询,更改活动数据库,状态报告,发送连续的转储复制更新,关闭连接,或进行一些其他操作。在MySQL服务器术语中,有两种类型的客户端请求的查询和命令。查询是任何东西,通过解析器去。命令是一个请求,该请求可以被执行,而无需调用解析器。MySQL的内部的背景下,我们将使用术语查询。因此,不仅一个SELECT也DELETE或INSERT在我们的术语将被称为一个查询。有时也被称为什么,我们将调用查询的SQL语句。如果启用了日志记录完整的查询,指挥调度会要求派遣前登录查询或命令的纯文本格式的日志记录模块。因此,在完整的日志记录配置所有的查询将被记录下来,即使是那些没有语法上是正确的,将永远不会被执行,立即返回一个错误。指挥调度转发查询分析器通过查询缓存模块。查询缓存模块检查查询是否类型可以被缓存,如果存在一个以前缓存的计算结果仍然valid.In一击的情况下,执行短路,在这一点上,缓存结果返回给用户,连接螺纹接收控制,现在已经准备好处理另一个命令。如果查询缓存模块报告小组,查询分析器,这将使得决定如何控制权转移的基础上的查询类型。人们可以继续从该点以下模块:优化,表修改模块,表维护模块,复制模块,状态报告模块可以识别。选择查询转发的优化,更新,插入,删除和创建表和模式变更查询到各表修改模块,查询,检查,维修,更新关键统计数据,或整理表到表维护模块;查询与复制有关的复制模块和状态请求状态报告模块。此外,还存在一些表修改模块:删除模块,创建模块,更新模块,插入模块,改变模块。32 在这一点上,每个从解析器接收控制模块通过在查询中涉及的表的访问控制模块的列表,然后,在成功时,表管理器,打开表,并获得必要的锁。现在表操作模块已准备好继续进行,其具体任务,并会发出的请求数量低层次的操作,如插入或更新记录,检索记录的基础上的一个关键值,或进行抽象的存储引擎模块表级别上的操作,如修复或更新索引统计信息。抽象的存储引擎,模块将自动调用相应的方法的具体存储引擎模块通过对象polymorphism.In的换句话说翻译,处理与存储引擎对象时,主叫方认为它是调用者不需要知道确切的对象类型的存储引擎对象。作为查询或命令正在处理,相应的模块可发送到客户端的结果集的部分,因为他们成为可用。它也可以发送警告或错误消息。如果出现错误信息发出后,在客户端和服务器都将明白,查询或命令失败,并采取适当措施。客户端将不接受任何结果集,警告或错误消息,对于给定的查询的数据,而服务器将始终控制权转移后发出一个错误的连接螺纹。请注意,因为MySQL不使用例外,实施的稳定性和可移植性的原因,呼吁各级必须检查误差控制在失败的情况下,适当转让。如果低层次的模块数据以某种方式作出了修改,如果二进制更新日志被启用,该模块将负责询问记录模块记录更新事件的二进制更新日志,有时也被称为复制日志,或MySQL开发和电力用户之间的binlog的。一旦任务完成后,执行流程返回到连接螺纹,进行必要的清理,并等待来自客户端的另一个查询或命令。这次会议将继续进行,直到客户机发出quit命令。除了与常规客户端交互,一台服务器可以接收命令,从复制从盘连续读取的二进制更新日志。该命令将被复制主模块处理。如果服务器被配置为复制从盘,将调用初始化模块的复制从模块,这反过来将启动两个线程,称为SQL线程和I/O线程。他们照顾传播更新发生在主的奴隶。这是可能的,在同一台服务器被配置为一个主站和从站。经过与客户端的网络通信的客户机/服务器协议模块,负责以正确的格式打包的数据,并根据连接设置,将它压缩。反过来客户端/服务器的协议模块采用低级别的网络I/O模块,这是负责发送和接收套接字级别上的数据,在跨平台移植的方式。它也负责对数据进行加密使用OpenSSL库的调用,如果连接选项设置适当。32'