我的理解是,不管对象数据库还是关系数据库,最终都是将数据持久化的存储在某个存储设备上。因此,性能是由底层的存储引擎决定的,如 MySQL 的 MyISAM 性能就优于 InnoDB,但是 InnDB 则具有更全面的功能。这是典型的由使用目的不同决定了数据结构不同造成的相应算法在时间复杂度上的差异。所以,性能一定要结合使用方法来考察。
讨论对象数据库的文章经常的引用一段话是:"
利用表格存储对象,就象是将汽车开回家,然后拆成零碎件放进车库里,早晨可以再把汽车装配起来。但是人们不禁要问:这是不是泊车的最有效的方法呢
"。如果我们的需求是我现在要车牌号为 苏A-12345 的车,那么对象数据库性能肯定更优越,如果我们的需求是请找出停车场里所有装有 JBL 环绕立体声音响的车,目前看来应该是关系数据库性能更优越,如果泊车的时候把每辆车的配置都登记并索引了的话。
安全性的问题简单说就是在存储在磁盘中的文件和用户或者程序之间增加一道安全门。理论上说,只要攻击者能够直接访问存储设备,所有的安全性都将很脆弱,不过事实上由于要分析这样"赤裸"的文件需要相应的技巧或者库,因此相对来说还是安全的。通过网络的访问,安全性则取决于网络通讯服务模块。理论上讲不管什么系统,这上面的安全性都是一样脆弱(或者采用某种同样性质同样强度的加密措施后是一样安全)的,问题在于这部分代码是否经受了时间的考验,代码本身是否有什么后门可以被攻击者利用。
稳定性的东西需要时间考验,所以目前应该是那些经受了时间考验的流行的关系数据库系统胜出。
人们在已经有了许多优秀的关系数据库的时候,会把对象数据库的概念抛出来,多多少少是由于某些情形下使用关系数据库让开发人员感觉到某种痛苦。而对象数据库可以很好的解决这些痛苦。问题是,至少目前,对象数据库在解决了某些痛苦的时候,原来在关系数据库领域非常方便根本不是问题的问题却出现了。我认为对象数据库需要内置提供更强大的检索机制,只有开发人员用起来感觉"爽",它才能真正成为主流产品,否则,只能是学者在实验室把玩的模型,并且小范围的应用在一些非常不适合使用关系数据库的领域(今天,各种关系映射模型日渐成熟,数据量小的时候还可以考虑类似 XML 这样的存储和交换数据的解决方案,因此非常适合对象数据库非其不能以胜任的领域还确实不多)。