NoSQL資料庫最近很夯,而關聯式資料庫陣營也加緊開發腳步,更新功能以跟上大量資料時代的腳步。關聯式資料庫系統PostgreSQL釋出了9.5 Alpha版,不只增加了提升安全性的功能,也支援處理大量資料的新技術。

在安全性方面,PostgreSQL 9.5加強了資料表的權限管理,過去使用者只要登入資料庫的帳號,所有表格的資料便一覽無遺。而PostgreSQL 9.5提供列(Row)的安全性管理,讓資料庫的超級管理者可以設定每個帳號的權限等級,依據帳號的權限等級,限制可看到列資料的範圍。

而有鑑於資料表中的資料量愈來越多,尤其是用來儲存時間戳記或是Log的表格,PostgreSQL 9.5提供了BRIN(Block Range Index )索引功能,以加快查詢的時間。之所以使用BRIN而非B-Tree的原因是基於使用成本的權衡,雖然BRIN索引的速度不比B-Tree,但是建立B-Tree需要耗費大量的硬碟空間以及維護的成本。BRIN索引雖然稍慢一些,但是需要多使用的硬碟容量逺比B-Tree的少,而且維護工作也少上許多。

除了像是資料倉儲等級的儲存容器,很少會提供內文排序這種需要耗費大量運算成本的排序功能,而PostgreSQL 9.5為文字建立索引的方式,提供了一個可以用簡短鍵值(Abbreviated keys)排序文字(Text)欄位的框架。

在PostgreSQL 9.4就引入的新型態資料格式JSONB,雖然在9.2版本,PostgreSQL就以完整支援JSON(JavaScript Object Notation)格式,但是JSON儲存的方式是文字(Text),當需要處理時需要被重新解析,但是JSONB是以拆解的二進位格式(Decomposed Binary Format)存在,由於不需重新解析因此JSONB的處理速度較快,另一個優勢則是JSONB可以建立索引。

而PostgreSQL 9.5也增加了幾個運算子,||運算子可以讓開發者使同時操作兩個JSONB的值,而-運算子可以移除字串或是陣列的最上層欄位,另外,#-預算子可依照巢狀路徑移除巢狀鍵值與值。PostgreSQL 9.5同時也新增了三個JSONB的函式,jsonb_set()可依照巢狀路徑更新鍵值的值,json_strip_nulls()能夠移除所有值為null的鍵值,jsonb_pretty()就如函式名稱一樣,會漂亮的印出JSONB的值,而非丟出一串很長的字串。


Advertisement

更多 iThome相關內容