数据库1—数据库基础·数据库概述和基本概念

数据库知识 - 索引目录

一、理解数据库的定义和作用

1、数据库的基本概念

1.1 数据库是什么?

  • 数据库是一个有组织的集合,用于存储和管理数据的容器。它允许你有效地存储、检索、更新和管理数据。

1.2 数据库管理系统(DBMS)是什么?

  • DBMS是一个软件系统,负责管理数据库的创建、维护和使用。它提供了一个接口,使用户和应用程序能够与数据库交互。

1.3 表、行、列是什么?

  • 数据库中的表是数据的结构化表示,类似于电子表格。表包含行和列。每行代表一个记录,每列包含特定类型的数据。

例如,一个学生表可能有学号(列)、姓名(列)、年龄(列),每行代表一个学生的信息。

1.4 主键和外键是什么?

  • 主键是表中用于唯一标识每行的字段。它确保每行都有一个唯一标识符。
  • 外键是表中的字段,用于建立两个表之间的关系。它通常与其他表的主键关联。

例如,如果有一个学生表和一个课程表,学生表中的学号可能是主键,而课程表中的学号可能是外键。

1.5 SQL是什么?

  • SQL(Structured Query Language)是一种用于与数据库通信的标准语言。它包括用于查询和操作数据库的命令。

例如,一个简单的SQL查询可能是:

SELECT * FROM Students WHERE Age > 20;

这将返回所有年龄大于20的学生记录。

1.6 ACID属性是什么?

  • ACID是事务的四个特性,确保数据库事务的可靠性。
    • 原子性(Atomicity): 事务是原子的,要么全部执行,要么全部回滚。
    • 一致性(Consistency): 事务使数据库从一个一致性状态转移到另一个一致性状态。
    • 隔离性(Isolation): 一个事务的执行不能被其他事务干扰。
    • 持久性(Durability): 一旦事务提交,其结果将永久保存在数据库中。

2、数据库管理系统(DBMS)的作用和种类

2.1 数据库管理系统(DBMS)的作用

数据库管理系统是一种软件,它充当数据库的守护者,负责管理数据库的创建、维护和访问。

主要作用:

  1. 数据定义:

    • DBMS允许定义数据的结构,包括表、字段、索引等。通过定义数据模型,它确保数据以一种有组织的方式存储。
  2. 数据操作:

    • DBMS提供了操作数据的方法,包括插入、更新、删除和查询数据。这通过使用SQL语言或类似的查询语言来实现。
  3. 数据管理:

    • DBMS负责处理数据的存储和检索,确保数据的完整性、安全性和一致性。它管理数据的物理存储和访问路径。
  4. 事务管理:

    • DBMS支持事务,确保数据库操作是原子、一致、隔离和持久的(ACID属性)。这是为了维护数据的一致性和可靠性。
  5. 并发控制:

    • DBMS管理多用户同时访问数据库的情况,确保并发操作不会导致数据不一致或丢失。
  6. 数据安全性和权限控制:

    • DBMS通过用户身份验证和授权机制确保只有授权用户可以访问数据库。它还提供数据加密和审计功能以增强安全性。
  7. 数据备份和恢复:

    • DBMS允许定期备份数据库,以便在数据丢失或损坏时进行恢复。这是保障数据可用性的重要手段。

2.2 数据库管理系统的种类

主要类型:

  1. 关系数据库管理系统(RDBMS):

    • 使用表来存储数据,并通过SQL进行查询和管理。例如,MySQL、Oracle、Microsoft SQL Server。
  2. NoSQL数据库管理系统:

    • 用于存储和检索非结构化或半结构化数据。包括文档型、键值型、列族型、图型数据库。例如,MongoDB、Cassandra、Redis。
  3. 对象数据库管理系统:

    • 将对象作为基本数据存储单元,适用于面向对象的应用程序。例如,db4o。
  4. 图数据库管理系统:

    • 专注于图形结构的数据,适用于处理复杂的关系和网络。例如,Neo4j。
  5. 内存数据库管理系统:

    • 将数据存储在内存中,以提供更快的读写速度。例如,Redis。

二、数据库体系结构

1、三层架构: 用户层、逻辑层、物理层

1.1 用户层(外部层)

用户层是与最终用户直接交互的部分,它包括以下组件:

  • 用户界面(UI):

    • 提供用户与数据库交互的图形界面或命令行接口。这是用户执行查询、插入、更新等操作的地方。
  • 应用程序(Application):

    • 执行特定任务的应用程序,它们通过用户界面与数据库交互。应用程序可以包括业务逻辑、数据处理和用户输入验证等功能。

用户层的主要目标是提供友好的界面,隐藏底层数据库细节,使用户能够方便地操作数据库而不必了解底层实现。

1.2 逻辑层(中间层)

