【小白说】数据库系统概念 3

单用户结构是指整个数据库系统安装在单台计算机上,同一时刻只能有一个用户访问,数据不共享。就像个人电脑上装的一个小型Access数据库。
主从式结构是指一个数据库服务器集中管理数据,多个终端用户通过各自的主机同时连接访问。所有数据处理都由中心服务器完成,终端只负责输入输出。类似早期银行的柜台系统。
分布式结构是指数据分散存储在多个物理位置的计算机上,但这些计算机通过网络连接组成一个逻辑上统一的数据库。用户访问时感觉像是在用单个数据库,实际数据可能分布在不同的城市。比如跨国公司的全球数据库系统。
客户/浏览器服务器结构也就是常说的C/S架构。客户端需要安装专门的软件,通过它向服务器发送请求,服务器处理后再返回结果。比如公司内部使用的ERP系统客户端。
浏览器/应用服务器/数据库服务器多层结构也就是B/S架构。用户只需要通过浏览器访问,浏览器连接应用服务器,应用服务器处理业务逻辑后去访问数据库服务器,数据再逐级返回给浏览器显示。比如现在的网上银行系统。
主从式结构里,所有的用户终端通常是直接连接到一台中心主机上的。这些终端本身没有或只有极弱的处理能力,所有的数据处理、计算和存储工作都集中在中心主机上完成,终端只负责发送指令和显示结果。

