第二章
数据模型
一个复杂的数据模型都是由很多中间层,很多 API 组成,而且掌握一个数据模型需要花费很多精力。
关系模型
你今天在⽹上看到的⼤部分内容依旧是由关系数据库来提供⽀持,⽆论是在线发布,讨论,社交⽹络,电⼦商务,游戏,软件即服务⽣产⼒应⽤程序等等内容。
NoSQL
- 需要⽐关系数据库更好的可扩展性,包括⾮常⼤的数据集或⾮常⾼的写⼊吞吐量
- 相⽐商业数据库产品,免费和开源软件更受偏爱。
- 关系模型不能很好地⽀持⼀些特殊的查询操作
- 受挫于关系模型的限制性,渴望⼀种更具多动态性与表现⼒的数据模型
对象关系不匹配
多对一和多对多的关系
- 人和地点多对一
- 人和学校或者公司多对多
文档数据库是否在重蹈覆辙
网络模型
⽹络模型中记录之间的链接不是外键,⽽更像编程语⾔中的指针(同时仍然存储在磁盘上)。访问记录的唯⼀⽅法是跟随从根记录起沿这些链路所形成的路径。这被称为访问路径(access path)。
关系模型
文档模型中的架构灵活性
查询的数据局部性
局部性仅仅适⽤于同时需要⽂档绝⼤部分内容的情况。数据库通常需要加载整个⽂档,即使只访问其中的⼀⼩部分,这对于⼤型⽂档来说是很浪费的。更新⽂档时,通常需要整个重写。只有不改变⽂档⼤⼩的修改才可以容易地原地执⾏。
关键词
- 混合持久化
- 阻抗不匹配(模型之间的不连贯)
- 对象关系映射
- 层次模型
- 关系模型
- 网络模型
- 访问路径
- 无模式
- 读时模式
- 写时模式
- 多表索引集群表