逻辑层充当用户层和物理层之间的中介,主要包括以下组件:

  • 查询处理器(Query Processor):

    • 解析和优化用户发出的查询,将其转换为对数据库的实际操作。这包括查询解析、优化和执行计划生成。
  • 事务管理器(Transaction Manager):

    • 管理事务的执行,确保事务的原子性、一致性、隔离性和持久性(ACID属性)。
  • 数据完整性和安全性管理:

    • 负责维护数据的完整性和安全性,包括实体完整性、参照完整性、权限控制等。

逻辑层的任务是将用户请求转化为对数据库的操作,并确保这些操作在事务的范围内得以正确执行。

1.3 物理层(存储层)

物理层是数据库实际存储和管理数据的地方,它包括以下组件:

  • 存储管理器(Storage Manager):

    • 管理数据在磁盘上的存储和检索。这包括数据文件、索引文件的组织和管理。
  • 缓存管理器(Cache Manager):

    • 缓存常用数据,以提高查询性能。通过在内存中存储热点数据,减少对磁盘的访问。
  • 文件管理器(File Manager):

    • 负责管理数据库文件的物理组织,包括数据文件、日志文件等。

物理层的主要任务是有效地管理存储,提高数据的访问速度,并确保数据的持久性和一致性。

1.4 示例与解释

示例:
有一个用户想要查询学生表中年龄大于20的所有学生姓名。

-- 用户层(用户界面或应用程序)
SELECT Name FROM Students WHERE Age > 20;

解释:
用户层发出查询请求,逻辑层处理并生成查询计划,物理层执行实际的数据检索。

这个查询会经过逻辑层的处理,生成一个执行计划,然后由物理层去执行,最终返回结果给用户。

用户可以通过用户界面或应用程序与数据库交互,逻辑层处理用户请求并生成执行计划,物理层执行实际的数据库操作。

这种分层结构有助于隔离不同层次的责任,提高系统的可维护性和可扩展性。

2、数据库系统组件和功能

2.1 数据库引擎(Database Engine)

  • 功能: 数据库引擎是数据库系统的核心组件,负责实际存储、管理和检索数据。它执行SQL查询,处理事务,并提供数据完整性和安全性。
  • 示例: MySQL的数据库引擎是InnoDB,Microsoft SQL Server的是SQL Server Engine。

2.2 查询处理器(Query Processor)

  • 功能: 解析和优化用户提交的SQL查询,生成执行计划,并将其传递给数据库引擎执行。
  • 示例: 当用户发出查询时,查询处理器会分析查询语句,并确定最有效的方式检索数据。

2.3 事务管理器(Transaction Manager)

  • 功能: 管理数据库事务,确保事务的原子性、一致性、隔离性和持久性(ACID属性)。
  • 示例: 如果一个事务包含多个SQL语句,事务管理器将确保它们以原子的方式执行。

2.4 数据字典(Data Dictionary)

  • 功能: 存储数据库的元数据信息,包括表结构、索引信息、数据类型等,用于数据定义和数据操作。
  • 示例: 数据字典包含有关数据库中表和字段的信息,允许系统了解数据库结构。

2.5 缓存管理器(Cache Manager)

  • 功能: 缓存常用的数据,以减少对磁盘的访问,提高查询性能。
  • 示例: 将热点数据存储在内存中,避免每次查询都需要从硬盘读取数据。

2.6 安全性和权限控制

  • 功能: 管理用户对数据库的访问权限,确保只有授权用户可以执行特定的数据库操作。
  • 示例: 设置用户角色和权限,限制对敏感数据的访问。

2.7 备份和恢复管理器

  • 功能: 负责定期备份数据库,并在需要时恢复数据,以防止数据丢失。
  • 示例: 设置定期备份策略,以便在发生故障时可以快速恢复数据。

2.8 并发控制器(Concurrency Controller)

  • 功能: 管理多用户同时访问数据库的情况,防止并发操作导致数据不一致。
  • 示例: 使用锁定机制或隔离级别来确保事务之间的正确隔离。

2.9 日志管理器(Log Manager)

  • 功能: 记录数据库的所有变更,用于恢复和追踪数据库操作。
  • 示例: 记录事务的开始、提交和回滚,以便在需要时进行故障恢复。

2.10 示例与解释

示例:
有一个用户要向学生表中插入一条新的学生记录:

-- 用户层(用户界面或应用程序)
INSERT INTO Students (Name, Age, Grade) VALUES ('John Doe', 25, 'A');

解释:

  1. 用户通过用户界面或应用程序提交上述SQL查询。
  2. 查询处理器解析查询并生成执行计划,确定将数据插入学生表。
  3. 事务管理器确保插入操作是一个原子事务,即要么全部插入成功,要么全部回滚。
  4. 数据引擎执行插入操作,将新的学生记录存储在数据库中。
  5. 日志管理器记录插入操作,以便在需要时进行恢复。

猜你喜欢

转载自blog.csdn.net/weixin_49015143/article/details/134943148