天天看點

PostgreSQL schemaless 的實作(類mongodb collection)

postgresql , schemaless , mongodb

使用mongodb時,并不需要先建表(collection),直接就可以往裡面寫,原因是collection本事就是固定的bson結構。

是以當使用者插入時,如果表不存在,建一個bson結構的colleciton即可。

而關系資料庫無法做到這一點,因為關系資料庫的表結構都是事先建構,并且在寫入資料時,是需要檢查對應的類型,限制的。

那麼有沒有辦法讓postgresql關系資料庫也實作類似mongo這種schemaless的表呢?

使用者通過調用函數,寫入資料。

在函數中處理并實作schemaless。

建立一個自動建表的函數,用于自動建立目标表。

建立一個插入資料的函數,使用動态sql,如果遇到表不存在的錯誤,則調用建表函數進行建表。

調用函數插入資料,不需要建表,會自動建立。

函數支援并發插入,不會互相影響。

由于使用了動态sql,性能略差。

使用綁定變量,性能如下。

損失11萬的qps,獲得schemaless的能力,要不要呢?

當然,如果是從核心層面來支援就更爽了,性能問題可能也能得到解決,比如。