oracle系列--第一篇 数据库基础

第一章 数据库基础 

1.1 数据管理概述 1.1.1 什么是数据管理 与我们人类相比,计算机的最大优势就是能够高速、精准地运行,其运行的过程就是执行程序代码和操作指令、处理数据的过程。可以说,数据处理是计算机最基本的功能,而数据

管理则是数据处理的重要组成部分。在进一步讲解之前,我们需要先明确一下几个相关的一些基本概念。

信息(Information )是反映现实世界中客观事物状态、发展变化及其规律的信号与消息。这里 的所谓“客观事物”可以是具体的(如人、兽、鸟),也可以是抽象的(事件、现象或行为,如 潮起潮落、云卷云舒)。或者说,信息是能够通过数字、符号、文字、声音或图像等介质来表现 且能为人类所获知的知识。作为人们工作生活中分析、决策与行为的依据,信息具有客观性、适 用性、可传输性和共享性等特征。当然,信息并不为我们人类所独有,鸟语(鸟的鸣叫)传递的 就是鸟类的信息。

数据(Data )是信息的具体表示形式,如前述的数字、符号、文字、声音或图像等。在计算 机技术中,数据指的是程序或指令执行时所处理的那些内容,而程序代码和指令则不属于“数据” 的范围。当然从广义上讲,程序代码和指令也属于“数据”的范畴。 数据通常由数据名称(数据含义)、数据类型、数据值等要素组成,其中数据值还会受到数 据类型与取值范围的约束。数据对于信息的表示有定性表示(如人的体重状况为“营养不良”、 “正常体重”、“肥胖”)和定量表示(如人的体重数值为18.5 公斤)之分。

数据处理(Data Processing)是指对数据进行的采集、组织、整理、加工、存储和传播等工作。 从广义上讲,一切涉及到数据的工作均可认为是在处理数据。 数据处理由可细分为数据管理、数据加工和数据传播三种类型:

  • ‹ 数据管理

收集信息,将信息用数据表示,对数据进行分类、组织并保存,以能够在需要的时候提供数 据。

  • ‹ 数据加工

对数据的转换、提取和运算操作。对现有数据(原始数据)进行加工会得到更有用的数据(即 处理结果,比如一次购物中的商品总价、会员在指定时间段内的消费总额),以指导人的行为或 事物的运行发展。

  • ‹ 数据传播

即信息的传播——在空间或时间上以各种形式传递数据,包括数据的显示操作,传播过程中 不会改变数据的结构、性质和内容,但可以表现为不同的形式或效果(比如表格、图形、实物模 型、音频/ 视频等),使更多的人得到信息。

上面已提到,数据管理(Data Management)是指对数据的分类、组织、编码、保存、维护、 检索和统计。具体说来,就是将采集到的数据合理地分类组织,将之编码、并保存到在物理存储 设备(如磁盘)中,使数据能够被长期保存;数据维护是指根据需要插入新数据、修改原有数据 和删除失效数据等操作;数据检索(即数据查询)和数据统计功能则是为了快速地得到所需要的 数据,满足各种使用要求。

1.1.2 计算机数据管理技术发展历程 随着人类进入信息化社会,在计算机应用技术领域,对数据管理方面的需求日益旺盛,计算 机数据管理技术迅速发展起来,其发展历程大致可分为三个阶段: 1. 手工管理阶段 在计算机技术发展初期,计算机主要用于科学计算,其硬件存储设备主要是外接的磁带机、 卡片机、纸带机等,当时还未发明磁盘等直接存取的存储设备;软件方面也处于初级阶段——还 没有操作系统和专门管理数据的软件。这一时期的数据组织、存储和管理完全靠程序员手工完成, 因此称为“手工管理阶段”。 手工管理数据方式的特点是: 数据不单独保存,而是与程序代码混合在一起,因而没有独立性,要修改数据则必须修 改程序; – 程序员必须自己在程序中定义数据的存储结构、实现其存取操作,迫使程序员直接与物 理设备打交道,这加大了程序设计难度,编程效率低下。 – 数据与程序相关,这意味着即使多个不同的程序用到了相同数据,也无法实现共享,只 得各自进行数据的定义、存储和管理,这样很容易造成数据的高度冗余,无法保证数据 的一致性。 可以看出,这一阶段阶段的数据管理效率很低。

2. 文件管理阶段 将数据以文件的形式组织和长久保存在计算机存储设备中,并由操作系统中的文件系统实现 统一的管理——文件系统有专门的数据管理软件提供有关数据存取、查询及维护功能,规定了统 一的文件结构和共同的存取方法。 数据文件的管理并不针对特定的应用程序,但仍缺乏数据与程序的独立性,也就无法做到真 正的数据共享。另一个问题是,当数据的逻辑结构改变时,必须同时修改数据文件的结构定义和 相应的程序代码,这会增加程序维护升级的难度。

