知识卡片
数据模型是分层抽象每层隐藏下层复杂度
内容
多数应用是用层层叠加的数据模型构建起来的,理解每一层的关键问题都是同一个:”它是 如何用低一层数据模型来表示的?”应用开发者观察现实世界(人员、组织、行为、资金流向), 用对象或数据结构建模,这些结构通常是应用特有的;这些数据结构要落地存储时,会用一个 通用数据模型来表示(如JSON/XML文档、关系数据库的表、图模型);数据库工程师再决定 如何用内存、磁盘或网络上的字节来表示这些JSON/关系/图数据,让数据能被各种方式查询和 处理;再往下,硬件工程师用电流、光脉冲、磁场表示字节。复杂应用可能还有更多中间层 (比如基于API的API),但基本思想不变:每一层都通过提供一个明确的数据模型,把更低 层次的复杂度隐藏起来,这些抽象让不同角色的人(数据库厂商工程师和使用数据库的应用 开发者)能够高效协作而不必互相了解对方那一层的实现细节。这个分层视角解释了为什么 “选择数据模型”这件事影响深远——它不只影响怎么写代码,还影响你怎么去思考待解决的 问题本身,掌握一个数据模型往往需要花费大量精力,一旦选定就会长期塑造上层软件能做 什么、不能做什么。
结构图:
flowchart TD
A[应用开发者: 观察现实世界, 建模为对象/数据结构] --> B[通用数据模型: JSON/XML/关系表/图]
B --> C[数据库工程师: 用内存/磁盘/网络字节表示]
C --> D[硬件工程师: 用电流/光脉冲/磁场表示字节]
A -.每层通过提供明确数据模型隐藏下层复杂度, 让不同角色高效协作.-> D
参考来源
- 位置:《数据密集型应用系统设计》第二章《数据模型与查询语言》引言部分(源文件:
_epub-src/ch2_split_000.html)
- 结论依据:原文说明应用通过层层叠加的数据模型构建,每一层的关键问题是如何用低
一层数据模型表示,逐层列出应用开发者、数据库工程师、硬件工程师各自的抽象层次,
并说明这些抽象让不同人群能有效协作,直接支撑本卡片的分层结构梳理。
- 原始内容:多数应用使用层层叠加的数据模型构建。对于每层数据模型的关键问题是:
它是如何用低一层数据模型来表示的?……每个层都通过提供一个明确的数据模型来隐藏
更低层次中的复杂性。这些抽象允许不同的人群有效地协作。