而在客户服务器结构中,客户端本身是一台独立的计算机,有自己的处理能力。客户端软件负责处理用户界面和一部分业务逻辑,然后通过网络把请求发给服务器,服务器主要负责数据处理和存储,处理完再把结果返回给客户端。
主从式结构的终端主要是输入输出,像个显示器和键盘的组合。而C/S架构的客户端本身就是一台完整的电脑,能分担很多工作。
数据库逻辑结构和特征的描述,指的是对数据库中全部数据的整体组织方式的定义,但不涉及数据在物理上如何存储。它主要规定数据库里有哪些表、每个表有哪些字段、字段是什么类型、表与表之间有什么联系,以及数据需要满足哪些约束条件。只涉及数据的框架和组织方式,不涉及框架里具体存了什么值。
外模式可以理解为视图,它们本质上都是用户能够看到的那部分数据的逻辑表示,但外模式是理论上的概念,视图是它在关系数据库中的具体实现形式。
模式之所以说是所有用户的公共数据视图,是因为它站在全局的角度,把整个数据库里所有数据以及它们之间的关联都完整地定义出来了。它不是为某一个具体用户服务的,而是综合了所有用户的需求后形成的一个统一蓝图。每个用户最终通过外模式看到的,只是这个全局蓝图的一个子集。
一个数据库只有一个模式,它完整地描述了数据库中所有的数据结构和它们之间的联系。
说"外模式/模式映像",指的是从外模式到模式的映射。它的作用是把用户看到的局部逻辑结构,映射到数据库的全局逻辑结构上。
说"模式/内模式映像",指的是从模式到内模式的映射。它的作用是把数据库的全局逻辑结构,映射到数据的物理存储结构上。
断句应该是"外模式到模式的映像"和"模式到内模式的映像",是两个独立的映射关系。
外模式之所以也叫子模式,是因为它是从全局模式中抽取出来的一个子集可以把模式想象成一张完整的大地图,包含了所有的道路和建筑。而外模式就像是这张大地图上的一个局部放大图,只显示了某个用户关心的那一片区域。它来源于大地图,是大地图的一部分,所以被称为子模式。
应用程序员是指专门负责编写和维护应用程序(比如微信、淘宝这类软件)的程序员,他们通常使用高级语言开发用户能直接使用的功能,而不去操心操作系统或数据库底层的工作。
某个具体的数据库用户(比如一个做财务的员工)在系统里看到的数据,并不是数据库里存的全部,而是只和财务工作相关的那些数据,并且这些数据是以他习惯的、逻辑上清晰的方式呈现出来的。
一个应用程序只能使用一个外模式,主要是因为外模式的设计初衷就是为特定类型的用户或应用服务的。它从全局模式中抽取了一个逻辑子集,并可能进行了一定的调整,以满足某一类应用的需求。如果一个应用程序需要同时使用多个外模式,那么它面对的就是多个不同的数据结构,这会让程序变得异常复杂且难以维护,失去了外模式作为数据逻辑视图的意义。
顺序存储,就是按照记录插入的先后顺序,一条接一条地存放在磁盘的连续物理空间上。就像把文件一页页按编号叠放好,查找时只能从头一页页往后翻。
B树结构存储,是使用一种叫B树的平衡数据结构来组织数据。它会自动维护一个多层级的目录结构,查找数据时从根节点开始,沿着目录一层层往下找,能很快定位到目标数据所在的磁盘位置。就像查字典时先翻目录找偏旁,再翻页找具体字。
哈希方式存储,是通过一个哈希函数计算记录的存储位置。存入时,根据记录的关键字通过哈希函数算出一个值,决定存在哪里。查找时,对关键字用同样的哈希函数一算,就能直接算出数据在硬盘上的位置,一步到位。
B树存储是将数据组织成一个多层级、平衡的树状结构。每个节点就像一个密集的目录页,可以存放多个关键字和指向下一层的指针。查找数据时从根节点开始,通过比较关键字逐层向下定位,最终在叶子节点找到目标数据的存储位置。这种结构通过降低树的层级,让每次查找只需要很少的几次磁盘读写。
B树本身就是一种平衡的排序树,所有叶子节点都在同一层,并且节点内的关键字都是有序排列的。
数据是否压缩存储主要有以下几种方式:从压缩类型上分,有无损压缩和有损压缩两种。无损压缩保证数据解压后完全恢复原样,适用于文本、表格等精确数据;有损压缩允许丢失部分细节以换取更高压缩率,适用于图片、音视频等多媒体数据。从具体实现方式上,数据库常用行压缩和列压缩。行压缩是把一行中的重复模式替换成短符号;列压缩则针对某一列数据进行专门压缩,利用同列数据的相似性获得更高压缩率。从算法层面看,常见的压缩算法有LZ4、Snappy(速度优先)、ZSTD、DEFLATE/GZIP(压缩率优先),以及针对时序数据的Gorilla、Delta编码等。
数据存储记录结构的规定,简单来说就是定义一条数据记录在物理上如何组织和存放的规则。它主要包括三方面:规定记录由哪些字段组成、每个字段的数据类型和长度;规定记录是定长还是变长;以及规定记录在存储介质上的物理排列方式,比如是连续存放还是通过指针链接。
堆存储的本质就是无序存放,它不在乎数据之间的顺序,只负责把新来的数据找个空位或者直接追加到末尾,这样插入速度最快。如果强制要求按顺序插入,就需要先找到正确的位置,再挪动其他数据,反而违背了堆存储追求简单快速的初衷。
堆存储最大的好处是插入数据速度极快,因为它不需要维护任何顺序,直接把新记录追加到文件末尾就行。同时实现简单,系统负担小。
数据库的模式到内模式的映像是由数据库管理系统自动负责维护的,通常不需要人工干预。
模式到内模式的映像是唯一的,是因为一个数据库只有一个模式,也只有一个内模式。既然两边都只有一个,那么连接它们的映射关系自然也就只有一条。
模式到内模式的映像规则并不是独立存在的,它通常作为模式的一部分,被定义在模式的描述信息里面。也就是说,在定义数据库的整体逻辑结构时,同时也指明了这份逻辑结构如何对应到物理存储上。
数据库管理员在创建数据库或表时,通过数据定义语言(DDL)来指定这些映射规则。

复制代码
CREATE TABLESPACE my_space LOCATION '/data/disk1';

CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50)
) TABLESPACE my_space;

