第十三章 网络与数据库
1、分布式数据库的目标: 一是,借助网络把分散在不同地域的数据管理起来;
另一是,各个地域的数据库系统仍能支持本地应用。
分布式数据的定义: 分布性;逻辑相关性;场地透明性;场地自治性。全部满足这些条件的数据库系统称为完全分布式数据库系统。
分布式数据库的特点:
1)数据的集中控制性;
2)数据独立性;
3)数据冗余可控性;
4)场地自治性;
5)存取的有效性--分布式数据库系统中的查询优化有两个级别。一个是全局优化,决定在多个副本中选取合适的场地副本,使得场地间的数据传输量及次数最少,从而减少系统通信开销;另一个是局部优化,这与传统的集中式数据库中的优化是相同的。
上面的这些特点中,前3点都是数据库系统优于文件系统的方面,并且除第4点以外,传统数据库也应该具有这些特点。
2、分布式数据库的体系结构
(A)分布式数据库系统的模式结构:目前国际上还没有统一的标准。国内提出的4层模式结构如下:全局外层、全局概念层、局部概念层、局部内层。
1)全局外层 --分布式数据库的全局视图是针对分布式数据库特定的全局用户,是对分布式数据库的最高层的抽象。
2)全局概念层--是分布式数据库的整体抽象,但比集中式的概念层有更多的描述。全局概念层有3种模式描述信息,全局概念模式、分片模式、分配模式。
(1)全局概念模式:描述分布式数据库全局数据的逻辑结构;
(2)分片模式:描述全局数据逻辑划分的视图,每一个逻辑划分就是一个分片;
(3)分配模式:是分片后的物理分配视图。
因此分布式数据库的定义语言除了需要提供概念模式的定义语句外,还要提供分片模式和分配模式的定义语句。全局概念模式到分片模式的映射是一对多的;分片模式到分配模式的映射是一对多的或一对一的,这要由数据分布的冗余策略决定。作为GDBA,将负责全局数据结构的定义、逻辑分布的定义和物理分布的定义。
3)局部概念层--该层由局部概念模式描述,全局概念模式经逻辑划分后被分配在各局部场地上。
4)局部内层 --相当于集中式数据库的内层。
4层结构的全局数据库和局部数据库分离、数据独立性、透明性、数据冗余控制都体现了分布式数据库的特点。
(B)数据分布:数据的划分和放置是数据分布问题的两个重要方面。有几种处理策略,集中式、分割式、复制式和混合式。
(C)数据分片:也称数据分割。对于关系数据库,数据分片有3种方法,水平分片(元组)、垂直分片(属性)、混合分片(水平和垂直)。水平划分元组为若干不相交的子集,可以通过合并操作恢复全局关系。垂直划分关系的属性为若干子集,要求所有属性都要被划分且每一垂直片都包含该全局关键字,可以通过连接操作恢复该全局关系。
数据分片要遵守的原则为:完备性条件;可重构条件;不相交条件(关键字除外)。
(D)分布透明性:也称为分布独立性,由高到低分成了3个级别,分片透明性--分配透明性--局部数据模型透明性。
局部数据模型透明性,也称为局部映像透明性,是透明性的最底层,在4层模式中处理分配模式和局部概念模式之间。全局数据模型与每个节点上局部数据库的数据模型的转换是由分配模式与局部概念模式之间的映像实现的。当某个节点上的数据库的数据模型改变时,只要改变分配模式到该节点局部概念模式之间的映像即可,应用程序不受影响,从而实现了局部数据模型透明性。
(E)分布式数据库管理系统DDBMS:有两大类,综合型和联合型。前者是新建的一个分布式数据库,后者是整合已经存在的多个节点的数据而形成。联合型又可以分为同构型和异构型。
分布式数据库管理系统由4部分组成:LDBMS、GDBMS、GDD(全局数据字典)、CM(通信管理)。
一个完全的分布式管理系统要符合12条规则:场地自治性;非集中式管理;高可用性;位置独立性;数据分割独立性;数据复制独立性;分布式查询;分布式事务管理;硬件独立性;操作系统独立性;网络独立性;数据库管理系统独立性。
注意理解分布式数据库系统结构模式图,和分布式数据库管理系统结构图。
3、分布式查询处理和查询优化
与集中式数据库环境中的查询相比,分布式数据库环境中的查询还要考虑到:数据、信息传输的延迟问题;网络中存在多处理器时的并行数据处理机会。这两点都会影响到查询的速度。
查询优化器,在分布式数据库系统中它的任务是控制和加快查询的执行与数据传输的过程。在分布式查询处理技术中,查询优化的基本类型通常包括2类:针对查询执行代价的优化,和针对查询响应时间的优化。
查询执行代价优化的目标是,使查询执行所使用的系统资源尽量少(最便宜);
查询响应时间优化的目标是,尽量减少响应时间而不计较系统资源的消耗(最快)。
4、分布事务管理
1)分布式事务:在分布式数据库系统中,一个分布式事务是由若干个不同站点上的子事务组成的。
2)分布式事务与集中式事务的相同特性:与集中式事务的特性相同为ACID,原子性、一致性、隔离性和持久性。
分布式事务与集中式事务的不同特性:执行特性、操作特性和控制报文。执行过程中,分布式事务要必须创建一个控制进程,协调子事务、数据及控制报文;而集中式事务仅由并行调度算法进行调度即可。操作过程中,分布式事务还要加入大量的通信原语和控制原语。集中式事务没有使用控制报文。
3)分布式数据库故障:分为节点故障(事务故障、系统故障、介质故障),通信故障(报文故障、网络分割故障)。其中报文故障包括报文错、报文丢失、报文延迟。
4)分布式数据库的恢复原则:保证事务原子性的措施称为事务故障恢复,有几个原则是,
孤立和逐步退出事务的原则UNDO;
成功结束事务原则REDO;
夭折事务的原则。(撤消全部事务,恢复到初态)
在分布式事务恢复中,本地事务的恢复和集中式事务的恢复相同,由本地事务管理器LTM执行。整个的分布式事务的恢复由LTM与DTM(分布式事务管理器)协同完成。
5)两阶段提交协议2PC(准备提交、建议提交/撤销、全局提交/撤销、确认)
在2PC中,将分布式事务的某一个代理指定为协调者,其它代理都是参与者。参与者可以进行单方面撤销。2PC可以分为两个步骤:先是表决阶段,然后是执行阶段。表决中实行一票否决。
2PC对故障的恢复:(1)场地故障 参与者在写入“建议提交”前发生故障 : --协调者等到超时后将取消事务,该参与者自行可以 终止事务。
参与者在写入“建议提交”后发生故障: --而其它参与者可以正常结束事务,该参与者 要访问协调者或其它参与者获得之前协调者作出 的决定并执行相应的操作。
协调者在写入“准备提交”后,在写入“全局提交/撤销”前发生故障:
--协调者从头恢复提交协议
协调者在写入“全局提交/撤销”后,在写入“事务结束”记录前发生故障:
--协调者恢复时要给所有的参与者重发之前的全局决定。
(2)报文丢失 丢失参与者的回答报文(建议提交/撤销): --协调者将取消整个事务
丢失“准备提交”报文: --协调者在超时后将取消整个事务
丢失“全局提交/撤销”报文: --涉案参与者将请求协调者重发该报文
丢失“确认”报文: --协调者将重发全局报文,参与者无论子事务 提交与否都要给予确认。
(3)网络分割故障,整个网络被分为2组,协调者组和参与者组。各自进行故障处理。
6)三阶段提交协议3PC(在2PC基础上增加了,全局预提交和准备就绪,两个报文,可以确认所有参与者的状态)
第一阶段,协调者向所有的参与者发“准备提交”报文,只有所有参与者都投票“建议提交”,才会进入第二阶段;
第二阶段,协调者向所有的参与者发“全局预提交”报文,只有所有参与者都投票“准备就绪”,才能进入第三阶段;
第三阶段,协调者向所有的参与者发“全局提交”报文。
3PC仅降低了阻塞发生的可能性,不是完全的非阻塞协议。
3PC对故障的恢复: 协调者发出的“准备提交”报文延迟,参与者超时而撤销子事务;
协调者等待参与者投票时超时,协调者将撤销事务;
参与者处于“赞成提交”状态,而等待全局预提交时超时,参与者将进入恢复处理过程;
参与者处于“准备就绪”状态,而等待全局提交时超时,参与者将进入恢复处理过程。
在3PC协议中,恢复处理过程惟一可以做的是就近访问一个参与者,依照协调者之前作出的决定安排自己的操作。
5、WEB数据库
WEB数据库由数据处理和资源共享这两种技术结合而成,也称为网络数据库。
WWWW下的WEB数据库,RDB增加了DB的面向对象成分、增加各种中间件(CGI、ISAPI、ODBC、JDBC、ASP),通过应用服务器解释执行各种HTML中嵌入的脚本,来解决Internet应用中数据库的显示、维护、输出及到HTML的格式转换。
WEB服务器的连接方案,有2套:服务器端方案(CGI、SAPI、ASP、PHP、JSP)和客户端方案(JDBC、DHTML)。
连接数据库的常用方法有:ODBC、DAO、RDO、ADO。ADO是DAO、RDO的简化合集。
6、应用开发平台ASP、PHP、JSP
ASP,ASP服务器被含在了IIS服务器中,ASP中使用的是VBscript,ASP安装配置简单、易学易用。ASP缺点是使用了组件带来了安全性问题,另外ASP不能跨平台使用。
PHP,简单易学,可以跨平台,具有良好的数据库交换能力,与Apache紧密结合,安全性好。缺点是安装配置复杂,并且缺少企业级的支持。
JSP,可移值性好,可以跨平台,伸缩性强大,多样化并有强大的工具支持。缺点是安装配置管理都较复杂,只适用于大型系统。
7、关于CGI(Common Gateway Interface)
是最早出现的动态网页发布技术。通过CGI接口,服务器可以向CGI程序发送信息,CGI程序也可以向服务器发送信息。可以使用任何可形成可执行程序的程序语言编写CGI程序,如C Shell、Perl、C、C++、FROTRAN和数据库语言。CGI支持ODBC方式。
8、关于ASP(Active Server Page)
ASP提供了一个在服务器端执行脚本指令的环境(包括VBscript,html,JavaScript等),脚本可以嵌入HTML中,还可以通过ActiveX控件实现更加强大的功能。
ASP通过ADO对象模块来存取数据库,只要数据具有对应的ODBC或OLE DB驱动程序。ASP提供的ADO对象模块俾昼作夜了下列6个对象和3个集合。 Connection对象
Recordset对象
Fields集合
Field对象
Command对象--返回值为Recordset对象
Parameter集合
Parameter对象
Error集合
Error对象
9、关于Servlet和JSP
Servlet是一个运行在WEB服务器中的Java程序。它从浏览器获取一个HTTP请求,动态生成内容,并把HTTP信息返回给浏览器。Servlet优点是运行在服务器端且可以更直接地访问数据库。
JSP技术通常与Java Servlet技术结合,可以在HTML或其它标记语言中嵌入Java代码段并且调用外部Java组件。JSP是一个前端的处理工具,可以使用JavaBean实现更为复杂的业务逻辑和动态功能。
JSP最大的优点是将网页的静态内容(HTML代码)和动态内容(Java代码)分隔处理,易于人员分工。
10、XML的应用
采用文件存储XML,会受到文件系统的一些限制(大小、迸发性、工具选择、版本、安全性、综合性)。
XML与数据库的数据转换:
文档的逆反回归不一致性,将数据存储到数据库时会丢失大量文档相关的信息。同样地,从数据库中检索数据并生成的XML文档,除非预定义的实体一,不包含任何字符数据和实体引用,并且同层元素和属性的出现顺序常常就是从数据库中返回数据的顺序。
XML与数据库之间传输数据,需要进行相互映射。有两种映射方式:模板驱动、模型驱动。