跳转至

Lec 1: Introduction⚓︎

2263 个字 预计阅读时间 11 分钟

Purpose of Database System⚓︎

学习数据库的原因:

  • 数据处理和管理是计算机应用中的一大重要领域,对于计算机科学家而言,掌握数据库概念的知识相当有必要
  • 数据库遍布于信息社会的方方面面
  • 4.0 学分的课不得不学

学习数据库的三个方面:

  • 数据库的建模和设计:从现实世界中建立(抽象)的数据模型,然后将其转化为对 DBMS 而言合适的形式(比如表格 (tables)、视图 (views) 等)
  • 编程:使用数据库——对数据的查询和更新
  • DEMS 的实现:DBMS 如何工作,我们如何设计一个 DBMS

数据库 (database) 的定义:

  • 一组互相关联的 (interrelated) 数据,与组织相关
  • 一大堆融合的 (integrated)持续(存储)的 (persistent) 数据
  • 长期存储在计算机内、有组织的、可共享的数据集合

数据库管理系统 (database management system, DBMS):数据库 + 一组用于访问、更新和管理数据库内的数据的程序

DBMS 的主要性质:

  • 数据访问的高效性 (efficiency) 可扩展性 (scalability)
  • 减少应用开发时间
  • (物理 / 逻辑层面上的)数据独立性 (independence)
  • 数据完整性 (integrity) 安全性 (security)
  • 并发访问 (concurrenct access) 鲁棒性 (robustness)(可恢复性 (recovery)
DBMS 的历史进程
  • 文件访问系统(1950s-1960s)
  • 网状 (network)/ 层次 (hierarchy) DBMS(1960s-1970s)
  • 关系型数据库系统 (RDBMS)(1970s-)
  • 面向对象的数据库系统 (OODBMS)
  • 面向关系的数据库系统 (ORDBMS)
  • 面向应用的数据库系统:空间、时间、多媒体、网络 (Web) 数据库
  • 数据仓库 (data warehousing)、联机分析处理 (online analytical processing)、数据挖掘系统 (data mining system)
数据库系统 vs 文件处理系统
  • 文件处理系统由 OS 支持
  • 使用文件系统存储数据的缺陷:

    • 数据冗余 (rendundancy) 不一致 (inconsistency)
    • 访问数据的困难
    • 数据孤立 (isolation)
    • 完整性 (integrity) 问题
    • 更新不具备原子性 (atomicity)
    • 难以实现多用户的并发访问
    • 安全性问题
  • 数据库系统能为上述所有问题提供解决方案!

数据库市场

View of Data⚓︎

在数据库中,不同的用途需要不同层级的抽象,包括:

  • 物理层 (physical level):描述记录的存储方式(文件)
  • 逻辑层 (logical level):描述存储于数据库内的数据,以及上级数据之间的关系
  • 视图层 (view level):隐藏数据类型细节的应用程序,有时出于安全目的可能会隐藏信息

模式 (schemas) 实例 (instances)

  • 它们之间的关系类似编程语言中的类型和变量
  • 模式:不同层级的数据库结构
    • 类比于编程语言中变量的类型信息
    • 物理模式:物理层的数据库结构
    • 逻辑模式:逻辑层的数据库结构
    • 子模式 (subschema):即视图层模式
  • 实例:在特定时间点上数据库内的实际内容
    • 类比程序语言的变量值
物理独立性 vs 逻辑独立性
  • 独立性:修改某一层的模式定义不会影响上层的模式定义
  • 物理独立性:修改物理模式不会改变逻辑模式
    • 应用依赖于逻辑模式,但不关心数据的结构化和存储形式
    • 这体现了 DBMS 的一大优势
  • 逻辑独立性:在改变数据的逻辑结构时保护应用程序
    • 由于应用依赖于逻辑模式,所以这种独立性更难实现

Data Models⚓︎

数据模型 (data model) 包括:

  • 数据结构 (structures)
  • 数据关系 (relationships)
  • 数据语义 (semantics)
  • 数据约束 (constraints)

数据模型的种类:

  • 实体 - 关系 (entity-relationship, E-R) 模型

    • 实体(对象:用一些属性 (attributes) 来描述实体

    • 实体间的关系

    • 与数据库的概念设计相关

    例子

  • 关系型模型(与数据库的逻辑设计相关)

    例子

  • 其他:

    • 面向对象模型
    • 半结构化 (semi-structured) 数据结构(比如 XML
    • 更老的模型:网状模型、层级模型

数据库设计步骤:

  • 需求分析 (requirement analysis):需要什么数据、应用和操作
  • 概念设计 (conceptual design):用 E-R 模型或相似的高级数据模型,对数据进行高层级的描述
  • 逻辑设计 (logical design):将概念设计转换为一个 DB 模式
  • 模式改善 (schema refinement)(规范化 (normalization):检查关系模式中的冗余和关系异常
  • 物理设计 (physical design):索引 (indexing)、聚类 (clustering) 和数据库调优 (tuning)
  • 创建和初始化数据库、安全设计 (create and initialize database & security design)
    • 加载初始数据并测试
    • 识别不同的用户组及其角色

Database Language⚓︎

数据库语言有:

  • 数据定义语言 (DDL)
    • 通过一组关系模式 (relational schema) 来指明数据库模式
    • 还要指明存储结构、访问方法和一致性约束 (consistency constraints)
    • 编译 DDL 后,得到一组表格,存在一个称为数据字典 (data dictionary) 的特殊文件内,里面包含了元数据 (metadata)。元数据包括:数据库模式、数据存储结构、访问模式和约束、统计信息、授权 (authorization)
  • 数据操纵语言 (DML):又称为查询语言 (query language),包括检索、插入、删除、更新等操作。分为两类语言:
    • 过程型 (procedural):用户指明所需数据以及获取数据的方法,比如 C、Pascal、Java 等语言
    • 非过程型 (nonprocedural):用户只需指明数据,无需指出如何获取数据,比如 SQLProlog 等语言
  • 数据控制语言 (DCL)

SQL(structured query language,结构化查询语言:使用最广泛的查询语言,有以下几种用途:

  • 直接用于交互环境
    • SQL Server:查询分析器 (query analyzer)
    • Oracle:SQL *Plus, Work Sheet
    • MySQL:命令行客户端
  • ODBCopen database connectivity, 开放数据库互连、JDBC(Java database connectivity, Java 数据库互连、嵌入式 SQL 中作为宿主语言

如何使用数据库:

Database Users⚓︎

  • 根据用户与系统的期望互动方式来区分用户
  • 普通 (naive) 用户:调用用高级语言编写的持久的应用程序
  • 专业用户
    • 应用程序员:通过 SQL 调用与系统互动
    • 富有经验的用户:使用数据库查询语言构建查询,比如在线分析处理 (OLAP)、数据挖掘等
    • 专门 / 特殊用户:编写不适合传统数据处理框架的专用数据库应用程序。例如,CAD(计算机辅助设计、KDB(知识数据库、ES(专家系统)等

Database Administrator⚓︎

数据库管理员 (database administrator, DBA):具备对数据库和程序的中央控制权的特殊用户。

  • DBA 具备该数据库的最高特权
  • DBA 需要协调好数据库系统的所有活动
  • DBA 控制数据库所有用户的权限 (authority)
  • DBA 需要对企业信息资源和需求有较好的了解
  • DBA 的责任:
    • 模式、存储结构和访问方法的定义
    • 模式和物理组织的调整
    • 对数据访问的授权
    • 日常维护:监控性能、响应要求的改变、数据库的安全(周期性备份 (backup) 数据库、故障时恢复)

Transaction Management⚓︎

  • 并发使用很重要,但会可能会产生问题
  • 事务 (transaction):一组用于在数据库中执行单个逻辑功能的操作
  • 事务的要求——ACID原子性 (atomicity)一致性 (consistency)隔离性 (isolation)持久性 (durability)
  • 事务管理组件通过备份或恢复子系统,来确保数据库在系统或事务故障时,能够保持数据库的一致(正确)状态
  • 并发控制管理器 (concurrency-control manager) 用于控制并发事务之间的互动

DBMS Structure⚓︎

  • 存储管理器 (storage manager)
    • 在存储在数据库(文件系统)的低级数据,和应用程序和提交到系统的查询之间提供接口 (interface)
    • 负责高效存储、检索和更新数据库内的数据
    • 组成部分:事务管理器、授权和完整性管理器、文件管理器、缓冲区管理器
  • 查询处理器 (query processor):组成部分为

    • DDL 解释器 (interpreter)
    • DML 编译器 (compiler)
    • 查询处理

      • 解析和翻译
      • 优化

        • 评估给定查询的方式有等价表达式、每个操作的不同算法等
        • 通过不同方式评估查询的成本可能差异巨大
        • 需要测算操作的成本
          • 十分依赖于关于数据库必须维护的关系的统计信息
          • 需要测算中间结果的统计信息来计算复杂表达式的成本
      • 评估

整个 DBMS 的结构图如下所示:

SQL 服务器的结构:

应用架构:

  • 两级架构:客户端程序使用 ODBC/JDBC 实现数据库的通信
  • 三级架构:比如基于网络的应用、使用中间件 (middleware)

评论区

如果大家有什么问题或想法,欢迎在下方留言~