3. 数据库管理阶段 数据库管理从前面的文件管理演化而来,是计算机数据管理技术的高级阶段。为满足大量数 据的集中存储、不同类型程序共享数据、多用户并发访问、维护数据的完整性、分布式处理以及 安全性方面的需求,人们开始尝试使数据的存储和管理与应用程序彻底独立,并最大限度地减少 数据冗余,于是出现了数据库管理系统。数据库管理方式的特点在下一节中会做详细介绍。

1.2 数据库概述 

1.2.1 数据库主要特点 顾名思义,数据库是存储数据的场所。准确地说,数据库(Data Base,DB)是依照某种数据 模型组织起来的数据集合,同时也提供了数据管理功能。数据库具有如下主要特点:

  • ‹ 数据共享度高

数据共享包含两方面的含义:不同用户可以同时存取数据库中的数据,其具体用法可以;用 户可以采用不同方式访问数据库,比如使用管理管理工具直接操作数据库、或在网络客户端应用 程序中通过编程接口访问数据库。

  • ‹ 减少数据冗余

同文件系统相比,由于数据库系统实现了数据共享,从而避免了用户为其应用程序创建专用 的数据文件。减少了可能出现的重复数据(数据冗余),便于维护数据的一致性。 ‹ 数据和程序间具有较高的独立性 数据的独立性包括数据库中数据的逻辑结构和应用程序相互独立,也包括数据物理存储结构 的变化不影响数据的逻辑结构。有关数据库存储结构方面的知识在后文中会做详细介绍

  • ‹ 实现对数据的集中管理

由数据库管理系统对外提供统一的数据存储、维护(增加、删除和修改数 据)、检索和简单统计功能,使用数据的应用程序只需遵循统一的接口与数据库管理系统打交道, 调用其数据管理管理功能,而不必各自为战。 实现数据集中管理的前提是,建立统一的数据模型对数据进行组织、并能够体现数据之间的 联系,而文件管理方式则很难做这一点,文件管理的数据处于一种分散的状态, 文件类型、存储结构不够统一,在保证数据一致性、并发访问方面的性能也非常有限。 ‹ 确保数据的一致性、安全性和可靠性 只有实现了数据的集中管理,才能保证共享数据的可靠性,否则很容易导致多应用程序并发 访问数据时的不一致性问题。数据库管理系统支持对数据的并发式访问(允许同时对数据进行多 路存取),能够很好地控制用户间的交互,保证数据的一致性; 安全性和可靠性更是数据库技术中恒久不变的主题,数据库管理系统均会提供相关的技术、 机制或方法,防止非法操作、错误更新和越权使用数据,并提供故障检测、诊断和恢复方面的工 具或功能。

1.2.2 数据库相关术语 数据库(Database,DB) 数据库是依照某种数据模型组织起来的数据集合,集合中的数据尽可能不重复,并以最优方 式为某个特定组织的多种应用服务,集合中的数据结构独立于使用它的应用程序,对数据的增、 删、改和检索由统一的软件(数据库管理系统)进行管理和控制。

数据库管理系统(Database Management System,DBMS) 数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。DBMS 对数据库进行统一的管理和控制,包括数据的增、删、改和检索操作,以保证数据库的安全性和

完整性。用户通过 DBMS 访问数据库中的数据,数据库管理员也通过 DBMS 进行数据库的维护工 作。DBMS 提供多种功能,支持多应用程序和多用户以不同方式对数据库进行并发式访问。

数据库管理员(Database Administrator,DBA) 数据库管理员是负责创建、监控和维护整个数据库的人员,其职责包括:数据库安装、数据 库配置和管理、权限设置和安全管理、监控和性能调节、备份和恢复、解决其它一般性问题,以 使数据能被任何得到授权的人有效使用。 数据库管理员是一种专业性很强的职位,相对来说工作更稳定、薪水较高,一般由技术水平 高、资历较深的人员担任。目前,国内这一领域的分工还不很明细,多数中小型企业没有专门的 DBA,而是由网络管理员等兼任。

数据库应用系统(Database Application System,DBAS) 在数据库领域内,人们常把使用了数据库的各类应用系统统称为数据库应用系统。准确地说, 数据库应用系统是一个可以实际运行的存储、维护和处理数据的软件系统,通常由数据库、数据 库管理系统、数据库管理员、应用程序和最终用户五部分组成。其中,数据库集中保存数据,数 据库管理系统提供对数据库的统一管理和维护,这二者合在一起就是我们通常所说的数据库软件; 应用程序与数据库管理系统交互、间接访问和操作数据库中数据;数据库管理员操作数据库管理 系统,实现对数据库的管理和维护;而最终用户则只与应用程序进行交互。

