1、世界气候数据中心18内容 概述 数据库系统 关系型数据库 数据库新技术 构建数据库系统 187.1 概述什么是数据库?全球十大数据库美国图书馆美国图书馆美国中央情报局世界气候数据世界气候数据中心中心(WDCC)美国国家能源研究美国国家能源研究科学计算中心科学计算中心(简称简称NERSC)如果我们需要查询某件事,最好知道到哪儿去找?数据库也许就是这个问题的答案数据库:Database,DB18什么是数据库 数据库是一个持久数据的结构化集合,是数据的组织和存储 数据库本身可以看作是一个电子文件柜:存放计算机所收集的数据的容器 数据库用户可以进行增加或删除数据库文件,插入、修改、查询、删除数据 数据
2、库系统(Database System)是计算机应用软件中非常重要的一个领域 数据库技术是应用最广且经久不衰的计算机技术之一 几乎所有较大项目都采用基于服务器的数据库系统18为什么要使用数据库?文件管理是“平面”的,数据库技术是“立体”的,多维的实现了数据的集中管理保持数据的独立性支持事务处理,能够保证数据的完整性 减少数据冗余,避免数据的不一致性能够管理海量数据可以存放大量的数据,能有效进行数据的组织和管理可以高速、高效检索数据数据库的信息可以重组可以进行各种数据处理187.2 数据库系统数据库系统是由数据库及使用数据库的用户或程序组成的系统数据库系统的结构数据存储数据库管理系统数据库应用软
3、件例:计算机或移动终端上的“客户端”(Terminal)就是使用数据库的一个应用程序数据库用户 应用程序设计员:编写数据库应用程序 最终用户:数据库的直接使用者 数据库管理员(DBA):负责对数据库进行规划、设计、协调、维护、及管理的工作人员18数据库管理系统DBMS,DB Manager System数据库是一个抽象的概念,不管是 DBA 还是用户,几乎不能直接和“数据库”打交道建立、使用和管理数据库都是在 DBMS下进行的用户数据库的应用程序DBMS 数据库中的数据18DBMS是软件和数据的结合数据库结构化了的电子文件柜DBMS管理这些文件柜的“职员”,是软件和数据的结合如果不严格区分,D
4、BMS就是数据库DBMS是软件和数据的结合是进行数据库创建、管理、维护的软件系统18DBMS的功能 数据定义 数据操纵:查询、添加、修改和删除数据库中的数据 数据控制:设置或者更改数据库用户或角色权限 存储过程:数据库的数据处理程序 目的在于能够方便地从系统表中查询信息,或完成更新数据表相关的管理任务,包括系统管理任务 实现对数据库的优化,保证数据的完整性和安全性,能够进行数据恢复和进行并发任务 数据字典:也叫“元数据”,它本身也是一个数据库,是数据的数据18常见的数据库产品 Oracle DB2 Sybase SQL Server Access Visual FoxPro18各种用户数据库使
5、用数据库管理系统能够构建各种用于满足用户需求的数据库,主要可分为:企业数据库 ERP 个人数据库 Outlook Internet上的数据库187.3关系型数据库数据库是最大的计算机应用类软件产品,已经有了规范性的体系结构和数据库模型数据库的体系结构建立数据库的一个框架如何组织数据库中的数据,就是DBMS所采用的数据库模型目前关系型数据库是主流技术18数据库的三级体系结构内层 决定数据在存储器中的实际位置,需要考虑数据的存取方法 与操作系统的存储器管理相关数据库模型层(公共层)定义数据的逻辑结构,把数据库内部的数据以用户能够接受的形式提供给外层 DBMS的主要功能集中在这个层次外层(接口层)提
6、供应用程序和用户的连接18数据库模型数据库模型定义了数据的逻辑关系,也给出了不同类型数据之间的关系不同的数据模型对应不同类型的数据管理系统:层次型数据库使用树状结构来表示数据库中的记录及其联系 网状型数据库使用有向图(网络)来表示数据库中的记录及其联系 关系型数据库用二维表格的形式来表示数据库中的数据及其联系 面向对象型数据库是面向对象技术与数据库技术相结合的产物18关系型数据库IBM San Jose Research Lab的E.F.Codd于1970年提出关系模型由表(Table)的集合而成 确切地说是由“关系”的集合而成关系的基本的定义一个“关系”是一个没有重复值的集合18关系的几个术
7、语 名称:表名(唯一)元组(Tuple):关系中的行,也叫记录 属性(Property):关系中的列,(属性名,属性值)度:关系中属性的数目 基数:关系中行的总数 主码:某个属性组(集),可以唯一确定一个元组18IDIDCourseNameCourseNameClassRoomClassRoomTeacherTeacher00010001计算机科学基础计算机科学基础203203汤晓丹汤晓丹00020002微积分微积分301301李士明李士明00030003大学英语大学英语204204S JohnS John00040004C C语言程序设计语言程序设计106106王王 维维00050005Ja
8、va Java 程序设计程序设计315315范中延范中延关系示例 CourseTB关系名关系名列,属性列,属性主码主码行,元组行,元组度:度:4基数:基数:518关系型数据库 关系型数据库的组成数据库表记录属性 关系是表及表之间存在的联系 关系型数据库的外部形态就是表,但数据在数据库中不是以表的形式存储的18关系运算关系的集合运算(双目运算)并(Union)交(Intersection)差(Difference)积(Cartesian Product,笛卡尔积)合并操作,合并操作,形成的新关系包含了两个关系中所有的元组形成的新关系包含了两个关系中所有的元组操作后形成的新关系包含了操作后形成的新
9、关系包含了同时出现在两个关系中同时出现在两个关系中的元组的元组找出一个关系中存在的而另一个关系中不存在的元组找出一个关系中存在的而另一个关系中不存在的元组两个关系的笛卡尔有序对的集合两个关系的笛卡尔有序对的集合18集合运算图示 r1、r2为参与运算的原关系,r3是运算得到的新关系18关系运算专用的关系运算 选择(Select)投影(Project)连接(Link)除(Divide)将两个关系组合成一个新关系将两个关系组合成一个新关系与投影相关与投影相关单目操作单目操作,根据给定的条件从关系根据给定的条件从关系中中元元组,形成一个新组,形成一个新关系关系单目操作单目操作,从关系中选取几个属性,查
10、找从关系中选取几个属性,查找形成形成一个新关系一个新关系18专用的关系运算图示 r1、r2为参与运算的原关系,r3是运算得到的新关系18SQL语言SQL(Structured Query Language)结构化查询语言最早是IBM为其关系数据库管理系统System R开发的一种查询语言,目前大多数关系数据库都支持SQLSQL为关系型数据库的标准语言SQL/99版本用户或者为用户编制的访问数据库的应用程序都使用SQL对数据库操作18SQL 语言 SQL本质上就是计算机编程语言,惟一的差别就是它专门针对关系型数据库一般的程序设计语言,如C、Java等语言,缺乏对数据库的操作,但通过嵌入SQL语句
11、就可以扩展其对数据库操作的能力数据库应用设计基本上采用这个途径,把这样的通用编程语言叫做宿主语言(Host Language)18SQL的四个部分 数据查询语言DQL(Data Query Language)Select 数据操纵语言DML(Data Manipulation Language)InsertUpdateDelete 数据定义语言DDL(Data Definition Language)定义和管理数据库中各种对象Create(创建)Alter(修改)Drop(删除)数据控制语言DCL(Data Control Language)DBA用于数据控制操作GrantDenyRevoke
12、18SQL的特点 非过程化语言 一次处理一个记录 允许用户在高层数据结构上工作,集合输入,集合输出 不要求指定数据存放方法集中精力于要得到的结果 SQL语句使用查询优化器数据存取的快速手段 主要体现在查询功能,所以也叫形式表达 统一的语言 用于所有用户的DB活动DBA、程序员及其他用户 多种功能:查询、数据定义、修改数据、建立确保数据库安全的约束条件等 所有关系数据库的公共语言 用SQL编写的程序都是可以移植的18SQL 查询例子 假设有一个表为title,其中一列为产品类型type,一列是产品价格price,现在要将这两列数据按照价格price降序排列,使用SQL语句编写的程序为:use t
13、itleselect top 3 to typeselect top 3 to type,priceprice from title order by price desc from title order by price desc运行结果为:type price电视机1230.00收音机130.00手电筒70018非关系型数据库(NoSQL)BigTable(Google)Cassandra MongoDB CouchDB18BigTable(Google)BigTable是一种压缩的、高性能的、高可扩展性的,基于Google文件系统(Google File System,GFS)的数据存
14、储系统,用于存储大规模结构化数据,适用于云计算 MapReduce常通过BigTable来存储或更改数据 BigTable不是传统的关系型数据库,不支持JOIN这样的SQL语法,BigTable更像今日的NoSQL的Table-oriented,优势在于扩展性和性能。BigTable的Table数据结构包括row key、col key和timestamp,其中row key用于存储倒转的URL,例如必须改成com.google.www http:/zh.wikipedia.org/wiki/BigTable18Cassandra Apache Cassandra(社区内一般简称为C*)是一套
15、开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性和性能,被Digg、Twitter、Hulu、Netflix等知名网站所采用,成为了一种流行的分布式结构化数据存储方案 在数据库排行榜“DB-Engines Ranking”中,Cassandra排在第十位,是非关系型数据库中排名第二高的(次于MongoDB)http:/zh.wikipedia.org/wiki/
16、Cassandra18MongoDB MongoDB是一种文件导向数据库管理系统,由C+撰写而成,以此来解决应用程序开发社区中的大量现实问题。2007年10月,MongoDB由10gen团队所发展。2009年2月首度推出 MongoDB可以从开放源代码来建构与安装,更常见的是安装binary文件,目前有Windows,Linux,OS X和Solaris版本。许多Linux包管理系统现在已包含了MongoDB的包,包括CentOS和Fedora,Debian和Ubuntu,Gentoo以及Arch Linux。同样可从官方网站获取http:/zh.wikipedia.org/wiki/Mong
17、oDB18CouchDB Apache CouchDB是一个开源数据库,专注于易用性和成为完全拥抱web的数据库 它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据 其中一个显著的功能就是多主复制。CouchDB的第一个版本发布在2005年,在2008年成为了Apache的项目 不同于关系型DB,CouchDB没有将数据和关系存储在表格 替代的,每个数据库是一个独立的文档集合 每一个文档维护其自己独立的数据和自包涵的schema 一个应用程序可能会访问多个数据库,比如其中一个位于用户的手机上,另一个位于在远程的服务器上 文
18、档的元数据包含版本信息,让其能够合并可能因为数据库链接丢失导致的任何差异http:/zh.wikipedia.org/wiki/CouchDB187.4 数据库新技术 面向对象数据库对象-关系数据库 通过在关系数据库中增加对象类型,同时将一些对象处理方法加入到SQL语言,以处理这些被增加的数据类型 分布式数据库基于关系模型,位于网络的多个计算机上两种基本类型:分割式、复制式 并行数据库(Parallel Database System)支持多处理器并行执行查询和事务处理的数据库任务 自然语言数据库用户可以使用自然语言访问数据库187.4 数据库新技术 决策支持(Decision Support
19、)帮助管理者“发现问题、查明原因并进行智能化决策”管理信息系统(MIS)联机事务处理(OLTP,On-Line Transact Processing)联机分析处理(OLAP,On-Line Analytical Processing)数据仓库(Data Warehouse,DW)面向主题的、集成的、稳定的、随时间变化的数据存储,用于决策支持稳定的意义是数据插入后不再改变,但可以被删除 数据集市(Data Mart,DM)与数据仓库的区别在于它是特定的和可更新的187.4 数据库新技术 数据挖掘(Data Mining)探测型的数据分析从数据库中找到感兴趣的“模式”建立在数据库已经保存有海量数
20、据记录的基础上以统计分析为基础,运用人工智能技术 大数据(Big Data)存于网络中的海量数据定义:在限定的时间内无法使用传统的数据处理方法进行筛选、提取、处理和管理的海量数据大数据处理基础几乎涵盖了目前先进的计算机技术,如并行处理、分布式处理、网络存储系统等187.5 构建数据库系统现代的数据库系统都是基于网络服务器结构数据库系统由两个简单的部分组成(C/S模式)服务器(Server)客户(Client)数据库应用程序一些数据库应用直接使用网络软件(如浏览器IE)进行数据库的访问,用户不需要专门的数据库应用程序,这种结构则叫做B/S(Browse/Server)模式18C/S模式服务器可被
21、认为是DBMS,或者说DBMS安装在服务器上客户端程序和服务器程序安装在同一台机器上单用户结构如果多个用户使用不同的客户端机器访问多台机器上的数据库服务器分布式结构应用程序DBMS客户端服务器18Access 2003数据库 18新建数据库18数据库的建立/查询 建立数据库Access数据库中的信息主要是以表的形式来实现的建表Access中表的模板或设计视图来设计表 查询的建立对数据库进行操作查询创建可以通过向导,或设计视图选择查询从某个表中读出所需的信息追加查询从某表向另一表中增加记录删除查询在某表中删除某些符合删除条件的记录生成表查询根据某些表中内容生成一个新表等18小结 概述 数据库系统 关系型数据库 数据库新技术 构建数据库系统