把 PostgreSQL 当做对象数据库使用

原创
2019/03/28 22:37
阅读数 451

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

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

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

class Book {
	String id;
	String title;
	List<Author> authors;
}

class Author {
	String id;
	String name;
	List<Book> 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 那种好太多了么!

展开阅读全文
加载中
点击加入讨论🔥(2) 发布并加入讨论🔥
打赏
2 评论
0 收藏
0
分享
返回顶部
顶部