pipelinedb是基于postgresql研發的一種流式關系資料庫(0.8.1基于9.4.4),這種資料庫的特點是自動處理流式資料,不存儲原始資料,隻存儲處理後的資料,是以非常适合當下流行的實時流式資料處理,例如網站流量統計,it服務的監控統計,appstore的浏覽統計等等。
例子:
建立動态流視圖,不需要對表進行定義,太棒了,這類似活生生的nosql。
激活流視圖
往流寫入資料
查詢流視圖
在本地虛拟機進行試用
安裝
配置
初始化資料庫
和流處理相關的參數,例如設定記憶體大小,是否同步,合并的batch,工作程序數等等。
啟動資料庫,可以看到原生是支援postgis的,吐個槽,這個項目是專門為nasa研發的麼?
檢視pipelinedb加了哪些函數,有些是插件形式加入的,如postgis,有些是我們可以借鑒,直接拿來用的。
可以看到pipelinedb加入了hll,bloom,tdigest,cmsketch算法,還有很多可以發掘,例如支援grouping set, 視窗查詢的流視圖等等。
在我自己的筆記本中的虛拟機中的性能測試:
建立5個動态流視圖,動态流視圖就是不需要建立基表的流視圖。
激活流統計
檢視資料字典
批量插入測試
測試結果,注意這裡需要使用simple或者extended , 如果用prepared會導緻隻有最後一條sql起作用。現在不清楚是pipelinedb還是pgbench的bug。
每秒入庫約58萬條記錄,并完成5個流視圖的統計。
如果用實體機的話,估計可以到500萬每秒的級别。後面有時間再試試。
因為都在記憶體中完成,是以速度非常快。
pipelinedb使用了worker程序來處理資料合并。
壓測時的top如下:
在寫入 10 億 流資料後,資料庫的大小依舊隻有13mb,因為流資料都在記憶體中,處理完就丢棄了。
如果你的應用有類似場景,恭喜你,找到殺手锏了。
[參考]
https://github.com/pipelinedb/pipelinedb
https://www.pipelinedb.com/