这就是问题所在.只考虑一个原因,你认为为什么OODB失败或为什么现在许多系统仍然使用关系数据库.
主要原因是SQL.它能够在其他情况下从数据库中使用的应用程序之外的数据非常有用,并经常与目标数据库中的数据被存储在不易被查询的格式.例如,对于关系数据库,数据可以成为数据仓库的一部分,或者只是由sys管理员等查询.
我们可以不止一次回答吗?另一个原因是关系数据库在数学方面有很强的基础:从关系的定义到正常的形式,理论是坚如磐石的.确实,关系模型没有很好地映射到OO,但恕我直言,该模型的好处和稳定性超过了映射问题.
我认为这是因为"对象数据库"正在解决(几乎)没有人真正拥有的问题.对于对象图的简单持久性,大多数OO环境中内置的序列化"足够好".如果要对数据的子集执行复杂的操作,那么关系数据库和SQL是完美的选择.
除了一些边缘应用程序(巨大的对象图不能保存在内存中,但关系不能很好地简化RDBMS使用),实际上不需要这些工具.
仅仅因为OODB不是主流,我们仍然应该考虑他们所拥有的成功.Cache和Zope都被广泛使用(相对),但某些标准会被认为是成功的.
也许这OODB没有采取保持显着的最大的原因是因为占据了大部分市场份额的潜力,从OODB混合对象关系型系统的成功:在PostgreSQL和Informix.
我知道这并没有直接回答这个问题,但我认为这是问题的一部分.但总的来说,我认为动力和支持关系数据库的根深蒂固的思维过程使人们难以转换.目前,数据库专业几乎完全是在关系理论方面进行培训,使您的数据库专业人员对避免OODB非常感兴趣,学术界几乎专门为关系人员教授DB理论.
直到大型的企业DBA和主流教授和课程以及超出开发人员准备管理OODB的人员,我觉得无论发展方面有多好,都不太可能看到大众吸引力.
嗯,这很奇怪不是吗?作为面向对象分析和设计的顶点,领域驱动设计有了这样的推动,并且存在企业模式以利用ORM系统来持久化我们的对象.对我来说,如果你的应用程序设计是面向对象的,并且以内容为中心,那么OODB将极大地有益于您的应用程序.
除了成熟和吸收的问题之外,从哲学的角度来看,OODB似乎是有益的或OO应用.不必为初学者维护那个映射层;)
但是,看看,如果你没有做域驱动器设计并使用对象作为数据对象,就像你的存储过程一样,那么你真的不会得到它;)
RDBM(基于强大的理论基础,在市场上存在的时间更长,在许多情况下可以比OODB更忠实地建模数据,可以被比OODB更多的DBA使用).这是关系元组形式的一个原因.