Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2384230
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: Oracle

2014-05-04 11:53:38

关系数据库


Oracle作为一个关系数据库,是一个符合关系模型的数据库。 关系模型有以下主要方面:

结构

定义良好的对象, 用于存储或访问数据库的数据。

操作

清楚定义的操作, 使应用程序可以处理数据库中的数据和结构。

完整性规则

完整性规则用于管理在数据库的数据和结构上的操作。

关系数据库将数据存储在一组简单的关系中。 关系是一个元组的集合。 一个元组 是一些属性值的无序的集合。
表是一个关系的二维表示, 关系由行 (元组) 和列 (属性) 的形式构成。表中的每一行具有相同的列集。 关系数据库是一个将数据存储在关系 (表)中的数据库。 例如,关系数据库可以在一个雇员表、 部门表和薪金表中存储有关公司雇员的信息。

关系数据库管理系统(RDBMS)


关系模型是关系数据库管理系统 (RDBMS) 的基础。 实际上,RDBMS将数据移入数据库、在数据库中存储和检索数据,以便应用程序能对其进行操作。 RDBMS区分下列两种类型的操作:

逻辑操作

在这种情况下, 由应用程序指定需要哪些内容。 例如,应用程序请求一个雇员的姓名,或向表中添加一个雇员记录。

物理操作

在这种情况下,由RDBMS确定如何操作,并执行该操作。 例如,应用程序对表发出查询后,数据库可能会使用索引来查找请求的行、 将数据读入内存,并执行许多其他步骤,最后向用户返回一个结果。 由RDBMS存储和检索数据,因此物理操作对于数据库应用程序是透明的。

结构 - 模式对象


RDBMS的特点之一,是物理数据存储与逻辑数据结构的独立性。 在 Oracle 数据库中,数据库模式是逻辑数据结构或模式对象的集合。 数据库模式由一个数据库用户拥有,并与用户名具有相同的名称。
模式对象是用户创建的结构,它直接引用数据库中的数据。 数据库支持多种类型的模式对象,其中最重要的是表和索引


操作 - 数据访问


对DBMS 的一个一般要求,是要遵循公认的行业标准数据访问语言。

结构化查询语言(SQL)

Structured Query Language (SQL)是一种基于集合的声明性语言,提供一个到关系数据库(如 Oracle 数据库)的接口。 相对于过程化语言(如 C)描述的是怎么做,SQL 作为非过程化的语言,它描述的是应做些什么。 用户可以指定他们所希望的结果(例如,最新的雇员名单),而不是如何获得它。 SQL 是关系数据库的 ANSI 标准语言。

PL/SQL和Java

PL/SQL 是 Oracle SQL的过程化扩展。 PL/SQL 与Oracle 数据库集成,使您能够使用所有的 Oracle 数据库的 SQL 语句、 函数、和数据类型。 您可以使用 PL/SQL 来控制 SQL 程序流程、使用变量、以及编写错误处理程序。
PL/SQL 的主要优点,是能够将应用程序逻辑存储在数据库本身之中。 过程或函数是一个模式对象,它包含一组 SQL 语句和一些其他的 PL/SQL 结构,共同组合在一起,存储在数据库中, 并作为一个单元来运行,以解决特定的问题,或执行一组相关的任务。 服务器端编程的主要好处,是内置功能可以在任意位置部署。

完整性规则 - 事务管理


Oracle 数据库被设计为多用户数据库。 数据库必须确保多个用户可以同时工作,而不会损坏彼此的数据。

事务

RDBMS必须能够对SQL 语句进行分组,以将它们一起提交,将其应用于数据库;或者将它们全部回滚,将其全部撤消。 事务是一个逻辑、 原子的工作单元,包含一条或多条SQL 语句。
事务是Oracle数据库有别于文件系统的特征之一。 如果您执行一个原子操作,更新了几个文件,但是系统在处理过程中失败,那么文件将处于不一致状态。 相比之下,事务则会将Oracle 数据库从一个一致状态转移到另一个一致状态。 事务的基本原则是,"要么全做,要么全都不做": 一个原子操作作为一个整体,要么都成功,要么都失败。

数据并发性

对多用户RDBMS的一个要求是并发控制,即多个用户同时访问同一数据。 如果没有并发控制,则用户可能会不正确地更改数据,并影响数据完整性。 例如,一个用户可能企图更新一行,而另一个不同的用户同时也在更新它。
如果多个用户访问相同的数据,那么管理并发的其中一种方法,就是让用户等待。而DBMS的目标却是减少等待时间,甚至于感觉不到等待的存在,或其等待时间可以少到忽略不计。 所有修改数据的 SQL 语句必须尽可能做到互不干扰。那些具有破坏性的交互性操作,可能会不正确地更新数据,或不正确地更改基础数据结构,必须予以避免。
Oracle 数据库使用锁来控制对数据的并发访问。 锁是一种机制,可以防止多个事务在访问共享资源时的相互破坏作用。锁有助于确保数据的完整性,同时允许对数据的最大并发访问。

数据一致性

数据库中,每个用户必须看到数据的一致视图,包括用户自己的事务以及其他用户已提交的事务所做出的更改。 例如,数据库必须防止脏读,若一个事务看到另一个并发事务未提交的更改,即是这种情况。
Oracle 数据库始终强制执行语句级读取的一致性,保证单个查询所返回的数据是已提交的,并与某个时间点一致。基于不同的事务隔离级别,这个时间点要么是语句被打开时,要么是事务开始时。闪回查询功能使您能够显式指定此时间点。
数据库也可以为整个事务中的所有查询提供读一致性,这叫事务级读一致性。在这种情况下,事务中的每一个语句看见的都是同一个时间点的数据,这个时间点也就是事务开始之时。

Oracle数据库架构


数据库服务器是信息管理的关键。 通常,服务器可靠地管理多用户环境中的大量数据,以便使用户可以同时访问这些相同的数据。 数据库服务器还可防止未经授权的访问,并为故障恢复提供有效的解决方案。

数据库和实例

Oracle 数据库服务器包括一个数据库和至少一个数据库实例 (通常是指只有一个实例)。 因为实例和数据库是如此的紧密关联,Oracle 数据库这个术语有时既指实例,也指数据库。
下图显示了一个数据库和它的实例。 对连接到实例的每个用户,其应用程序以一个客户端进程运行。 每个客户端进程都具与它自己的服务器进程相关联。 服务器进程有自己的私有会话内存区,称为程序全局区 (PGA)。

物理存储结构

数据文件,控制文件,在线重做日志文件

逻辑存储结构

数据块:在最细的粒度级别,Oracle 数据库将数据存储在数据块中。 一个数据块对应于磁盘上的特定数目的字节。
扩展区:扩展区是一定数目的逻辑上连续的数据块,在单次分配中获得,用于存储特定类型的信息。
段:段是为用户对象 (例如一个表或索引)、回滚数据、或临时数据等分配的一组扩展区。
表空间:数据库由称为表空间的逻辑存储单位组成。 表空间是段的逻辑容器。 每个表空间至少包含一个数据文件。
阅读(3284) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~