面向对象和结构化数据库冲突,导致软件开发的低效率,这种匹配难度被称为对象关系阻抗失配,程序员天天在处...
面向对象和结构化数据库冲突,导致软件开发的低效率,这种匹配难度被称为对象关系阻抗失配,程序员天天在处理这种难题而不自知,最后结构化数据库全面战胜了面向对象。
1946年冯诺依曼设计出将程序和数据统一放到内存里进行运行的技术,冯诺依曼架构。
1958-1968十年期间,软件大师们经过多年的努力,终于将程序设计方法从面向过程扭转为面向对象的方法。随后面向对象开枝散叶,直到今天成为主流设计方法,变成了CPU内存中程序的国王。
由于内存是非常珍贵的,随着数据增长,如何将数据在磁盘上组织好变成了大问题。
1970 年,IBM的Codd博士发表了他的论文“大型共享数据库的数据关系模型”。IBM的Chamblin按照Codd的关系代数理论,发明了我们今天仍在使用SQL语言。关系数据库和SQL变成了磁盘的国王。
两个国王出生背景不同,解决问题不同,自然说不到一块去,开战!可怜的程序员,两边都得罪不起,两边妥协。诞生了ORM(Object/Relation mapping)技术,用于使用面向对象的编程语言转换结构化数据,这实际上创建了一个可以在编程语言中使用的“虚拟对象数据库”。
Codd在关系数据库上面挖了个坑,把自己变成瓶颈,就像家里身体最不好的孩子,变成了父母的全部。互联网高并发的兴起导致这个孩子身体更差了,一切都得听他的,要不就休克给你看。
这种匹配难度被称为对象关系阻抗失配(Object–relational impedance mismatch),失配的原因非常复杂,我们有机会再详细说。
程序员天天在处理这种问题,但很少有人去思考为什么?怎么做?我们逐渐变成了不会解决问题、能机械化做好某件事情的工具。
就像饮料生产线上的扶瓶子的工人,当发现瓶子倒了就用手扶起来。老板发现当然是年轻人好用,机器厂家也在拼命研制不会倒的机器。
结果是大家看到的那样,我们利用ORM工具(也是别人开发的)实现转换,我们设计了贫血模型(Anemic domain model )。数据库国王全面战胜了面向对象的国王,程序员自此回到了1968年,生活在低效率年代。
博士聊IT,感兴趣,请加关注。
软件架构师必读:面向对象编程思想(OOP)的由来与本质
软件架构师必读2:一文带你理解面向对象(OOP)中类的本质
「博士聊IT」一文看懂编程的本质,程序员有前途么?
低代码无代码平台的未来在哪里?编程语言的进化史告诉你答案
七步成诗,软件是如何把人类思维翻译成机器代码的
#程序员##Java##程序#
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。