目录
二阶段提交协议(Two-phase Commit,即2PC)
数据库的基本知识
数据库解决了五个问题:
- 数据正确性问题
- 数据易用性问题
- 数据完整性问题
- 安全问题
- 性能问题
数据库技术的演进
- 分布式数据库
- 面向对象数据库
- NoSQL数据库
- 数据仓库、大数据
数据库系统的组成
硬件组成
- 计算机: CPU, 内存, 磁盘
- 网络
软件组成
- 操作系统
- 数据库管理系统(DBMS)
- 工具软件(Facilities)
- 应用软件
数据库、数据库管理系统(DBMS)、数据库应用程序三者合起来构成数据库系统
存储数据库并运行DBMS的计算机叫数据库服务器
数据库服务器包括:数据库管理系统、数据库和操作系统,通过网络传递给数据库应用程序和用户,应用程序的API接口有ODBC/JDBC
三级模式结构及二级映像实现了数据库系统的数据独立性即物理独立性和逻辑独立性
外模式
它是用户能够看见和使用的局部数据的逻辑结构和特征的描述,是用户的数据视图,是与某一应用程序有关的数据的逻辑表示
概念模式
是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,与具体的应用程序和应用程序开发工具无关
内模式
是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
外模式是概念模式的子集
数据(单元)
- Schema
- Data
数据库发展的重要时间节点
- 1970年,E. F. Codd提出关系数据模型
- 1976年,Peter Chen提出了基于实体-关系建模的数据库设计方法。
- 1983年,SQL成为ANSI标准,1984年成为ISO标准。
- 1992年,微软推出ODBC。
- 1994年,Sun公司推出了JDBC。
数据模型发展的几个阶段
- 第一代的网状、层次型数据库系统
- 第二代的关系型数据库系统
- 第三代的以面向对象模型为主要特征的数据库系统
- 第四代以分布式处理、互联网应用为特征的大数据技术
全球知名数据库
- Oracle公司的Oracle
- Microsoft的SQL Server
- IBM公司的DB2
- MySQL
国产数据库
- 南大通用GBASE数据库
- 达梦DM数据库
- 人大金仓KingbaseES数据库
- 腾讯,基于MySQL,研发出了TDSQL时序数据库
- 华为,基于PosgreSQL,研发出了GaussDB数据库
- 阿里巴巴,研发出了OceanBase数据库(蚂蚁),支撑支付宝业务,还研发了PolarDB云数据库(阿里)
NOSQL数据库
流行的NoSQL产品包括:
- 列存储型的HBASE
- 文档型的MongoDB
- 键值对型的Redis(全内存)RocksDB(磁盘)
- 图数据模型的Neo4j
- 时序数据库、对象数据库
分布式数据库
特点
- 除了数据的逻辑独立性和物理独立性外,还有数据分布独立性
- 集中与自治相结合的控制系统,各局部的DBMS可以独立地管理局部数据库,系统又设有集中控制结构
同构分布式数据库系统
所有站点都使用相同的数据库管理系统软件,它们彼此了解,共同合作处理用户的请求。在这样的系统中,本地站点放弃了它们的部分自治性,以修改模式或者数据库管理系统软件这方面的权利的方式。为使事务处理能在多个站点间进行,数据库管理系统软件还必须和其他站点合作来交换与事务有关的信息。
异构分布式数据库系统
不同站点可能使用不同的模式和不同的数据库管理系统软件。站点之间可能彼此并不了解,在合作处理事务的过程中,它们可能仅提供有限的功能。模式的差别经常是查询处理中的主要问题,而软件的差异成为处理访问多站点事务的一个障碍。
目的
- 实现信息资源共享
- 提高数据处理性能
- 实现容错,保证可用性
- 实现数据操作的简单性
透明性
分布式数据库系统的用户不要求知道数据的物理位置在哪里或者在特定本地站点上的数据应如何访问。
它有如下几种形式
- 分片透明性:用户不要求知道关系是如何分片的
- 复制透明性:在用户看来,每个数据对象逻辑上都是唯一的。分布式系统可能为了提高系统性能或者数据可用性而复制对象。用户不必关心什么数据对象被复制了,也不必关心副本存放在何处。
- 位置透明性:用户无须知道数据的物理位置。只要用户事务提供数据标识符,分布式数据库系统应能够找到任何数据
二阶段提交协议(Two-phase Commit,即2PC)
假设一个从站点S发起的事务T,设S的事务协调器是C。当T完成其执行时(即执行T的所有站点都通知C已完成了T的执行),C启动2PC协议。
阶段1
C将记录<prepare T>加到日志中,并强制日志写入稳定存储器上。接着它将一条prepare T消息发送到执行T的所有站点上。当收到这样一条消息时,站点上的事务管理器确定它是否愿意提交T中属于它的那部分。
- 如果答案是“不”,事务管理器就把记录<no T>加到日志中,然后通过向C发送一条abort T消息来作为响应。
- 如果答案为“是”,事务管理器就把记录ready T>加到日志中,并将日志(包括所有与T相关的日志记录)强制写入稳定存储器上。然后事务管理器通过向C回复一条ready T消息作为回答。
阶段2
当C收到所有站点对prepare T消息的回答时,或者自prepare T消息发送后经过了一个预定的时间间隔时,C就可以确定是将事务T提交还是中止。如果C接收到来自所有参与站点的ready T消息,那么事务T可以提交。否则,事务T必须中止。