1. 程式人生 > >把 PostgreSQL 當做物件資料庫使用

把 PostgreSQL 當做物件資料庫使用

開發十年,就只剩下這套架構體系了! >>>   

眾所周知,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 那