第一部分-存储(一)

发布于:2022-12-09 ⋅ 阅读:(714) ⋅ 点赞:(0)

首先概述数据库架构并讨论系统组件及其职责。随后讨论数据库在存储介质数据布局方面的区别。

 1.1 数据库架构

数据库使用客户端/服务器模型,其中数据库系统实例(节点)扮演服务器的角色,而应用程序实例则扮演客户端的角色。

实例解释:Oracle 数据库是一种支持高并发的RDBMS系统。因此Oracle 也需要解决在大量并发用户下的一致性访问问题。因应此Oracle 数据库对外提供的访问方式并不是用程序直接打开数据文件来操作数据库,而是通过一种TWO-TASK的模式提供服务。在这种架构下,应用无法直接访问数据库,而必须通过一种被称为实例(INSTANCE)的逻辑结构去访问数据库。

官方的说法,Instance就是指的操作系统中一系列的进程以及为这些进程所分配的内存块。如果用更为容易理解的方式来解释实例,那就是Oracle 数据库的实例是我们访问Oracle 数据库的通道。需要在数据库服务器上建立一个服务进程(SERVER进程,或者前台进程)来为客户端应用服务

什么是数据库实例_跳跳投的博客-CSDN博客_数据库里面的实例

客户端请求通过传输子系统到达数据库,通常以某种查询语言表示,传输子系统在接收到查询后将其移交给查询处理器,查询处理器会进行语法解析、解释和验证。解析后的查询被传递给查询优化器,最终以执行计划的形式出现。执行计划再由执行引擎处理。

执行引擎与存储引擎

客户端请求使用客户端/服务器模型,其中数据库实例(节点)扮演

这里,总结出了一个比较典型的分布式数据库的架构和模块组合标准。这里需要注意,我给出的模型是基于客户端/服务器,也就是 C/S 模式的,因为这是大部分分布式数据库的架构模式。

  1. 传输模块:它是接受客户端请求的一层。用来处理网络协议。同时,在分布式数据库中,它还承担着节点间互相通信的职责。
  2. 查询处理器:请求从传输层被发送到查询层。在查询层,协议被进行解析,如 SQL 解析;后进行验证与分析;最后结合访问控制来决定该请求是否要被执行。解析完成后,请求被发送到查询优化器,在这里根据预制的规则,数据分布并结合数据库内部的统计,会生成该请求的执行计划。执行计划一般是树状的,包含一系列相关的操作,用于从数据库中查询到请求希望获取的数据。
  3. 执行引擎:执行计划被发送到执行层去运行。执行层一般包含本地运行单元与远程运行单元。根据执行计划,调用不同的单元,而后将结果合并返回到传输层。

以上就是数据库领域中比较常见的模块划分方式。你可能有这样的疑问:那么存储引擎在哪里呢?

远程执行可能涉及向集群中的其他节点写入、读取或者复制数据。本地查询(直接来自客户端或者其他节点的查询)由存储引擎执行。它一般包含如下一些功能:

  1. 事务管理器:用来调度事务并保证数据库的内部一致性(这与模块一中讨论的分布式一致性是不同的);
  2. 锁管理器:确保并发操作不会破坏物理数据的完整性,包括事务、修改数据库参数都会使用到它;
  3. 存储结构(访问方法):管理磁盘上的数据访问并负责组织磁盘上的数据,访问方法包括堆文件和存储结构,例如B树和LSM树。
  4. 缓冲区管理器:主要包含缓存与缓冲管理,数据一般是批量输入磁盘的,写入之前会使用内存去缓存数据;
  5. 恢复管理器:当数据库崩溃后,可以使用提交日志恢复系统的一致性状态。
                         (其中事务管理器和锁管理器共同负责并发控制)

一次查询通常以执行计划的形式呈现,由执行引擎处理。

具体细节可参考:https://www.cnblogs.com/whgk/p/10993436.html

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到