数据库 数据库管理系统 应用程序 最终用户 数据库管理员 数据仓库(Data Warehousing) 数据仓库(Data Warehouse )是一个面向主题的(Subject Oriented )、集成的(Integrate )、 相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。 数据仓库是一个环境,而不是一件产品,提供用户用于决策支持的当前和历史数据,这些数 据在传统的操作型数据库中很难或不能得到。数据仓库技术是为了有效的把操作型数据集成到统 一的环境中以提供决策型数据访问的各种技术和模块的总称。所做的一切都是为了让用户更快更 方便查询所需要的信息,提供决策支持。 

简单地说,数据仓库就是把不同数据库的数据收集到一起,加以整理,主要用于做长期趋势 分析。数据仓库应用一般体现为操作比较复杂,涉及到的数据量比较大,但并发工作的程度不太 多,对速度的要求也不太强烈,这类应用除了要求数据库系统有较强的数据管理手段,如:完整 性控制、安全性控制、 可靠性保障等之外,还特别要求数据库系统能支持大数据量,支持有效的 语句优化,强有力的统计功能以及较强的批处理能力等。

1.2.3 数据库分类及发展沿革 前文已提及,数据库(数据库管理系统)的出现克服了文件管理系统的局 限性,其后来的展则是受到如下需求的推动:提供应用程序与数据之间更大的独立性,进而降低 应用程序的开发及维护成本;管理日益复杂的数据类型和结构;降低对数据库用户的技术要求— —使用者不必须具备编程基础、也不需要详细了解数据在数据库中的存储及管理细节;提供更简 便、快速的数据访问服务;支持更强的数据共享性、一致性、安全性和可靠性;提供更强大的数 据统计、决策支持功能。 数据库系统的核心和基础是数据模型各种数据库系统都是基于某种数据模型而工作的,因而通常是按照数据模型的特点将传统 数据库系统分成网状数据库、层次数据库和关系数据库三种。

网状数据库 顾名思义,网状数据库采用的是以记录类型为结点的网状数据模型,是一种导航式 (Navigation)的数据库——用户在操作数据库时不但要指明要访问的对象(数据),还要规定其 存取路径。

世界上第一个网状数据库管理系统(也是第一个数据库管理系统)是由美国通用电气公司 Charles Bachman等人在20 世纪60年代初年开发成功的,这款名为 IDS (Integrated DataStore,集 成数据存储)的数据库管理系统奠定了网状数据库的基础,在当时得到了广泛的推广和应用,做 为初级阶段的数据库产品,IDS 只能在通用公司的主机上运行。 1971年,美国数据系统委员会(Conferenceon Data Systems Languages,CODASYL )中的数 据库任务组(Data Base Task Group,DBTG)提出了一个著名的DBTG 报告,对网状数据模型和 语言进行了定义,并在1978年和1981年两度进行修改和补充。因而网状数据模型又称为CODASYL 模型或DBTG 模型。1984 年,美国国家标准协会(ANSI)提出了一个网状定义语言(Network

Definition Language,NDL)的推荐标准。 20世纪 70 年代,曾经出现过大量的网状数据库的 DBMS 产品。比较著名的有 Cullinet软件公 司的IDMS 、Honeywell公司的 IDSII、Univac 公司的 DMS1100、以及HP公司的IMAGE 等。 网状数据库模型对于层次和非层次结构的信息都能比较自然的模拟,在关系数据库出现之前 网状DBMS 要比层次DBMS 用得普遍。在数据库发展史上,网状数据库占有重要地位。

层次型数据库 层次型数据库紧随网络型数据库之后出现,它采用层次数据模型(类似于数据结构中的“树”) 来模拟现实世界中按层次组织起来的事物。层次数据库管理系统也是按记录来存取数据的,层次 数据模型中最基本的数据关系是基本层次关系,它代表两个记录型之间一对多的关系,也叫做双 亲-子女关系(Parent-Child Relationship,PCR )。数据库中有且仅有一个记录型无双亲,称为根节 点。其他记录型有且仅有一个双亲。

层次数据模型的优点是结构简单、层次清晰、易于理解,并能够提供良好的完整性支持。其 缺点包括:处理非层次性联系如多对多联系的数据时比较繁琐,只能通过引入冗余结点或虚拟结 点来实现;查询子结点必须通过父结点,即从根节点开始访问,这样降低了数据访问效率;层次 型数据库对数据插入和删除有较多限制。 最著名的层次数据库产品是IBM 公司的 IMS (Information Management System ),这是IBM 公司研制的最早的大型数据库系统。

