众所周知,PostgreSQL 是功能最为强大的开源数据库,以关系型为基础,添加了很多面向对象的功能,并且支持的数据类型可以说是无所不包,就算原生不支持的,也可以由用户自己进行扩展,以满足用户的需求。

PostgreSQL 中的数组类型,就可以发挥很大的作用,有了它的支持,我们便可以把 PostgreSQL 当做一个对象数据库来使用。

比如我们有以下对象类型:

class Book {	String id;	String title;	List
 authors;}class Author { String id; String name; List
 books;}

我们也可以创建同样结构的数据库表:

CREATE TABLE book {	id character varying(32) NOT NULL PRIMARY KEY,	title character varying(50) NOT NULL,	authors character varying[] COMMENT 'ref: author.id',}CREATE TABLE author {	id character varying(32) NOT NULL PRIMARY KEY,	name character varying(20) NOT NULL,	books character varying[] COMMENT 'ref: book.id',}

怎么样?是不是和对象类型一模一样!

这样,我们就不再需要做对象-关系映射了。

我们可以把内存中的对象结构,原样保存到数据库中来。这时候,PostgreSQL 就变成了一个真正意义上的对象数据库!(别忘了,PostgreSQL 的表也是支持继承的哦!)

所有数据的查询、获取都是走的主键索引,就算你表中数据量再大,也是毫秒级返回。而且也可以实现懒加载,只有当你需要子对象的具体数据时,才会去数据库里查询获取,否则只返回一个 ID 就够了。

这样的数据存储方式,不是比 MongoDB 那种好太多了么!