1、第六章数据库设计6.1 数据库设计的步骤 6.2 需求分析 6.3 概念结构设计 6.4 逻辑结构设计 6.5 数据库物理设计 6.6 数据库实施 6.7 数据库运行维护 6.1 数据库设计的步骤l 需求分析l 概念结构设计设计局部视图集成视图 l 逻辑结构设计设计逻辑结构优化逻辑结构l 数据库物理设计设计物理结构评价物理结构l 数据库实施数据库系统的物理实现试验性运行 l 数据库运行维护6.2 需求分析 6.2.1 需求分析的任务l 需求分析的任务 通过详细调查现实世界和要处理的对象(组织、部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新的系统功能。新系统应
2、该考虑可扩展性。l 需求分析的重点 调查、收集与分析用户在数据库管理中的信息要求、处理要求、安全要求和完整性要求。l 需求分析的结果 DD(数据字典)DFD(数据流图)调查组织机构总体情况熟悉业务活动明确用户需求确定系统边界概念设计需求分析DDDFD用户 数据库设计人员6.2.2 需求分析的方法l 调查与初步分析的步骤调查与初步分析的步骤 调查组织机构情况 调查各部门业务活动情况 在熟悉业务基础上,协调用户明确对新系统得要求 对上述结果初步分析,确定新系统得边界,及人与计算机得工作边界。l 常用的调查方法常用的调查方法 跟班作业 开调查会 请专业人事介绍 询问 设计调查表请用户填写 查阅记录l
3、 分析用户需求的方法分析用户需求的方法 自顶而下,结构化分析方法(Structured Analysis,简称SA)自底向上数据流图的表示数据流图的表示数据来源数据输出处理数据存储数据流数据流6.2.3 数据字典 l 数据字典是详细数据收集和数据分析的结果。包涵以下内容:数据项:不可再分的数据单位。对数据项的描述包括:数据项名、含义说明、别名、数据类型、长度、取值范围、取值含义、与其他数据项的逻辑关系 数据结构:反映了数据之间的组合关系。数据结构的描述包括:数据结构名,含义说明,组成(数据项、数据结构)数据流:数据流是数据结构在系统内传输的路径。数据流的描述包括:数据流名,说明,数据流来源、数
4、据流去向、组成(数据结构)、平均流量、高峰期流量等 数据存储:数据存储是数据结构停留或保存的地方,也就是数据流的来源和去向之一。数据存储的描述:数据存储名、说明、编号、流入数据流、流出数据流、组成(数据结构)、数据量、存取方式 处理过程:处理过程的处理逻辑一般用判定树和判定表来描述。数据字典一般只是描述说明性信息。描述包括:处理过程名、说明、输入(数据流)、输出(输出流)、简要说明6.3 概念结构设计6.3.1 概念结构的设计方法与步骤 l 自顶向下 先定义全局概念结构,再细化l 自底向上 先定义局部应用的概念结构,再集成起来,得到全局概念结构l 逐步扩张 先定义核心概念结构,再逐步向外扩充,
5、直至全局概念结构。l 混合策略 即使用自顶向下、自底向上相集合6.3.2 数据抽象与局部视图设计 l 选择局部应用l 逐一设计分ER图 属性与实体很难有截然划分的界线l属性不能再具有需要描述的性质 l属性不能与其他实体具有联系 抽象数据设计局部视图集成视图逻辑结构设计需求分析DFDDD分ER图总ER图概念结构设计6.3.3视图的集成 l 合并分ER图,生产初步ER图,合并分ER图过程中存在的冲突有:属性冲突:属性域冲突、属性单位冲突 命名冲突:同名异义,异名同义 结构冲突:同一对象抽象不同,同一实体属性不同,联系类型不同l 修改与重构,生成基本ER图。初步ER图消除不必要冗余后得到基本ER图。
6、视图集成后形成整体概念结构,必须满足 结构内部必须具有一致性,不能有互相矛盾的表达 整体结构必须能反映原来的每一个视图结构,包括实体,属性和联系 结构能满足需求分析阶段的所有需求合并(消除冲突)修改与重构(消除冗余)分ER图基本ER图初步ER视图分析规范化理论集成视图6.4 逻辑结构设计l 逻辑结构设计的任务任务 将概念结构转化为某一数据模型 l 逻辑结构设计的步骤步骤 将概念模型转化为一般的关系、层次、网状模型。将转化来的关系、层次和网状模型向特定的DBMS支持下的数据模型转换。对数据模型进行优化6.4.1 ER图向数据模型转换l 转化的原则原则 一个实体型转化为一个关系模式。一个m:n的联
7、系转化为一个关系模式,码为各实体码组合。一个1:n的联系 转化为一个独立的关系模式,码为n端实体码;也可以与n端关系模式合并。一个1:1的联系转化为一个独立的关系模式,每个实体的码均是候选码;也可以与任一端关系模式合并。三个及三个以上实体间的一个多元联系转化为一个关系模式。同一实体集的实体间的联系即自联系,也可按上面的联系方式处理。具有相同码的各模式可以合并。转化为一般数据模型转化为特定DBMS数据模型基本ER视图转换规则特定DBMS特定限制概念结构设计优化模型数据库物理设计优化方法规范化理论逻辑模型逻辑结构设计6.4.2 数据模型的优化 l 确定数据依赖l 对各个关系模式间的数据依赖进行极小
8、化处理,消除冗余的联系。l 按照数据依赖理论对关系模式逐一进行分析考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。l 按照需求分析阶段得到的各种应用对数据处理的要求,分析这样的应用环境这些关系模式是否合适,确定是否要对它们进行合并和分解。l 对关系模式进行必要的分解和合并。6.4.3设计用户子模式 l 使用更符合用户习惯的别名;l 针对不同级别的用户,定义不同的外模式,以满足系统对安全性的要求;l 简化用户对系统的使用;6.5 数据库物理设计 6.5.1确定数据库的物理结构 l 确定数据的存储结构。综合考虑存取时间、存储空间利用率和维护代价。聚簇的使用条件:
9、通过聚簇码进行访问是该关系的主要应用。对应与每个聚簇码的平均元组数既不太少,也不太多。聚簇码值相对稳定,以减少修改码值引起的维护开销l 设计数据存取路径。主要是如何建立索引。l 确定数据存放位置。主要是日志/数据、索引/数据的存放尽量分开。l 确定系统配置。打开对象数、缓冲区大小、时间片大小、锁数目等 确定数据库的物理结构逻辑结构设计评价数据库的物理机构数据库实施物理模型数据库物理设计逻辑模型6.5.2评价物理结构 l 需要权衡的因素:时间效率 空间效率 维护代价 用户需求l 评价数据库的方法完全依赖于选用的DMBS6.6 数据库实施 l 数据库实施的主要工作包括 用DDL定义数据库结构 组织
10、数据入库 编制调试应用程序 数据库试运行:包括功能测试和性能测试 定义数据库结构数据库物理设计数据库试运行数据库运行与维护数据库实施物理模型编制与调试应用程序数据装载数据库系统6.7 数据库运行维护 l 本阶段主要是DBA的工作 1、数据库的转储和恢复 2、数据库的安全性完整性控制 3、数据库性能的监督、分析和改进 4、数据库的重组织和重构造 l数据库重组:不会改变数据逻辑和物理结构,只是重新安排存储,回收垃圾等 l数据库重构:应用需求改变,要求改变逻辑设计,如表结构等,就是重构 l数据库系统重新设计:数据库重构的程度是十分有限的,当重构的代价太大时,就表示现有的数据库系统的生命周期已经结束,
11、应该重新设计新的数据库系统了 第七章关系数据库管理系统实例7.1 关系数据库管理系统产品概述 7.2 ORACLE数据库 7.3 Sybase数据库 7.4 INFORMIX数据库 7.5 DB2数据库 7.6 INGRES数据库 7.7*两层及多层应用系统体系架构 7.1 关系数据库管理系统产品概述 l 对关系数据库支持的三阶段 70年代,支持数据结构和基本数据操作(选择、投影、连接等),DBASE等。80年代,支持国际标准SQL,甚至超出(TSQL,PL/SQL),Oracle等。90年代,加强安全性和完整性 l 运行环境发展的三阶段 一般多为多用户系统的大中小型机器上运行的单机RDMBS
12、,微机上的均为单用户的,因为微机DOS是单用户操作系统 两个方向发展:一是提高移植性,使之在多种硬件和操作系统上;二是数据库联网,向分布式系统发展,支持多网络协议 在网络环境下,分布式数据库和客户/服务器结构数据库系统的推出。追求数据库的开放性(可移植性portability、可连接性connectivity、可伸缩性scalability)。l RDBMS的系统构成 变化 早期的RDBMS主要实现DDL、DML、DCL等基本操作以及数据存储组织、并发控制、安全性完整性检查、系统恢复、数据库的重组和重构 后期的RDBMS以数据管理的基本功能为核心,开发外围软件系统,包括FORMS、REPORT
13、、GRAPHICS等 l RDBMS对应用的支持 第一阶段主要是用于信息管理,对联机速度要求不高 第二阶段主要针对联机事务处理,一提高事务吞吐量;二缩短联机响应时间 RDBMS的改善技术主要有:l性能l可靠性 7.2 ORACLE数据库 7.2.1 Oracle公司简介 l 成立于1977年l 1979年,Oracle第一版是世界上首批商用RDBMS之一。l 1992 Oracle7、1997年 Oracle8、随后Oracle 9i、Oracle 10g 7.2.2 Oracle产品特性 l 兼容性(compatibility):兼容其他厂商的数据库兼容l 可移植性(portability)
14、:可以安装70多种机器,多种操作系统l 可联结性(connectability):支持多种网络协议,如TCP/IP、DECnet等l 高生产率(high productivity):提供PRO*C、Forms等接口与工具。l 开放性:前述特性保障了其开放性 7.2.3 Oracle数据库服务器产品 l 标准服务器 多进程、多线程体系结构 为提高性能改进核心技术:无限制行级锁、无竞争查询、多线程顺序号产生 高可用性 SQL的实现:符合ISO的SQL标准 l 并行服务器选件(Oracle Parallel Server)和并行查询(Parallel query Option)l 分布式选件(dis
15、tributed Option)l 过程化选件(Procedural option):提供用户自定义数据库对象 7.2.4 Oracle工具l Developer/2000 ORACLE Forms:屏幕工具 ORACLE Reports:报表工具 ORACLE Graphics:图形工具,如直方图等。ORACLE Book:用于生产联机文档 l Designer/2000 BPR:用于过程建模 Modellers:用于系统设计与建模 Generators:应用生产器。l Discoverer/2000:OLAP工具,应用于数据仓库l Oracle Office:办公自动化。l SQL DBA
16、:用户动态性能监控。l ORACLE 预编译器 Proc*Cl ORACLE调用接口OCI 7.2.5 Oracle连接产品 l SQL*Net:负责Client和Server的通讯l Oracle多协议转换器l Oracle 开放式网关:利用透明网关和过程化网关,可以实现对其他数据库的直接7.2.6 Oracle数据仓库解决方案 l OracleOLAP Oracle Express Server Oracle Express Objects Oracle Express Analyzer 7.2.7 Oracle 的Internet解决方案 l Oracle WebServer 2.0 7
17、.3 Sybase数据库 7.3.1 Sybase公司简介 l 1984年成立,INGRES大学版本的主要设计人员之一Dr.Robert Epstein是Sybase的创始人之一l 致力于C/S数据库体系结构以满足OLTP应用要求,1987年推出SYBASE SQL Server l Sybase 11.0、11.5、11.9、12.0、12.5都是很优秀的版本 7.3.2 Sybase关系数据库产品 l 数据库服务器:Sybase SQL Server Sybase MPP Sybase IQ Sybase Anywherel 中间件:Server Open Client Open Serv
18、er OmniCONNECT ObjectCONNECT for C+Directconnectl 工具:PowerBuilder SDesignor Optima NetImpact Studio Internet Developer Toolkit for PowerBuilder 7.3.3 Sybase数据库服务器(Adaptive Server)l SQL Server:RDBMS,负责高速计算、数据管理、事务管理。单进程多线程体系结构 高性能 数据完整性检查和控制 加强安全保密功能,基于角色管理,提供审计支持分布式查询和更新l 备份服务器(backup server):附属于SQL
19、 Server,完成对数据的备份工作 支持联机备份:备份时不影响SQL Server处理 支持转储分解:允许使用多台外设进行转储。支持异地转储:DBA可以管理多个远程服务器的备份和装载。支持限值转储:日志转储可以在限值事件触发下自动完成。l SYBASE MPP:多处理器并行服务器产品l SYBASE IQ:高性能决策支持和交互式数据集成产品。l SYBASE SQL Anywhere:基于PC的具有SQL功能的分布式数据库管理系统 7.3.4 Sybase开发工具开发工具 l PowerBuilder:基于图形界面的基于图形界面的C/S前端应用前端应用开发工具。开发工具。l PowerDes
20、igner:一组紧密集成的计算机辅助一组紧密集成的计算机辅助软件工程(软件工程(CASE)工具,用于数据库的分析、工具,用于数据库的分析、设计维护、建立文档和创建数据库等功能。设计维护、建立文档和创建数据库等功能。l PowerJ:开发基于开发基于java应用的快速开发工具。应用的快速开发工具。l Power+(Optima+):):RAD C+C/S和和Internet面向对象的开发工具。面向对象的开发工具。l SQL Manager:可视化的系统和数据库管理工可视化的系统和数据库管理工具。具。7.3.5 Sybase中间件 l Open Client/Open Server:构成Sybas
21、e开放式C/S互连基础。Open Client用于建立有效的前端应用;Open Server是一个服务构造工具,用于集成企业的资源与服务。l Jaguar CTS:是jaguar组件事务服务器(component transaction server)简称,专门为NetOLTP应用设计的事务服务器l Replication Server:复制服务器。l OmniCONNECT:不同数据库管理系统(都是sybase)之间完全透明的数据集成。l DirectConnect:用于同非Sybase数据源建立联系的访问服务器。7.3.6 Sybase数据仓库解决方案 Sybase Web.Works 7
22、.4 INFORMIX数据库数据库l 1988年Infomix推出第一代数据库服务器INFORMIXTURBO后来被IBM收购。7.5 DB2数据库数据库l DB2是IBM的数据库管理系统,起源于System R和System R*。7.6 INGRES/PostgreSQL数据库数据库l INGRES公司成立于1980。其技术源于加州伯克利大学。PostgreSQL的前身。l PostgreSQL 可以说是最富特色的自由数据库管理系统,过于学院味,因为首先它的目的是数据库研究,因此不论在稳定性,性能还是使用方便方面都比商用数据库欠缺。7.7 MS-SQL Server数据库数据库l MS-S
23、QL Server是window平台最流行的中型关系数据库DBMS。7.8 MySQL 数据库数据库l Mysql数据库是非常流行的开放源码DBMS,以性能卓越而著称,可以运行与各种OS平台,为了性能而较大多数DBMS精简。第八章 现代数据库技术及进展 8.1 数据库发展概述 8.2 数据库技术与其他技术的结合 8.3 现代数据库技术研究 8.1 数据库发展概述 层次、网状数据库关系数据库专用或通用数据库面向对象数据库关系数据库扩充知识库对象关系数据库XML数据库Web数据库空间和时态数据库嵌入移动数据库物联网、云数据库智能数据库第一代数据库第二代数据库现代数据库8.2 数据库技术与其他技术的
24、结合 8.2.1分布式数据库 l 分布式数据库特点:数据的物理分布性 数据的逻辑整体性 数据的分布独立性(透明性):除了物理独立性、逻辑独立性,用户不必关心数据的分布细节。场地自治与协调:各结点能执行局部应用请求,也能通过网络处理全局请求。数据的冗余及冗余透明性:适当冗余提高系统效率和可靠性,冗余对用户透明 l 分布式数据库优点:分布式控制:减少通信开销 数据共享:全局和局部 可靠性和可用性加强:可以根据冗余数据恢复某一场地数据 性能改善:数据分片,减少资源竞争 可扩充性好:因分布独立性,不会影响用户程序。l 分布式数据库缺点:复杂:主要是自治与协调。开销大:硬件、通信、冗余开销、安全性、完整
25、性和并发控制开销l 分布式数据库体系结构:(若干局部数据模式一个全局数据模式)全局数据模式l全局外模式l全局概念模式l分片模式:水平、垂直、混合分片;完全性、可重构性、不相交性。l分布模式 局部数据模式 l局部外模式局部概念模式局部内模式 四级映象l全局外模式与全局概念模式之间对应关系。l全局概念模式(关系)与全局分片模式(片断)之间对应关系l全局分片模式(片断)与全局分布模式(网络结点)之间的对应关系。l全局分布模式与局部概念模式之间的映射8.2.2并行数据库l 并行计算机体系类型:紧耦合全对称多处理器(SMP)所有CPU共享内存与磁盘(share memory)。松耦合群集机系统,所有CP
26、U共享磁盘(share disk)大规模并行处理(MPP),所有CPU有自己内存和磁盘无共享资源(share nothing)l 相应并行数据库的体系结构:共享内存(share memory)(SMP)共享磁盘(share disk)无共享资源(share nothing)l 并行数据库的粒度:不同事务间并行 同一事务不同查询间并行 同一查询不同操作间并行 同一操作内并行 8.2.3多媒体数据库 l 主要特征:能够表示多种媒体数据。能够协调处理各种媒体数据。应提供比传统数据管理系统更强的适合非格式化数据查询的搜索功能。应提供特种事务处理与版本管理能力。8.2.4主动数据库l 目标是提供紧急情况
27、及时反应能力,同时提高数据库模块化程度。l 通常采用方法是在传统数据库中嵌入ECA(事件条件动作)规则。l 要解决的问题:数据模型和知识模型 执行模型 条件检测 事务调度 体系结构 系统效率 8.2.5对象关系数据库l 对象关系数据库兼有关系数据库和面向对象数据库的两方面特征。即在关系数据库基础上提供一下功能:允许扩充基本数据模型 SQL中支持复杂对象 支持子类对超类的特性继承 提供通用规则系统 8.3 现代数据库技术研究 1)web数据库 在互联网中以web查询接口方式访问的数据库资源。2)XML数据库关系数据库和XML结合的一个重要方向3)数据仓库从传统的事务处理到决策、统计型发展的数据库
28、技术。数据库处理分两类:操作型(OLTP)和分析型(OLAP)4)主动数据库结合人工智能和面向对象技术而产生的新技术。5)嵌入式移动数据库微型化方向发展,应用于嵌入式系统和移动通信领域。6)空间和时态数据库地理信息系统在计算机区里存储介质上存储的应用相关的地理空间数据的总和。体现了随时间的变化关系。7)内存数据库内容价格大幅度降低,对时间要求的苛刻,使得数据库常驻内存。8)物联网数据库互联网基础上的延伸和扩展的网络,物品与物品的信息交换和通信要求“数据海”物联网数据库9)云数据库广义云计算的一种高级应用10)知识与智能数据库知识工程中结构化、易操作全面有组织的知识集群。Redisl 一个开源的
29、KV存储解决方案,用于构建高性能,可扩展的Web应用程序。Redis将其数据完全保存在内存中,仅使用磁盘进行持久化。与其它键值数据存储相比,Redis有一组相对丰富的数据类型 Redis可以将数据复制到任意数量的从机中Redis cluster结构Redis的优点的优点l 异常快异常快 每秒约110000次 SET操作,81000次GET操作l 丰富的数据类型丰富的数据类型 string,hash,list,set及zsetl 操作具有原子性操作具有原子性 确保如果两个客户端并发访问,Redis服务器能接收更新的值。l 多实用工具多实用工具 Redis是一个多实用工具,可用于多种用例,如:缓存
30、,消息队列,应用程序中的任何短期数据(web应用程序中的会话,网页命中计数等)Redis安装l Window 下安装下安装 下载地址:下载地址:https:/ cmd 窗口 使用cd命令切换目录到 C:redis 运行 redis-server.exe redis.windows.conf。Redis服务运行界面利用redis-cli命令测试l 这时候另启一个cmd窗口。l 切换到redis目录下运行 redis-cli.exe-h 127.0.0.1-p 6379。设置键值对 set myKey abc 取出键值对 get myKeyLinux安装l 下载地址:下载地址:http:/redi
31、s.io/downloadRedis PHP 字符串实例字符串实例l PHP redis 驱动下载地址为:https:/ 使用使用 Redisl 需要下载驱动包 下载下载 jedis.jarOceanBase分布式数据库系统l 是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由alibaba核心系统研发部等部门共同完成l 设计和实现的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图l 主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入现有数据库的弊端l 数据和负载增加后添加机器的操作比较复杂,
32、往往需要人工介入;l 有些范围查询需要访问几乎所有的分区,例如,按照user_id分区,查询收藏了一个商品的所有用户需要访问所有的分区;l 目前广泛使用的关系数据库存储引擎都是针对机械硬盘的特点设计的,不能够完全发挥新硬件(SSD)的能力。l Google Bigtable系统虽然解决了可扩展性问题,但往往无法支持事务设计思路l 在线业务的数据量十分庞大,例如几十亿条、上百亿条甚至更多记录,但最近一段时间(例如一天)的修改量往往并不多,通常不超过几千万条到几亿条,因此,OceanBase采用单台更新服务器来记录最近一段时间的修改增量,而以前的数据保持不变,以前的数据称为基线数据。l 基线数据以
33、类似分布式文件系统的方式存储于多台基线数据服务器中,每次查询都需要把基线数据和增量数据融合后返回给客户端。这样,写事务都集中在单台更新服务器上,避免了复杂的分布式事务,高效地实现了跨行跨表事务l 更新服务器上的修改增量能够定期分发到多台基线数据服务器中,避免成为瓶颈,实现了良好的扩展性。l 更新服务器的硬件配置相对较好,如内存较大,网卡及CPU较好l 最近一段时间的更新操作往往总是能够存放在内存中,在软件层面也针对这种场景做了大量的优化。体系架构Oceanbase的组成l 客户端 用户使用OceanBase的方式和MySQL数据库完全相同,支持JDBC、C客户端访问,等等。基于MySQL数据库
34、开发的应用程序、工具能够直接迁移到OceanBasel RootServer 管理集群中的所有服务器,子表(tablet)数据分布以及副本管理。RootServer一般为一主一备,主备之间数据强同步l UpdateServer 存储OceanBase系统的增量更新数据。UpdateServer一般为一主一备,主备之间可以配置不同的同步模式。部署时,UpdateServer进程和RootServer进程往往共用物理服务器l ChunkServer 存储OceanBase系统的基线数据。基线数据一般存储两份或者三份,可配置l MergeServer 接收并解析用户的SQL请求,经过词法分析、语法分析、查询优化等一系列操作后转发给相应的ChunkServer或者UpdateServer。如果请求的数据分布在多台ChunkServer上,MergeServer还需要对多台ChunkServer返回的结果进行合并。客户端和MergeServer之间采用原生的MySQL通信协议,MySQL客户端可以直接访问MergeServer多机房体系机构 相关链接l http:/code.taobao.org/svn/OceanBase/l https:/ https:/ 谢!