关系型数据库 关系型数据库(Relationship Database, RDB)采用二维表结构储存与管理数据,并规定了表内 和表间数据的依存关系。可以简单地理解为,关系数据库中的表结构与我们日常生活中经常使用 的数据表(比如 Office 办公软件Word/Excel 中的表格)对应,当然关系型数据库中经过抽象后的 数据表结构可以支持更多的数据类型,并附加所需的约束条件,这也符合技术来源于现实世界、 并服务于现实世界生产活动的本质规律。

关系型数据库采用结构化查询语言(Structured Query Language,SQL )作为客户端程序与数 据库服务器间沟通的桥梁——客户端发送SQL 指令到服务器端,服务器端执行相关的指令并返回 其查询的结果结果。关系模型结构简单、概念单一、易学易用。关系模型的查询效率往往不如非 关系模型,需进行优化以提高性能,这一定程度上要增加用户的负担,并对用户在数据库的整体 知识上有较高的要求。 1970年的 6 月, IBM 公司的研究员 Edgar Codd 发表了其著名的论文《大型共享数据库数据 的关系模型》(A Relational Model of Data for Large Shared Data Banks),这是数据库发展史上的 一个里程碑,从此开始了关系型数据库软件革命。经过 30 余年的持续发展进步,关系型数据库已 是当今的应用主流,目前流行的大型关系型数据库包括 Oracle、IBM DB2、Microsoft SQL Server 、 SyBase 、Informix 等。

版权说明: 本书为北京新科海学校-v512 工作室原创教材,版权所有,流通者不得用于盈利目的,转载请注明出处。 联系作者: 张利国 zhangliguo@tsinghua.org.cn 相关资源: 新科海学校 http://www.jobedu.com.cn/ v512工作室 http://www.v512.com 高清视频下载 http://www.verycd.com/topics/215898/

E | hongtenzone@foxmail.com  B | http://www.cnblogs.com/hongten

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源项目

GVP 特辑!PHP 老司机力荐的 6 款实战项目 | 码云周刊第 40 期

GVP 特辑 有数据显示,全球前100万的站点中,有超过70%的站点是使用 PHP 开发的。面对如此流行的编程语言,我们如何才能更有效率的学习?今天小编特意...

5415
来自专栏JAVA技术zhai

千万级流量的优化策略实战

性能优化涉及面很广。一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服...

6255
来自专栏Java职业技术分享

阿里如何实现秒级百万TPS?搜索离线大数据平台架构解读

导读:搜索离线数据处理是一个典型的海量数据批次/实时计算结合的场景,阿里搜索中台团队立足内部技术结合开源大数据存储和计算系统,针对自身业务和技术特点构建了搜索离...

2510
来自专栏开源项目

码云周刊 | 面试之前,或许该高效率地学点干货!

一周热门资讯回顾 1、程序员多大年纪算高龄,届时该何去何从? ? 随着年龄的增长,程序员会相对难以保持技能更新。许多人宁愿留在自己的舒适区,不冒任何风险。即使...

3036
来自专栏架构师小秘圈

分库分表架构实践

作者介绍: 丁浪,现就职于某垂直电商平台,担任技术架构师。关注高并发、高可用的架构设计,对系统服务化、分库分表、性能调优等方面有深入研究和丰富实践经验。热衷于技...

7164
来自专栏腾讯技术工程官方号的专栏

2017 Openstack Days China | 大规模云计算环境下的运维实践

企业 IT 部潘晓东专注于云计算技术,在虚拟化、云计算、服务运维领域有超过十年的工作经验。本文是将其在 OpenStack Days China 的分享进行整理...

5714
来自专栏喵了个咪的博客空间

phalcon-入门篇1(基本介绍与环境搭建)

#phalcon-入门篇1(基本介绍与环境搭建)# ? 本教程基于phalcon2.0.9版本 ##前言## ***先在这里感谢各位phalcon技术爱好者,我...

4745
来自专栏phodal

如何看待 GitHub 上许多笔记、面经等获得过多的 star?

文章来源于,我在知乎相关话题上的回答。问题大意是:SQLite 和 SQLAlchemy 项目的 Star 比许多学习笔记、面经还要少。

1161
来自专栏ThoughtWorks

微服务概述 | TW洞见

今日洞见 文章作者来自ThoughtWorks:James&Martin,译者来自ThoughtWorks:姚琪琳。 本文所有内容,包括文字、图片和音视频资料,...

2903
来自专栏SDNLAB

SDN实战团分享(三十三):Hurricane分布式实时处理系统架构及SDN领域的应用

嘉宾简介:卢誉声,Autodesk软件研发工程师,从事平台架构方面的研发工作。 在此之前,他曾在思科系统(中国)研发中心云产品研发部工作,并参与了大规模分布式系...

3766

扫码关注云+社区

领取腾讯云代金券