Db4o系列之二:OODMS&&RDMS

来源:互联网 发布:清华天普法学硕士知乎 编辑:程序博客网 时间:2024/06/16 12:05

面向对象数据库管理系统(OODMS)有别于传统的关系数据库管理系统(RDMS)

一,数据识别方式不一样。RDMS是通过主键来区分数据的,而OODMS是通过UID(唯一对象标识符)来区分对象的,通常UID为数字,但它一般是对外不可见的,不同的OODMS生成UID的方式不一样,在DB4O中,UID是指向实际对象存入的物理地址的指针,这有一个好处,即如果程序要求数据库中存在两条完全一样的数据的时候,OODMS完全可以胜任,但是RDMS却不能满足,当然了,OODMS中能否存在两条完全一样的数据完全取决于程序本身的需求

二,数据库模式(SCHEMA)。关系数据库通过定义表,字段以前表间的关系作来Schema,而面向对象数据库通过定义类来描述Schema,一般的OOD需要ODL语言来定义,而DB4O直接通过JAVA语言本身来定义,是完全本地化的对象,这样可以做更多ODL不能做的事

三,对象关系。对象通过OID来标识彼此的关系(即引用),因而如果A持有B的引用,而B没有A的引用,那么可以知道A含有哪个(些)B,但不能直接知道B被哪些A包含。关系型数据库通过外键来标识彼此间的关系,但相对来说严格很多,比如A有个外键指向B,那么就不允许存在一条没有B的A。而对于数据间一对一,一对多,多对一,多对多的关系处理上,OODB比RDB容易一些,但DB4O却又比一般的OODB容易许多,因为只要能用Java表示的关系就可以用它来表示

四,索引。RDB索引的目的是为了加快查询,OODB也是出于此目的,因而索引两者差不多

五,查询。RDB查询的结果是满足条件的一条或一组数据,如果你要取出对象你还得重新组装,如果是复杂数据你还有可能要查询多次才能满足要求,而ODB取出的数据本身就是一个对象,你可以直接取得它的引用而不需要再去重新组装,从这一意义上说,它可以让你省下很多编码的事情。

六,事务和并发。RDB和OODB都支持事务和并发