ORM

Martin fowler几年前一度非常推崇ORM(对象/关系数据库映射框架),特别是Hibernate和Ruby的Active Record,现在他当大家更多对ORM责难和猜忌。他形容了立即首新的章:ORM的厌倦(OrmHate),下面大概谈谈他这篇稿子大意。 首 先,MF为ORM带来的纷繁做了辩解,对象同关系数据库存在先天抗,试图调整和连带来复杂性。他也认为:The object/relational mapping problem is hard,试图以目标和关系数据库之间开展映射是殊为难的,因为你用处理两种植不同角度视图中的多寡,一个是关系数据库中,还有一个凡是内存中in- memory,这两头常常是由ORM实现,这里好几以及对象没关系,准确地游说,ORM实际是以展开内存(in-memeory)和关系数据库之间映射,内 存数据结构比关系模型如果双重灵敏,大多数人数更愿意利用这种内存数据结构,然后将该再次保存持久及数据库被。 图片 1 这种映射要于咱想象复杂得多,因为你而以内存改变数据结构,就非得映射同步到另外一头,如果发差不多个操作以并行修改数据库就又复杂,ORM得处理这种并发,这种情形下你免能够因工作机制,因为当你摆来内存中数据,你是不能够hold住事务的(通常通过数据库锁hold住)。 那么有没有起ORM的代为? MF提出少个缓解方案:MF认为Hibernate 和 Active Record 已经是一个膨胀化软件,他见到不少总人口起做自己系统的ORM,这是异常了得的,但是她们并未察觉及已掉入泥潭,MF看对象及关系数据库的映射如同计算机是中之越战。 虽然多ORM框架而 iBatis, Hibernate, 和 Active Record做了众开足马力化解了众题目,但是关键问题还是有,ORM能够缓解80%-90%的题材,但是剩余的题目便不能不清楚ORM和关系数据库内部工作体制才能够化解。 MF认为当下其实就是是科学用ORM的方,他以Ruby中Active Record创造者David Heinemeier Hansson的话语也例子,ORM帮助而处理掉了多数无聊垃圾代码,但也供了一个管道和沙井,让你直接处理SQL语句。 但 是众人时时怨声载道,为了要好之靶子模型更适合ORM,屈就ORM,只能换得更加有关系化,MF看就是行使关系数据库的必然结果,你一旦打要你的内存模型 更加关系化,要么复杂化你的照射代码,为了简化你的目标和关系数据库映射,你无比好啊让你的领域模型更加具有关系化,但是并无意味着你得按涉嫌模型设计领域 模型。 ORM是繁体的,因为她得处理双向映射,如果只有单向映射,问题错综复杂也许就见面解决,前提是你感到SQL不复杂,这就是是CQRS(读写分离)。

MF提出避免ORM这些扑朔迷离的星星只代表解决方案: 1.采用内存关系模型,也就算是一直利用SQL。 2.干脆不使用关系数据库,直接采用NoSQL。 个人觉得当下有限种方案比极端,还是CQRS方案再好,实际得由此内存中对象化的天地模型来屏蔽掉SQL或NoSQL,无论是SQL或NoSQL,都是小圈子对象的持久化,当然批量查询读取专门走另外一漫漫线,结合NoSQL+Hadoop可以兑现大数据分析。 MF提出这有限种植缓解方案,其实还是匪思量否认ORM作用,将ORM复杂性归结为涉嫌模型,其实纯粹的涉及模式是好彻底简单的,复杂就在你将对象及涉嫌将以合。

 

网站地图xml地图