Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86780
  • 博文数量: 56
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 730
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-06 14:50
文章分类
文章存档

2013年(56)

我的朋友

分类: Oracle

2013-10-31 09:56:49

11G Concept 数据库简介

  什么是关系数据库

  每个公司(组织)都有信息要和管理,用来满足它的一些需求。举个例子。一个公司必须收集和维护每个员工的人力资源记录。必须保证这些信息的可用性,而信息系统是一个正式的系统用来和处理信息

  一个信息系统可能是一个纸盒子,有自己的规律用来存放和检索文件夹

  不管怎样,在今天,绝大部分公司都使用database(数据库)来自动化他们的信息系统。

  database(数据库)是一个将信息处理成一个一个单元的然后收集组织起来

  database(数据库)就是用来收集,存储以及检索 应用程序使用的相关数据

  数据库管理系统(DBMS)

  DBMS是一个用来存储,组织以及检索数据的软件,通常一个DBMS有以下几个元素:

  ·Kernel code 内核编码

  这个编码管理DBMS的内存和存储

  ·元数据存储库(Repository)

  这个存储库(Repository)通常叫 数据字典

  ·查询语言

  这个语言使应用程序可以访问数据(data)

  数据库应用程序(databaseapplication)是一个软件程序,通过与数据库(database)交互而访问和操作数据。就是说一个和数据库有交互的应用软件就叫数据库应用程序

  第一代DBMS(databasemanagement system) 有下面这些类型:

  ·Hierarchical

  Hierarchical database 将数据组织成一个树状结构,每个父记录有一个或多个子记录,和文件系统的结构很像

  ·Network(网络)

  Network database 和Hierarchicaldatabase很相似,除了记录之间的关系是多对多,而不是 一对多

  这些一代DBMS把数据存储成死板的,预先定义好的关系中。因为没有DDL(data definition language)存在,修改数据的结构是非常麻烦,同样,这些系统缺乏一个简单的查询语言,这些都对应用程序的开发造成了阻碍和麻烦。

  关系模型(RelationalModel)

  在他1970年开创性论文" A Relational Model of Data for Large Shared Data Banks",E.F. Codee(关系数据库之父)定义了一个基于关系模型的数学集合理论。今天,最被广泛接受的数据库模型就是关系模型

  关系型数据库(relational database)是一个符合关系模型的数据库,

  关系模型主要有以下几个方面:

  ·结构

  明确定义过的对象存储或者访问数据库中的数据。

  ·操作

  清楚定义的动作(actions) 允许应用程序去操作数据和数据库的结构

  ·完整的规则管理着操作(操作数据和操作结构)

  关系型数据库存储数据到一组简单的关系中。relation 是一组元组(tuples),元组(tuple)是一组无序的属性值

  表(table)是一个二维关系由行(元组)以及列(属性)表示的东西。表中的每行都有同样的列,关系型数据库是一个将数据存储在relations(tables)的数据库,举个例子,一个关系型数据库可以存储公司雇员信息进employee表,department表,以及salary表。

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

  关系模型是RDBMS的基础。本质上来说,一个RDBMS移动数据进入database,储存数据,以及检索数据。这样这些数据就可以被应用程序所操作,

  RDBMS的操作分为以下几种类型:

  ·逻辑操作(Logical operations)

  在这种操作中,应用程序指定什么内容是需要的,举个例子,一个应用程序请求一个雇员名称或者增加个雇员记录到一个表。-也就是说 我只需要告诉你我要什么(what)

  ·物理操作(Physical operations)

  在这种操作中,RDBMS要确认该怎样进行和完成 命令。举个例子,一个应用查询某表,这个数据库可以使用index(索引)去找到要查询的行,读这些数据进入内存(memory),以及执行一堆其他步骤,才能返回结果给应用。因为RDBMS就是负责存储和检索数据的,所以物理操作对于应用来说是透明的-也就是说 应用只要selelct delete xxx 剩下的事数据库自己会搞定

   数据库就是一个RDBMS. 而实现了面相对象的特性,如用户定义类型,权限继承以及多态(polymorphism,搞不懂啥意思)的RDBMS被成为"object-relationaldatabase management system(ORDBMS)".

  Oracledatabase拥有扩展过的关系模型,也就是object-relational model.这使得在关系型数据库中存储复杂的business model 成为了可能。

  Oracle简史 -这个要看一看,可以用来出去tree new bee

  当前版本的Oracle database 超过30年的创新研发的结果。

  而Oracle database进化过程中的亮点包括:

  ·Oracle的创建

  1977年,Larry Ellison(这哥们可真是rich man),Bob Miner 以及Ed Oates 创建了" Software Development Laboratories" ,这是"Relational Software,Inc.(RSI)"的前身,在1983年,RSI又变成了"Oracle Systems Corporation" 以及后来的"OracleCorporation"

  ·第一版卖钱的RDBMS

  1979年,RSI 推出了Oracle V2(Version 2) 这是第一块用来市场销售的 基于sql的RDBMS(Sql-based RDBMS),这是一个在关系型数据库上具有里程碑意义的事件

  ·Portable version of oracle database(翻译过来是可移植,也就是说可以跨平台的)

  Oracle Version 3,在1983年发布。是第一款能同时运行在大型机,小型机,和PC上的关系型数据库,使数据库能够在多种平台运行

  ·增强版本并发控制,数据分发,以及可扩展性

  Version 4 增加了多版本多一致性。Version5发布在1985年,支持了C/S运算以及分布式数据库系统。Version 6 优化了 磁盘I/O,行锁,可扩展性以及备份和恢复,并且 version6引进了PL/SQL,PL/SQL是基于SQL的可程序增强。

  ·能够存储的程序化的PL/SQL包(以前都是临时包,现在能存进库里了)

  Oracle7 在1992年发布,引进了触发器和可存储的PLSQL包

  ·分区表

  Oracle8发布在1997年,是个object-relational database,支持了很多数据类型(data types),另外Oracle8支持了大表的分区

  ·Internet computing(也就是8i,9i的那个i的来源)

  Oracle8i数据库,发布在1999年,本身支持了Internet中的各种以及服务端的JAVA支持。Oracle8i 是为了internet computing而设计的,使数据库能部署在多层环境中。

  ·Oracle Real Application Clusters(Oracle RAC)

  Oracle9i数据库增加了Oracle Rac.2001发布。使得多个instance可以同时访问一个database,另外,增加了Oracle XML 数据库(Oracle XML DB),能够存储和查询XML.

  ·Grid computing

  Oracle Database 10g 发布在2003,增加了grid computing.这个版本使的公司可以根据grid infrastructure 将一大堆低成本的虚拟化成一个 计算资源(说的跟真的似的 - -切!),还有一个关键目标是使数据库能够自我管理,以及自我调整(说白了就是自动化了很多),Oracle Automatic Storage Management(Oracle ASM) 帮助完成虚拟花和简单化数据库存储的管理。

  ·增加了可管理型,可诊断性,以及可用性

  Oracle database 11g,发布在2007年,增加了一堆新特性,使得管理员和开发能很快适应不短变化的商业需求。增加适应性的关键是,通过整合信息和尽可能的自动化,简化信息的基础架构

  Schema Objects(Schema中有哪些东西)

  一个RDBMS的特性就是存储数据 的物理数据存储 和逻辑数据结构是相互独立的。在Oracle Database,一个database schema 是一个容器,里面放着一堆逻辑数据结构(表什么的)。一个数据库user拥有且只有一个schema,schema名字和用户名字一样。(不懂来找我)。

  SchemaObjects是用户创建的结构,database中数据的具现化,数据库支持很多类型的schema objects,而其中最重要的就是表,和索引。

  Tables(表)

  一个表描述一个实体 比如 雇员们的信息,你可以定义一个表,表名比如叫employees,以及一堆列,一般情况下,你得给每个列一个列名,一个数据类型(char什么的),以及宽度(比如char(20))

  一个表就是一堆行,一个列表示一个实体的属性,其中每行表示一个实体的一例(比如employees表中的一个employee)。

  你可以为表的每列指定规则(可选的),这些规则被称为intergrityconstrants(完整性约束)。举个例子 "NOT NULL"完整性约束。这个约束强制保证每行的这个列必须有值,不能是空的

  Index(索引)

  索引是一个可选的数据结构,你可以将它创建在表的一个列或者多个列上。索引可以增加数据检索的速度,当处理一个查询,数据库可以使用索引高效的去定位相关的行。索引用在当应用经常查询指定的行,或者一小部分行时。

  索引的逻辑上和物理上独立的数据。因此,你drop和create索引对表和其他indexes是没有影响的。所有的应用程序在你drop索引以后依然有效(不过性能会受到影响,还有这里drop是删除的意思)。

  Data Access

  DBMS中一个普遍的需求就是遵循和接受行业标准的数据访问语言

  Structured Query Language(SQL)

  SQL是一个基于数据集的声明式语言,它被用来和RDBMS(如oracledatabase)进行交互。

  C语言是程序语言,需要描述这件事该怎样完成,而SQL不是程序语言,它只需要描述需要什么即可。用户只需要指定他们想要的结果(例如,当前公司所有员工的名称),而不是怎样一步一步获取他们,SQL是ANSI为RDBMS定义的标准语言。

阅读(385) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~