把 PostgreSQL 當做物件資料庫使用
阿新 • • 發佈:2019-03-29
眾所周知,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 那