ADB-01 高级数据库导论
ADB-01 高级数据库导论
📅 预计 45 分钟 | ⭐ = 重要知识点 | 📌 中英术语见文末
📖 本模块偏概念与脉络,少代码、多图示与对比
1.1 数据库技术发展历程:四代演进
一本"账本"的进化史
想象你经营一家小书店。最开始,你拿一个本子记订单,一页一单——这就像数据库发展早期的文件管理阶段:数据躺在文件里,谁要用谁自己翻,没有统一的"管家"。
后来书多了、店员也多了,各人记各人的本子,结果同一本书在两个本子上价格不一样。这时你意识到,需要一套"规矩"来统一管数据——这就是**数据库管理系统(DBMS)**登场的理由。数据库技术自此大约经历了四个阶段,每一代都解决上一代遗留的问题,同时又留下新的问题,推动下一代出现。
四个阶段整体对比:
| 阶段 | 数据组织 | 代表 | 主要解决 | 遗留问题 |
|---|---|---|---|---|
| ① 初级文件管理 | 文件 | 各程序自己的数据文件 | 把数据存起来、读出来 | 冗余、不一致、程序与数据绑定 |
| ② 层次 / 网状 | 树 / 图 | IMS(层次)、DBTG(网状) | 结构化存储、支持共享 | 结构难改、导航式访问、缺统一理论 |
| ③ 关系模型 | 二维表 | 关系数据库 + SQL | 简单直观、逻辑物理分离、有理论 | 复杂对象、多媒体、海量并发表达乏力 |
| ④ 新一代数据库 | 多模型并存 | 对象、分布式、仓库、多媒体等 | 应对多样化新需求 | 标准分散、技术路线分化 |
阶段一:初级文件管理阶段(File System)
比喻:把每张订单抄在独立卡片上,按日期排进抽屉。存取全靠自己动手,这就是早期的文件系统。
这一阶段的核心特点与问题:
- 数据与程序绑定:每个程序只管自己的文件,文件格式由程序自定义,换个程序就认不出来。数据没有独立性——程序变了,数据文件的读法也得跟着变。
- 数据冗余(redundancy):同一份数据(比如客户地址)在多个文件里重复出现,白白占空间。
- 数据不一致(inconsistency):地址在一个文件里改了、另一个没改,同一个客户出现两个地址,真伪难辨。
这一阶段解决了"把数据存下来、读出来"的问题,但没有统一的数据库管理系统,数据靠程序员各自维护,共享性差。
阶段二:层次与网状数据库(Hierarchical / Network)
比喻:把卡片按"树"整理——总店之下有分店,分店之下有门店,只能从上往下一层层找。这就是层次模型,像一棵倒挂的树,每个节点只有一个父节点。
但现实中的关系常常是"多对多":一个学生选多门课,一门课又有多个学生。树表达不了这种交叉,于是出现网状模型,像一张图,任意两个节点之间都能连线,允许一个节点有多个父节点。
- 解决了:数据实现了结构化存储,有了专门的数据管理程序,支持一定程度的数据共享。
- 遗留:结构一旦建好就很难改(增删一个节点牵连大量指针);用户要"顺着结构导航"自己找数据,使用门槛高;缺少统一的数学理论基础。
阶段三:关系模型与关系数据库 ⭐
比喻:把数据整理成一张张二维表格,行是记录、列是属性。你看数据就是看表,不必关心它在磁盘里怎么摆。
1970 年,E.F. Codd 提出关系模型(relational model),把数据统一看作二维表(关系),用集合论和关系代数打底;随后诞生标准语言 SQL。用户只声明"我要什么"(select),不用管"怎么找",找法交给数据库优化。
它成为主流的原因有三点:
- 简单直观:二维表人人都看得懂,用户心智负担低。
- 逻辑与物理分离:表的"外表"与底层存储解耦,存储方式随便换,查询写法不变,数据独立性强。
- 有坚实的理论基础:关系代数、范式(normalization)理论让表设计有章可循,能系统消除冗余与异常。
解决/遗留:解决了共享难、访问难、设计无据的问题;遗留的是——表达复杂对象(嵌套、继承、多媒体)吃力,面对海量并发和非结构化数据力不从心,这正好交给第四阶段。
阶段四:新一代数据库技术
比喻:社会需求变多样,一种"表格"装不下所有场景,数据库界开枝散叶,各自服务一类客人。
新一代不是单一产品,而是多种技术并存:
- 面向对象数据库(OODB):用对象、类、继承组织数据,贴近面向对象编程。
- 对象关系数据库(ORDB):在关系数据库上扩展对象能力,兼顾"关系"与"对象"。
- 分布式数据库(DDB):数据分散在多台机器,逻辑上仍像一个库。
- 数据仓库与数据挖掘:面向分析决策,而非日常事务。
- 多媒体数据库:管理图像、音频、视频等非结构化数据。
这一阶段的"遗留问题"是标准分散、路线分化——没有一家独大,需要用户按场景选型。这正为"高级数据库"这门课划出了疆域。
⚠️ 常见错误
- 把"文件管理"当成"数据库":早期文件系统没有统一的存储管理、查询语言和并发控制,数据靠程序各自维护,它不是数据库管理系统。
- 混淆层次模型与网状模型:层次模型是"树",严格自上而下、每节点单父;网状模型是"图",允许多父、表达多对多。判断标准是"有没有多对多"。
- 以为 SQL 就是关系模型:关系模型是理论(二维表 + 关系代数),SQL 是实现它的标准语言,两者是"理论 vs 实现"的关系,不能划等号。
1.2 高级数据库:内涵与外延
从"高级自行车"说起
比喻:学完"普通自行车",再来看"高级自行车"——山地车、公路车、折叠车。它们都叫自行车,却针对不同路况加了不同能力:减震、变速、可折叠。高级数据库也是如此:它不是一个具体产品,而是"传统关系数据库之外的能力扩展"的总称。
内涵(它是什么):以数据库基本原理为基础,融合新的需求与新技术,扩展出的数据库理论与应用技术的总称。它仍然是"数据库",但处理的对象、数据模型和应用场景都比传统关系数据库更复杂、更"高级"。
外延 / 范畴边界(它包含什么),可以从三个层面看:
- 数据模型层面:从二维表扩展到对象、XML、图、时态、空间等模型。
- 系统结构层面:从单机扩展到分布式、并行、云计算。
- 处理需求层面:从日常增删改查(OLTP)扩展到分析(OLAP)、数据挖掘、主动触发、协同工作。
它为什么会出现:一句话,传统关系数据库有三个方向"够不着"——
- 表达力不够:复杂对象、嵌套结构、语义关系表达困难。
- 处理能力不够:海量数据、高并发、实时分析吃不消。
- 应用形态跟不上:Web、移动、智能化、协同化等新应用需要新能力。
所以高级数据库是"需求倒逼"的产物:应用往前走,数据库必须跟上。它不是要取代关系数据库,而是在其基础上长出新的枝干。
⚠️ 常见错误
- 把"高级数据库"当成"关系数据库的升级版":它是对象关系、分布式、数据仓库、知识库、主动数据库等一大类技术的总称,不是某一个产品的升级。
- 以为高级数据库淘汰了关系数据库:关系数据库至今仍是处理结构化核心数据的主力,高级数据库多是在其上扩展或与之共存。
- 混淆"内涵"与"外延":内涵回答"它是什么"(本质),外延回答"它包含哪些"(范围)。概念辨析题常在这两个词上设区分点。
1.3 应用特征:"四化"
服务大厅来了四类新客人
比喻:数据库像一个服务大厅。早年它只接待一种客人——本单位的事务处理。现在客人变多了:有在外地办事的,有希望自动办公的,有要看大局报表的,有一群人协作的。大厅得为不同客人开不同窗口。
1. 网络化(Networked)⭐
应用跑在网络上,数据分布在不同节点,查询可能跨机器、跨地域完成。
例子:网上购物平台——订单、库存、用户信息分布在不同服务器甚至不同城市,下单时要跨节点核对库存。典型支撑技术是分布式数据库。
2. 智能化(Intelligent)
数据库不只是被动"存/取",还要能"主动"响应或"带知识"地处理。
例子:主动数据库——银行账户余额低于阈值时,数据库自动触发提醒动作;知识库——专家系统里存的不只是数据,还有规则,如"若温度 > 40℃,则发出报警"。
3. 多维化(Multidimensional)
面向分析决策,把事务数据按多个维度组织,方便从不同角度观察。
例子:数据仓库 + OLAP——超市按"时间 × 地区 × 商品类别"三维汇总销量,经理随时可以切片看"华东区上月饮料卖了多少钱"。传统事务库只记"一笔一笔的订单",多维化则把它们折叠成可随意观察的立方体。
4. 协同化(Collaborative)
支持多人、多系统在共享数据上协同工作。
例子:计算机支持的协同工作(CSCW)——多位编辑同时编辑一份文档,数据库要协调并发修改、处理版本与冲突,保证大家改的是"同一份"。
⚠️ 常见错误
- 把"网络化"等同于"能联网":网络化特指数据分布与跨节点的分布式处理,不是"网站能访问数据库"这么表面的意思。
- 混淆智能化和多维化:智能化偏"主动、带规则",多维化偏"分析、多维视图"——一个管"怎么想",一个管"怎么看"。
- 把 OLAP 当成日常事务处理:OLAP 面向分析、以只读查询为主;传统关系数据库的日常事务(OLTP)是频繁的小读写。二者定位相反。
1.4 研究方向概览
一桌宴席,各上一道菜
比喻:高级数据库不是一道菜,而是一桌宴席,每道菜服务一类客人。下面把六道主菜逐一上桌,也为后续模块留下钩子——每个方向都先记住一句话:"它解决什么问题"。
1. 分布式数据库(Distributed Database)
解决"数据分散在多台机器上,还要像用一个库一样查询、并保持一致"的问题。
(引子:后续讲分片、复制、分布式事务的协调。)
2. 对象关系与面向对象数据库(ORDB / OODB)
解决"传统二维表表达不了对象、继承、复杂类型"的问题。
(引子:后续讲类型构造器、嵌套表、对象视图。)
3. 时态与空间数据库(Temporal / Spatial Database)
解决"数据要带时间维(历史变化)或空间维(地理坐标)"的问题,如股票历史行情、城市 GIS 地图。
(引子:后续讲时态数据模型、空间索引。)
4. 知识库与主动数据库(Knowledge Base / Active Database)
解决"数据之上还要有规则、能主动触发动作"的问题,如专家系统、实时监控报警。
(引子:后续讲产生式规则、ECA 规则——事件-条件-动作。)
5. 数据仓库与数据挖掘(Data Warehouse / Data Mining)
解决"从海量历史数据中提取决策信息和隐藏规律"的问题。
(引子:后续讲星型模型、OLAP 操作、关联规则与聚类分类。)
6. 大数据技术(Big Data)
解决"数据规模与类型超出传统工具处理能力"的问题。
(引子:后续讲分布式存储与并行计算,即常说的 Hadoop / Spark 家族。)
⚠️ 常见错误
- 把数据仓库当成"更大的数据库":数据仓库面向分析、按主题集成历史数据;日常事务库面向操作、记当前状态。前者"分析历史",后者"支撑业务"。
- 混淆时态数据库与普通数据库:时态数据库的关键是维护"随时间变化的历史",而不只是存一个当前值。
- 以为大数据只是"数据量大":大数据还强调类型多(结构化、半结构化、非结构化)、产生快(近实时)、价值密度低,是"规模 + 多样 + 速度"的组合。
1.5 大数据时代背景
当"水库"变成"大江大河"
比喻:传统数据库像一座水库——水位可控、结构规整。到了大数据时代,数据像大江大河:流量巨大、来源杂、泥沙俱下、涨落快。水库那套"闸门 + 渠道"的管法需要跟着改。
几个关键变化(概述,不展开):
- 从"集中"到"分布":数据分散在成千上万台机器上,由分布式文件系统统一管理。
- 从"结构化"到"多样化":日志、图片、视频、传感器流等非结构化数据大量涌入,二维表装不下。
- 从"查询"到"计算":需求从"取一条记录"变成"对全量数据做统计、训练模型",数据库与计算框架(MapReduce 类)深度结合。
- 从"单机升级"到"横向扩展":靠加机器(scale-out)而非升级单机硬件(scale-up)来扛规模,这是成本与容错共同决定的。
- 从"强一致"到"妥协一致":为保证可用性,许多系统接受最终一致(eventual consistency),如分布式缓存、部分 NoSQL 系统。
一句话概括:数据库技术从"一台机器上的规范管理"走向"一群机器上的协同计算"。关系数据库仍是根基,但新架构(NoSQL、云数据库、湖仓一体)不断涌现——这正是高级数据库课程展开的时代背景。
⚠️ 常见错误
- 把大数据等同于 NoSQL:NoSQL 是大数据的一条技术路线,不是全部;很多大数据场景仍在使用关系数据库与 SQL。
- 以为大数据时代关系数据库被淘汰:关系数据库在结构化核心数据上依然主力,只是单靠它不够用。
- 混淆 scale-up 与 scale-out:scale-up 是升级单机(加内存、换 CPU),scale-out 是增加机器数量横向扩展——记住"up 向上换,out 向外加"。
🧠 记忆口诀
- 发展四阶段:"文件 → 树网 → 二维表 → 百花齐放"。文件管得散、树网难导航、关系成主流、新代看需求。
- 四化:"网、智、多、协"——网络化管分布,智能化管主动,多维化管分析,协同化管协作。
- 高级数据库为什么出现:传统关系库"表达力不够、处理力不够、形态跟不上",需求倒逼扩展。
- 六个研究方向:"分布、对象、时空、知识、仓库、大数据"——每个方向只记"解决什么问题",后面模块再逐个展开。
⭐ 考点清单
- 数据库发展四阶段:各阶段名称、代表模型、解决什么问题、遗留什么问题。
- 层次模型(树)与网状模型(图)的结构区别,判断标准是"有无多对多"。
- 关系模型成为主流的原因:二维表直观、逻辑与物理分离、有数学理论基础。
- 关系模型(理论)与 SQL(语言)的区分,两者不能划等号。
- 高级数据库的内涵(是什么)、外延(包含哪些)、出现原因(需求倒逼)。
- 应用特征"四化":网络化、智能化、多维化、协同化,各配一个例子。
- 六个研究方向各自"解决什么问题":分布、对象、时空、知识、仓库、大数据。
- 大数据时代的变化要点:分布式存储、多样化数据、从查询到计算、横向扩展、最终一致。
📌 中英术语表
| 中文 | English | 记忆点 |
|---|---|---|
| 数据库 | database | 有组织的数据集合 |
| 数据库管理系统 | Database Management System (DBMS) | 管存取、查询、并发、恢复的系统 |
| 文件系统 | file system | 早期阶段,程序自己管文件 |
| 数据冗余 | data redundancy | 同一数据多处重复 |
| 数据不一致 | data inconsistency | 各处数据对不上 |
| 数据独立性 | data independence | 程序与数据彼此不牵连 |
| 层次模型 | hierarchical model | 树 |
| 网状模型 | network model | 图,多对多 |
| 关系模型 | relational model | 二维表 |
| 关系数据库 | relational database | RDB |
| 结构化查询语言 | Structured Query Language (SQL) | 关系库标准查询语言 |
| 范式 | normal form | 规范表设计的理论 |
| 面向对象数据库 | object-oriented database (OODB) | 对象、类、继承 |
| 对象关系数据库 | object-relational database (ORDB) | 关系库 + 对象扩展 |
| 分布式数据库 | distributed database (DDB) | 多机分布、逻辑一体 |
| 数据仓库 | data warehouse | 面向分析 |
| 数据挖掘 | data mining | 从数据中找规律 |
| 联机分析处理 | OLAP | 多维分析 |
| 联机事务处理 | OLTP | 日常增删改查 |
| 多媒体数据库 | multimedia database | 图像、音频、视频 |
| 主动数据库 | active database | 事件触发动作 |
| 知识库 | knowledge base | 数据 + 规则 |
| 时态数据库 | temporal database | 带时间维 |
| 空间数据库 | spatial database | 带空间维 |
| 事件-条件-动作 | Event-Condition-Action (ECA) | 主动数据库规则 |
| 计算机支持的协同工作 | Computer-Supported Cooperative Work (CSCW) | 协同 |
| 大数据 | big data | 海量、多样、快速 |
| 横向扩展 | scale-out | 加机器 |
| 纵向扩展 | scale-up | 升级单机 |
| 最终一致 | eventual consistency | 弱一致,最终收敛 |