TLDR

本文总结了数据库发展35年来的教训目的是避免一遍遍重复之前的错误年轻人没有过去错误的经验重复发现发明之前的错误

总结

数据库的理念可以划分为9个纪元

  1. Hierarchical (IMS)
  2. Network
  3. Relational
  4. Entity-Relational
  5. Extended-Relational
  6. Semantic
  7. Object-oriented
  8. Object-relational
  9. Semi-sturctured(XML)

Hierarchical IMS

  • 纯树形结构节点必须有父节点
  • 可以按照连续B树或者Hash的方式存储
  • record-at-a-time的方式查询个人理解有点像for each每次只处理一条数据record之间聚合需要应用程序来做用树形结构存储也确实很难处理节点之间数据的关系
  • 物理数据独立性(Physical Data Independence)物理存储层面可以按需优化不会影响应用使用
  • 逻辑数据独立性(Logical Data Independence). Logical Base can be a subtree of Physical base.

Network

  • record-at-a-time
  • 数据有存在独立性
  • 只支持两两关系

Relational

  • KISS原则简单的语义
  • 具有完全的物理和逻辑独立性
  • set-at-a-time
  • IBMDB2很关键

ER

R++等等SQL层面扩展实现泛化等等

cons:

  • 性能上没有提升用户80年代只在乎Transaction的性能提升

Object-oriented

OODB(object oriented dbms)本地的序列化方法. CAD等软件使用

cons:

  • 市场小只面向客户端开发
  • 需要为每种语言开发
  • 没有通用标准

Object Relational

Postgres

  • UDT, UDF等等解决GIS存储的问题
  • Stored Procedure
  • 使用通用的编程语言

comment:

  • 没法Scale需要DBA单独管理公司现在使用的方式其实更类似于NetworkRDB只存储每个节点的信息和网络的关系目的是将运算尽量移除DB通过扩展服务实例来Scale out

XML

两种情况

schema-last:

schema放在数据出现之后定义可以用XML来表示必须Schema-last的场景很少

跨企业的数据交换

XML是自描述的可以穿透防火墙等等

comments:

作者还预言了会有一个XML的子集来替代XML就是Json