概要
本文主要围绕两个主要的概念来展开:
如何分析一个数据模型:
基本考察点:数据基本元素和元素之间的对应关系(一对多、多对多)
比较几种的常用模型:关系模型(最为流行),文档模型(树状),图模型(极大自由度)
schema模式:强Schema(写时约束),弱Schema(读时解析)
如何考量查询语言:
如何与数据模型关联、匹配
声明式和命令式
数据模型
数据模型的核心点在于:如何组织数据,如何标准化关系,如何关联现实。它既决定了我们构建软件的方式(实现),也左右了我们看待问题的角度(认知)
作者开篇以计算机的不同抽象层次来让读者对泛化的数据模型有个整体观感。大多数应用都是通过不同的数据模型层级累进构建的。
每层模型的核心问题式:如何用下一层的接口来对本层进行建模?
作为应用开发者,需要将现实中的具体问题抽象为一组对象、数据结构(data structure)以及作用于其上的API
作为数据库管理员(DBA),为了持久化上述数据结构,你需要将他们表达为通用的数据模型(data model),如文档数据库中的XML/JSON、关系数据库中的表、图数据库中的图。
作为数据库系统开发者,需要将上述数据模型组织为内存中、硬盘中或是网络中的字节(Bytes)流,并提供多种操作数据集合的方法。
作为硬件工程师,你需要将字节流表示为二极管的电位(内存)、磁盘中的磁极(磁盘)、光纤中的光信号(网络)
在每一层,通过对外暴露简洁的数据模型,我们隔离和分解了现实世界的复杂度。
这也反过来说明了,好的数据模型需有两个特点:
简洁直观和具有组合性