把 PostgreSQL 當作對象數據庫使用

衆所周知,PostgreSQL 是功能最爲強大的開源數據庫,以關係型爲基礎,添加了不少面向對象的功能,而且支持的數據類型能夠說是無所不包,就算原生不支持的,也能夠由用戶本身進行擴展,以知足用戶的需求。數據庫

PostgreSQL 中的數組類型,就能夠發揮很大的做用,有了它的支持,咱們即可以把 PostgreSQL 當作一個對象數據庫來使用。數組

好比咱們有如下對象類型:code

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 就夠了。it

這樣的數據存儲方式,不是比 MongoDB 那種好太多了麼!class

相關文章
相關標籤/搜索