知识卡片

面向对象数据库生产力更高,为什么关系数据库仍是主流

普通读书笔记卡

内容

对象和关系模型之间存在”阻抗不匹配”问题,面向对象数据库正是为解决这个问题而生——它把面向对象的理念直接带入磁盘存储层,程序员无需操心映射,可以直接使用由相互关联对象组成的巨大结构,就像拥有一块由磁盘支撑的无限事务性内存,还能用事务分组更新、支持数据共享。按作者不严格的观察,关系数据库的映射开销大约占开发总投入的三分之一,且会一路延续到维护阶段——这意味着面向对象数据库理论上能带来相当可观的生产率提升。然而大多数项目最终仍然选择关系数据库,核心原因是风险而非性能(作者明确表示没见过面向对象数据库与关系数据库性能对比的结论性数据):关系数据库是一项容易理解、有大量成熟大厂长期支持的成熟技术,SQL又为几乎所有工具提供了统一的标准接口,这种”生态确定性”的价值超过了面向对象数据库理论上的生产力优势。可迁移启发:一项技术理论上更优(更高生产率),并不必然意味着市场会选择它——当”确定性强、生态成熟、可替换供应商”这些风险规避因素被认真计入决策,团队完全有理由为它牺牲一部分理论上的效率增益。

参考来源

- 位置:《企业应用架构模式》第一部分"表述"之"第3章 映射到关系数据库"之"3.1 架构模式"(源文件:_epub-src/OEBPS/Text/000017.html) - 结论依据:原文说明"面向对象数据库的主要好处在于它们能够提高生产率。尽管我没听说过什么受控测试,但根据不严格的观察,关系数据库的映射开销大概是程序开发总开销的1/3左右……然而,大多数项目并不使用面向对象数据库。主要原因是风险。关系数据库是一种非常容易理解、并且有很多成熟的大型供应商提供长期支持的技术。SQL为所有的工具提供相关的标准接口",直接支撑本卡结论。 - 原始内容:然而,大多数项目并不使用面向对象数据库。主要原因是风险。关系数据库是一种非常容易理解、并且有很多成熟的大型供应商提供长期支持的技术。SQL为所有的工具提供相关的标准接口。