Database Administrator,简称 DBA。
决定信息内容和结构是数据库管理员的核心职责之一,也就是负责设计整个数据库需要存什么、怎么组织。
比如数据库管理员需要决定把数据存在哪些物理硬盘上,需不需要做磁盘阵列,为哪些字段建立索引来加快查询速度,以及数据是按行存还是按列存。
安全性要求是指保护数据库不被非法访问和破坏,比如设定用户密码、分配不同权限,确保只有授权的人才能看或改数据。
完整性约束是指保证数据的正确性和一致性,比如规定年龄不能为负数、学号不能重复、引用的数据必须存在,防止垃圾数据进入数据库。
审计文件是数据库系统用来记录所有操作行为的一个特殊文件,可以把它理解成一个数据库的监控录像。它会详细记下谁在什么时间、从哪台电脑、执行了什么操作(比如查询数据或修改数据),甚至包括数据被修改前后的具体值。这个文件主要用于事后追溯,比如当数据出现问题时,可以通过查看审计文件来找出是谁在什么时候做了非法操作。
定期对数据库进行重组,是因为数据库在长期运行中,经过大量的增删改操作,数据在磁盘上会变得碎片化或组织效率下降。重组就是重新整理数据的物理存储,把碎片收拢、让数据排列更紧凑、更新索引统计信息,让数据库恢复高效运行状态,提升读写性能。
重构造是指当业务需求发生根本性变化时,对数据库的逻辑结构进行修改。比如原来的学生表里没有手机号字段,现在需要增加这个字段,或者需要把一张表拆分成两张表,这些都属于重构造。它改变的是数据库的逻辑结构,而不是像重组那样只整理物理存储。
系统分析员主要负责前期的需求调研和分析,搞清楚用户需要什么,然后转换成功能规划和概要设计蓝图。而数据库管理员主要负责后期的数据库具体实现和运维,比如安装数据库、设计表结构、管理权限和日常维护。

系统分析员更像产品经理,负责挖掘需求、设计产品蓝图。数据库管理员更像开发和运维,负责把蓝图落地实现并保证产品稳定运行。
系统分析员是站在全局业务的角度,分析整个系统需要哪些功能、数据怎么流动,输出的是业务需求规格说明书。他关注的是用户想要什么、业务流程怎么走。
数据库设计人员是在系统分析员的基础上,专门负责数据层面的设计。他把业务需求转化成数据库能理解的结构,比如决定建几张表、表里有什么字段、表和表之间怎么关联、用什么约束来保证数据正确。他输出的是具体的数据库设计文档。

相当于一个是宏观一个是微观另一个是实际执行

系统分析员从宏观上规划需求,数据库设计人员从微观上设计数据结构和规则,而数据库管理员负责把这些设计真正落地执行并维护起来。
高层管理人员比如校长,他可能每次访问数据库都需要看不同的汇总信息。比如周一要全校各院系的招生人数统计,周三要看全校教师的学历结构分布,周五又需要了解本年度的科研经费使用情况,每次需求都不一样。中层管理人员比如系主任,他也会经常变化查询内容。有时需要看自己系里学生的成绩分布,有时要查某门课程的选课人数,有时又要核对教师的工作量,同样每次访问需要的信息都不同。

相关推荐
海兰2 小时前
elasticsearch学习之基本概念-向量数据库
数据库·学习·elasticsearch
014-code2 小时前
Spring Boot 集成 Neo4j 图数据库实战教程
java·数据库·neo4j
大鹏说大话2 小时前
深入理解 MySQL 查询语句的执行顺序与函数调用机制
数据库·mysql
SQL必知必会2 小时前
精通递归 CTE:SQL 的盗梦空间
数据库·sql
知识分享小能手3 小时前
SQL Server 2019入门学习教程,从入门到精通,SQL Server 2019 游标 — 语法知识点及使用方法详解(14)
数据库·学习·sqlserver
青春:一叶知秋3 小时前
【Redis存储】Redis客户端
java·数据库·redis
独泪了无痕3 小时前
通过Homebrew安装Redis指南
数据库·redis·缓存
数据知道3 小时前
PostgreSQL:如何把PostgreSQL变成时序数据库(TimescaleDB)
数据库·postgresql·时序数据库
崎岖Qiu3 小时前
【MySQL | 第11篇】一条SQL查询语句的执行全流程简析
数据库·后端·sql·mysql