已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号:000000000000 本本 科科 生生 毕毕 业业 论论 文文 论文题目:论文题目: 基于面向对象思想的数据库 论文题目:论文题目: 解决方案研究及简单实现 作作 者:者: 专业班级:专业班级: 计算机科学与技术 000000 班 指导教师:指导教师: 年月日 摘摘 要要 随着应用的扩展,特别是诸如人工智能等复杂应用的需要,关系型数据库 已经显得力不从心了,人们迫切希望产生一种新的数据库解决方案来适应这些 复杂需求。当前,面向对象程序设计方法已经在计算机各个领域,包括程序设 计语言、软件工程、信息系统设计、人工智能甚至计算机硬件设计得到了广泛 的应用并产生了深远的影响。自然的,面向对象技术也给数据库技术带来了新 的希望和活力。 本文探讨的是关于面向对象数据库的解决方案,指出其中的优劣点以及特 性,展望面向对象数据库的应用价值和前景,并提出一个面向对象数据库引擎 的设计思路。 关键关键词词:数据库 面向对象 数据库系统 数据库引擎 Abstract With the application of the expansion,in particular, such as arti- ficial intelligence and so on,such as the need for complex applications, relational database has become ability falling short of wishes,People eager to create a new database solutions to meet these complex needs. At present,object-oriented programming has already been in the computer fields,including programming languages,software engineering, inform- ation systems design, artificial intelligence and even computer hardware design has been widely used and produced a far-reaching implications. Naturally, object-oriented database technology also has brought new hope and vitality. This article explores the on object-oriented database solutions, which pointed out the advantages and disadvantages as well as charac- teristics and looking forward to object-oriented database application value and prospects,and made an object-oriented database engine design ideas. Key words: Database Object-oriented Relational database Database engin 目目 录录 第 1 章 绪论.1 1.1 导论.1 1.1.1 面向对象开发方法优点.1 1.1.2 面向对象数据库的优点.2 1.1.3 面向对象方法学在计算机领域中的应用.3 1.2 本章小结.3 第 2 章 面向对象数据库理论设想.4 2.1 面向对象数据库模型.4 2.1.1 核心概念.4 2.1.2 对象与对象标识.5 2.1.3 类与类层次.6 2.1.4 继承.6 2.1.5 滞后联编.6 2.1.6 对象的嵌套.6 2.2 面向对象数据库语言.6 2.2.1 类的定义与操作.6 2.2.2 操作/方法的定义.6 2.2.3 对象的查询.7 2.3 面向对象数据库模式.7 2.3.1 模式的一致性.7 2.3.2 模式演进操作.7 2.4 本章小结.7 第 3 章 面向对象数据库引擎设计.8 3.1 总体设计.8 3.2 内模式(底层设计).9 3.2.1 系统配置设计.9 3.2.2 模式设计(即类的设计).12 3.2.3 存储设计.17 3.2.4 加载策略.18 3.2.5 外部接口.18 3.3 模式(中层设计).18 3.3.1 内部接口.18 3.3.2 管理者.18 3.3.3 执行者.19 3.3.4 编译器.19 3.3.5 外部接口.20 3.4 外模式(外层设计).20 3.4.1 内部接口.20 3.4.2 组织者.21 3.4.3 接收者.21 3.5 OODB 语言设计.21 3.5.1 数据查询(OQL).24 3.5.2 数据操作(OML).25 3.6 本章小结.27 第 4 章 面向对象数据库引擎实现.28 4.1 系统概述.28 4.1.1 实现技术.28 4.1.2 系统配置.28 4.2 程序结构.28 4.3 工具类.30 4.4 系统 API 实现 .31 4.5 模式层实现.31 4.6 其它部分的实现.31 4.6.1 内模式层的实现.32 4.6.2 外模式的实现.32 4.6.3 服务端的实现.32 4.6.4 客户端的实现.32 4.7 本章小结.33 第 5 章 总结与展望.34 参考文献.35 文献综述.36 致 谢.41 1 第第 1 1 章章 绪论绪论 1.11.1 导论导论 面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是 90 年代 软件开发方法的主流【1】。面向对象的概念和应用已超越了程序设计和软件开发, 扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布 式系统、网络管理结构、CAD 技术、人工智能等领域。 面向对象是一种新的方法学,也是一种认知方法学。它是一种支持模块化 设计和软件重用的实际可行的编程方法,它把程序间的逻辑活动建立在对象间 的消息传递之上,且设计上更加符合现实世界,更加自然,所以面向对象方法 得到了更广泛的应用。 1.1.11.1.1 面向对象开发方法优点面向对象开发方法优点 (1)提高软件的可重用性 原因很简单,因为面向对象的设计思想本来就要求你把业务逻辑封装到一 个个对象中,并通过给它们传递消息调用业务逻辑计算。这样,你就不得不首 先把一些通用的业务逻辑设计在一个个类中,下次使用只需调用它们即可。同 时,面向对象方法还有继承该概念,继承使得功能可以从一个类直接扩展到它 的子类中。另外,多态,动态联编等技术以及设计模式的应用使得代码的可复 用性得到了最大限度的扩展【2】。 (2)提高软件的可维护性 一个软件开发完成之后,还需要维护。在过去,在没有面向对象开发方法 之前,软件模块之间的依赖非常大,而且混乱难以管理,比方说 C 语言设计的 程序每每超过 50 万行代码就不可避免的产生命名冲突,所以这样的软件维护起 来非常困难。而面向对象开发方法呢,由于业务逻辑方法被独立的封装到一个 个对象中,所以它的维护往往只需对其内部的实现进行更改,而无须改变外部 接口,至少不必伤筋动骨。这是得软件维护得得以轻松进行,甚至可以进行大 面积的扩展。 (3)更易于满足用户的需求 2 用结构化方法开发的软件,其稳定性、可修改性和可重用性都比较差,这 是因为结构化方法的本质是功能分解,从代表目标系统整体功能的单个处理着 手,自顶向下不断把复杂的处理分解为子处理,这样一层一层的分解下去,直 到仅剩下若干个容易实现的子处理功能为止,然后用相应的工具来描述各个最 低层的处理【3】。因此,结构化方法是围绕实现处理功能的“过程”来构造系统 的。然而,用户需求的变化大部分是针对功能的,因此,这种变化对于基于过 程的设计来说是灾难性的。用这种方法设计出来的系统结构常常是不稳定的 , 用户需求的变化往往造成系统结构的较大变化,从而需要花费很大代价才能实 现这种变化。而面向对象的程序设计方法没有这个问题,也是源于它们的封装 性。 1.1.21.1.2 面向对象数据库的优点面向对象数据库的优点 以上说的是面向对象方法的通用优点,这些优点同样适用于面向对象的数 据库中程序设计中。面向对象数据库是数据库技术与面向对象程序设计方法相 结合的产物,由于同是面向对象方法学,所以其具有了所有面向对象的优点。 同时,由于数据库主要操作的是集合(而不是单个数据) ,所以其又具有自身的 特点和优点。 (1)提高数据库开发效率 由于面向对象本身的亲和性,使得人们可以使用更自然的方式来开发数据 库,而不必像关系数据库那样考虑到方方面面诸如规范到第几范式等等问题, 大大的提高了开发效率。同时,由于面向对象开发的流行,人们往往更热衷于 使用面向对象的方式思考问题,这也无形中提高了数据库系统的开发效率。再 有,应用于数据库间的交互将变得更加直接和方便,因为加入应用也是面向对 象的,那么可以将面向对象数据库中的对象直接映射到应用程序的对象中。比 如当前 J2EE 开发中流行的 EJB 以及开源的 Hibernate 等框架技术就是在关系数 据数据库与面向对象间搭桥方面做了积极的工作。而对于面向对象数据库来数, EJB 和 Hibernate 等中间技术将显得无用,人们可以直接将数据库中的信息转 换到基于面向对象技术应用程序的对象中,而且效率更高(因为无需中间层的 转化) 。程序员可以彻底的从持久层复杂的开发逻辑中解放出来,投入跟为重要 的业务逻辑开发中,而且再也不用写复杂的 SQL 语句,因为应用中的编程和数 据库中的编程时一致的【4】。 (2)数据库本身可以完成复杂的逻辑 由于使用了面向对象方法学,在数据库中编写复杂的逻辑变得简单了,于 是,人们可以在数据库中加入复杂的逻辑,而且可以和在应用中添加的逻辑相 互衔接。目前,主流数据库都提供了过程化查询语言,但毕竟还是过程化的, 它天生就不如面向对象方法高效简单,因此人们往往并不想使用过程化查询语 言实现太复杂的逻辑,因为它将导致开发和维护困难,提升成本。 3 在数据库中使用数据库查询语言实现复杂的基于面向对象的业务逻辑是面 向对象数据库的一大亮点。这不仅使得程序的开发和维护变得简单,而且执行 性能也得到了提升(因为在数据中实现的逻辑总比在应用中实现的逻辑快那么 一两步) 。 (3)低冗余性和高效性 在关系数据库中,低冗余和高效一直是鱼和熊掌不可兼得的状态。低冗余 往往会使得查询困难并最终导致数据库效率降低(因为将产生可观的笛卡尔集 或者生成复杂的查询优化方案,从而降低效率) 。而在面向对象数据库中,查询 将变成对对象 ID 和消息的传递(也就是方法调用) ,从而消除了大范围的笛卡 尔集带来的困扰,提高数据库的访问效率。同时,由于面向对象的封装性,使 得面向对象数据库在设计程序时天生就已经达到了相当于关系数据库中的第三 范式的设计准则。因此面向对象的数据库天生就是低冗余的。 1.1.31.1.3 面向对象方法学在计算机领域中的应用面向对象方法学在计算机领域中的应用 面向对象数据库系统可以应用于复杂的诸如人工智能等领域,也可以使用 于传统的企业级应用。总之,面向对象数据库可以应用在所有关系数据库能够 应用的地方,且在许多方面效能更高,比如人工智能和其他较为复杂的应用中。 面向对象数据库现在已经存在一些实现,主要是三条路线: (1)以关系数据库和 SQL 为基础的扩展关系模型 这种方式的优点是适宜于市场推广,缺点是无法做到纯粹的面向对象性。 这个方式已经在各大主流数据库总得到实现,如 Oracle、DB 2 等。 (2)以面向对象程序设计语言为基础 这种方式是以面向对象程序设计语言为基础的,研究持久的程序设计语言。 这种方式的优点是它是纯粹的面向对象的,缺点是难以进行市场推广。 (3)建立新的面向对象数据库 这种方式已经有一些实现,如法国 O2 Technology 公司的 O2 系统。优缺点 与第二条路线一致,基于研究的目的,本文中的面向对象数据库的简易实现版 本是以这种方式为基础的。 1.21.2 本章小结本章小结 本章首先讨论了面向对象的优点,紧接着讨论面向对象数据库优点,最后 概述了目前面向对象数据库在计算机领域的具体应用状况。 4 第第 2 2 章章 面向对象数据库理论设想面向对象数据库理论设想 2.12.1 面向对象数据库模型面向对象数据库模型 2.1.12.1.1 核心概念核心概念 (1)对象与对象标识 对象,是现实世界中实体的抽象,是数据和操作的集合,是持久化到数据 库中的最小的存储单位。 这里的对象其实与一般的面向对象程序设计语言中的对象并没有很大不同。 但是,这里的对象是持久性的。数据库中的对象是数据记录的最小单位,也就 是说,数据库中至少存在一个对象才有意义。当然,对象中还可以有对象的属 性,方法等,但一个对象必须是完整的。 对象标识,指的是唯一标定一个对象的标志,一个对象对应一个标识符。 在现实世界中,对象可能会随着时间的推移而发生改变,但对象标识不应该改 变,因此,对象标识自对象生成后就不应该再改变,否则无法使用对象标识唯 一确定一个对象了。即使两个对象的属性和方法以及状态完全一致,只要其对 象标识不同,则两者是不同的对象。 对象标识一般有以下三种实现方式【5】: 值标识,使用对象的某一属性作为其对象标识,不推荐此方式。 名标识,使用一个名字来表示标识。也推荐此种方式。 内标识,以上两种方式是有用户建立的,而这种方式是有系统内部建立 的,不具有任何实际含义,且只有系统才可以“观察”此类对象标识。 另外,在对象数据库中,标识是永久不变的,即具有永久持久性,这和面 向对象程序中的对象标识不一样,面向对象程序中的对象标识只具有对象内持 久性。 (2)封装 抽象是对象的外部界面与内部实现之间实行清晰隔离的一种抽象,外部与 对象的通信只能通过消息来实现【6】。在对象数据库中,表现为对象的私有和保 护成员只能通过其方法来查询得到,而公有成员可以直接查询。这种方式的优 点是对象被封装成了自含的单元,对象只接受已定义好的操作,其他对象不能 直接访问对象的非公有成员。缺点是丧失了传统关系数据库中进行即席的、按 内容的查询,这就不够方便灵活了,因此,需要做一些改进和妥协。 (3)类 5 共享同一属性和方法集的所有对象构成的对象类,一个对象是一个类的实 例。在数据库是一种抽象的数据类型。相当于关系数据库中的一张表。 (4)类层次 这里涉及到继承的概念,即类可以继承类,从而具有与父类(或称超类) 的所有符合条件(只保护类型或公有类型)的属性和方法。这是关系数据库中 所没有的。 (5)消息 指的是对象的方法调用。通过对象的方法调用可以访问对象的属性数据和 执行业务逻辑。这也是关系数据库中没有的。 2.1.22.1.2 对象与对象标识对象与对象标识 (1)对象结构: 包括两部分,一个是属性集合,一个是方法集合。属性集合将用于存储数 据,方法集合将用于操作数据。属性集合即是对象的成员变量,其中又可以份 为公有类型的成员,私有类型的成员和保护类型的成员。公有类型的成员可以 直接使用查询语句进行查询,保护型成员可以在该类的子类的对象中直接访问, 私有类型的成员只能在本类的对象中访问,外部对象只能通过实现定义好的方 法(即操作)进行访问。如果没有事先定义好的方法,则外部将无法访问这些 变量的值,这就实现了对象的封装性了。在 OO 数据库中,对象结构同样分成这 两种集合。 (2)对象标识 表示在一个数据库中一个对象仅有一个唯一不变的标识就是对象标识。这 个标识用来精确定位一个对象。在 OO 数据库中,对象标识是唯一标定这一持久 性存储单元的唯一依据。其它对象或方法访问本对象的属性和方法必须先找到 该对象的对象标识,否则无法访问。 (3)封装 即将一个对象的属性和方法封装在对象内部,外部只能通过对象提供的外 部接口进行访问。这样就提高了数据的安全性和代码的重用性。 6 2.1.32.1.3 类与类层次类与类层次 相似对象的集合称为类,在数据库中表现为面向对象数据库模式的集合, 它规定了该类的对象的数据结构规则和操作规则。在面向对象数据库中,一个 类相当于关系数据库中的一张表。它同样有字段和属性,甚至还有关系数据库 表所没有的方法。这种思路将使得可以在面向对象数据库中实现复杂的逻辑。 类层次表现在继承上,即父类和子类的层级关系。这是为了多态和数据共 享的目的。这种思路使得我们可以想 Java 中那样使用接口和基类来完成我们的 巧妙设计。 2.1.42.1.4 继承继承 就像类层次中所说的,继承是为了多态和数据共享的目的,也是面向对象 代码重用的重要机制之一。 2.1.52.1.5 滞后联编滞后联编 即实现了重载的效果,OODBMS 不能在编译时把操作名联编到程序上,必须 在运行时根据需要进行抉择。 2.1.62.1.6 对象的嵌套对象的嵌套 是一种设计模式组合。将多个类的对象加入到一个类的属性中,使之 实现复杂的功能。 2.22.2 面向对象数据库语言面向对象数据库语言 OODB 语言用于描述面向对象数据库模式,说明并操作类定义和对象实例。 OODB 语言主要包括对象定义语言(ODL)和对象操作语言(OML) ,其中对象操 作语言又包括一个重要子集对象查询语言(OQL) 【7】 。OODB 语言一般应该具 备下列功能。 2.2.12.2.1 类的定义与操作类的定义与操作 包括定义、生成、存取、修改和撤销类。其中类的定义包括定义类的属性, 操作特征、继承性与约束等。 2.2.22.2.2 操作操作/ /方法的定义方法的定义 面向对象数据库语言可以用来定义操作/方法,在操作实现中,语言的命令 可用于操作对象局部数据结构。 7 2.2.32.2.3 对象的查询对象的查询 OODB 语言可以用于操作(包括生成、存取、修改与删除)实例对象。对于 对象的存取查询部分,OODB 语言可以直接查询对象个公有成员而不必向每 一个对象发送消息。而对于非公有成员,则只能通过发送消息了来实现存取、 修改与删除了。通过发送消息的查询效率可能会很低,因此对于一些经常要查 询的数据应该尽量定义为公有类型。 2.32.3 面向对象数据库模式面向对象数据库模式 2.3.12.3.1 模式的一致性模式的一致性 (1)唯一性约束:即同一模式中所有类的名字必须唯一、类中属性名和方 法名必须唯一。 (2)存在性约束:每个被引用的类必须在模式中定义、某操作代码中调用 的操作不需给出说明、每一个说明的操作必须存在一个现实程序。 (3)子类型约束:子类和父类(或超类)不能有环、不能有多继承(向 Java 学习) 、单一超类必须加以说明。 2.3.22.3.2 模式演进操作模式演进操作 主要包括以下几个部分: (1)类集的改变 (2)已有类的成分的改变 (3)子类/超类联系的改变 2.42.4 本章小结本章小结 本章主要是讨论和设计了面向对象数据库的理论概念和含义。通过本章的 讨论,设计和构建一个面向对象的数据库系统的理论体系已经建立。 8 第第 3 3 章章 面向对象数据库引擎设计面向对象数据库引擎设计 3.13.1 总体设计总体设计 本设计模仿关系数据库中关于模式的定义与划分也分为三个模式。但由于 关系数据库中的三大模式有所不同。这些模式也分为内模式、模式和外模式。 内模式主要和底层数据文件打交道,它接受来自模式的命令并执行相关的操作 【8】 。模式则是连接外模式和内模式之间的桥梁。模式将对来自外模式中用于需 求转译成内模式的执行命令,并组织和返回适当的信息给外模式。模式是数据 库引擎中最重要的部分,它包含了主要的操作逻辑和对 OQL 的编译功能,以及 组织数据的功能,是本设计中最复杂的一部分,详情请见具体设计。外模式负 责与用户打交道,相当于客户端,但又不是客户端。它实际上接受来自客户端 的指令信息经组织后传达给模式。设计上将采用的是网络编程技术和客户端进 行信息交流,详情如图 3-1。 图 3-1 系统架构图 9 3.23.2 内模式(底层设计)内模式(底层设计) 本部分用于探讨数据库的物理存取方案【9】。本部分将提供一套接口(见外 部接口)用来与模式交互,接受模式发来的指令进行操作,具体逻辑见图 3- 2。 图 3-2 内模式时序图 3.2.13.2.1 系统配置设计系统配置设计 (1)系统配置主文件(如表 3-1):这是一张属性表,将包含以下信息 (简易起见,仅包含一些基本信息) ,在数据库系统安装时进行初始化,在数据 库系统启动时将其读取到内存中并长久保留。 表 3-1 系统配置表 10 数据库端口(port)如 3306 等,用来创建 Socket 通信端口,不能与其他 程序的端口发生冲突。 用户名(user)数据库系统管理员,写在配置文件中(加密后存储) 密码(password)管理员密码(加密后存储) 包路径 (packages/package) 包的存储位置 包路径 (packages/package) 同上 包路径 (packages/package) 同上 包路径 (packages/package) 同上 包路径 (packages/package) 同上 . 包路径 (packages/package) 同上 该配置文件使用的是 XML 格式来存储,下面是一个简单的样例文件: local 520 admin d4gg542af4f458g4asfsd84sfsa874d1saf5652dfa1af4 E:lujijiangdata E:lujijiangdata2 12 (2)库(包)配置文件(如表 3-2):这也是一张属性表,包含的是数据 库的 ID 、名称、物理存储路径、用户信息、可用空间。每个数据库一张。也 是在系统启动即初始化到内存中【10】。 表 3-2 库配置表 ID数据库的唯一标识符 名称数据库的名称,也是唯一的 用户信息用户 ID,用户 ID 在 System 类(内建的基本类)对象中,可由此类查 询到用户信息。 可用空间 大小 该库空间受限的额度 以下是该配置文件的一个示例: 1 cn.soonner.db.test 1024102400 3.2.23.2.2 模式设计(即类的设计)模式设计(即类的设计) 每个类其实也是一张 XML 文件,在每次系统启动时加载到内存中,格式如 下(具体标签含义请见格式样例中的注释): 13 Test 0 14 1.method.xml 15 其中的方法(即操作)又链接到方法描述文件。 方法描述文件也是一个 XML 文件,格式如下(具体标签含义请见格式样例 中的注释): test 16 0 name string 1 age number 2 log byte 1 17 test.body 函数体描述文件直接就是方法描述。如: number a = 0; string b = “123456789”; return b+a; 3.2.33.2.3 存储设计存储设计 (1)包的存储【11】 一个包是一个文件夹,包中根下有一个配置文件 package.xml,该文件包含 了该包的配置信息,就是上述的库(包)配置文件。除了该文件外,还有各种 类的文件夹(下面会说到) 。 (2)类的存储 一个类是一个名为*.class 的文件夹,就存放在包文件夹的根下。其中*号 是该类的标识符。类文件夹的根下有一个类配置文件,就是以上所说的 class.xml,可能还有方法描述文件夹*.method。该文件夹跟下有一个方法描述 文件 method.xml,还有方法体描述文件如*.body 文件。除此之外,就是该类的 各个实例对象文件夹了。 (3)对象的存储 每个对象也是一个文件夹,就存放在类文件夹个跟下,命名规则是 *.object,其中*表示该对象的标识号。该文件夹的根下是各种字段文件【12】。 (4)字段的存储 18 字段文件的文件名是*.field,其中*是字段名,字段存储结构如图 3-3。 图 3-3 存储结构 3.2.43.2.4 加载策略加载策略 系统采用的是深度遍历树的方式遍历加载数据库信息的,即必须先把一个 包中的类的实例全部加载完毕后才可能加载其他的包信息。 系统配置加载:数据库系统启动之初,系统将事先加载系统配置文件,即 sys.xml 文件,该文件位于源根目录下(Java 版本) 。通过加载此文件,系统将 获知系统的一些属性信息如系统名,端口号,管理员信息以及包的存储路径。 包信息加载:在获取了各包的存储路径后,系统将开始扫描这个包路径。 首先先加载包配置文件即包文件夹根下的 package.xml 文件。从而获取该 包的相关信息,包括包的 ID 号、包名、用户列表、可用最大空间等。然后扫描 该文件夹下所有以“.class”结尾的文件夹,开始加载类的信息【13】。 类信息加载:紧接着上一步,系统开始从类文件夹中加载类的信息。首先 读取类文件夹根下的 class.xml 文件,并获取类的字段,方法等信息。然后开 始扫描所有以“.object”结尾的文件夹,开始加载对象信息。 19 对象信息加载:粗略的将对象的 ID 信息与地址的对应的信息加载到内存中 即完成本次深度遍历加载过程。然后开始加载其它类,其它包的信息。 提供服务:当系统全部加载所有信息后开始提供数据库系统服务。 3.2.53.2.5 外部接口外部接口 从模式中获取相关操作信息,然后扫描内存获取数据库系统信息,再根据 这些信息进行相关操作,最后将操作的结果返回给模式。 3.33.3 模式(中层设计)模式(中层设计) 3.3.13.3.1 内部接口内部接口 本接口主要是用来与内模式打交道的。接口将从管理者哪里接受指令并转 换为内模式可识别的具体操作,然后交由内模式处理,然后将结果返回给管理 者。具体情况请见实现篇。 3.3.23.3.2 管理者管理者 在系统启动时便加载了必要的信息并保存在内存中,主要供编译器调用相 关信息。 3.3.33.3.3 执行者执行者 相应编译器发来的伪字节码,采用命令模式生成一些调用策略。这里指的 是为将编译器发来的具体操作通过反射模式调用 Java 中的相关类的相关方法执 行调用方法。其中还要引用管理者持有的数据库信息资源。具体情况请见系统 实现篇。 3.3.43.3.4 编译器编译器 编译器是本系统的重头戏,主要包括以下几个功能(编译器的具体设计见 系统实现中,因为其比较依赖与语言以及技巧): (1)词法分析器 这是 OODB 语言语句进入的第一步,首先,识别所有标识符和关键字,将其 返回给语法分析器。词法分析器将使用外部描述文件来定义,该文件是一个 XML 文件,文件示例如下: 20 左大括号 1 右大括号 2 左中括号 3 右中括号 4 (2)语法分析器 21 检查看有没有缺括号,漏定义等。如果成功,则进入语义分析器。 (3)语义分析器 对照管理者提供的数据库系统信息,看有没有语义错误,没有则进行优化 处理。 (4) 生成伪字节码 如果以上几关都过了,则生成字节码文件(其实是机器内部实现的方法调 用字符串命令,具体请见系统实现。 3.3.53.3.5 外部接口外部接口 用于接收来自外模式的信息(信息仅包含 OODB 语言程序) ,然后转发给编 译器。 3.43.4 外模式(外层设计)外模式(外层设计) 3.4.13.4.1 内部接口内部接口 用于将信息转发给模式中的外部接口。 3.4.23.4.2 组织者组织者 获取操作信息,提取信息,包括提取 OQL 程序、用户名、密码、IP 和时间 等信息并进行验证,通过则命令内部接口将 OQL 程序转发给模式,并记录日志。 3.4.33.4.3 接收者接收者 通过 Socket 接受来自客户端的命令。 3.53.5 OODBOODB 语言设计语言设计 这里设计的 OODB 语言将模仿 Java 的语法,同时也用/行注释和/*/段注释 形式进行注释。下面分别介绍符号表 3-3、关键字表 3-4 和匹配式表 3-5。 表 3-3 符号表 符号正规表达式匹配规则符含义序号 左大括号1 22 右大括号2 左中括号3 右中括号4 (左括号5 )右括号6 +加号7 -减号8 *乘号9 /除号10 =等号11 大于号12 =大于等于号13 小于14 =小于等于15 !非号16 !=!=不等于号17 |或号18 23 #与号19 .点号20 “字符串分割符号21 +自增 122 -自减 123 +=+=加并赋值24
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年随州辅警协警招聘考试备考题库及答案详解(必刷)
- 2023年鹤壁辅警协警招聘考试真题及答案详解(各地真题)
- 2023年酒泉辅警协警招聘考试真题附答案详解(轻巧夺冠)
- 2023年石嘴山辅警协警招聘考试真题附答案详解(黄金题型)
- 2024年克州辅警招聘考试题库及参考答案详解1套
- 2024年吉安辅警招聘考试真题(含答案详解)
- 2024年周口辅警协警招聘考试备考题库含答案详解(轻巧夺冠)
- 2024年宿州辅警协警招聘考试备考题库附答案详解(考试直接用)
- 2024年临夏州辅警招聘考试真题含答案详解(综合卷)
- 2024年丽江辅警协警招聘考试真题及参考答案详解1套
- 2024年江苏公务员录用考试历年真题省考申论C类卷试题及名师答案解析
- 新物料打样管理办法
- 新生儿胆道闭锁超声检查诊断
- 北京市中小学生天文观测竞赛-天文知识竞赛(小学组)赛题50题
- 内蒙古电力建设定额站2025年第二季度配电网设备材料编审指导价
- 千万工程培训课件
- 欠款追缴活动方案
- 医院陪护服务流程
- 2025年江苏省高考化学试卷真题(含答案详解)
- 毕业设计(论文)-快递送货无人车结构及控制系统设计
- 2024年湖北省建始县安监局公开招聘试题含答案分析
评论
0/150
提交评论