標籤:
官網:http://www.pipelinedb.com/
pipelineDB是基於postgres的stream資料庫。完全相容pg的東西。
由於產品需要解決效能這塊瓶頸,老大讓試試這款基於StreamCompute的資料庫。
[[email protected] ~]$ pipeline
pipeline (9.4.4)
Type "help" for help.
Create a static stream
CREATE STREAM stream_test1 (x integer, y integer,z text);
Create a CONTINUOUS
CREATE CONTINUOUS VIEW v_sum as select sum( x + y ) FROM stream_test1;
CREATE CONTINUOUS VIEW V_GROUP AS SELECT count(*) as coun,x,y,z FROM stream_test1 GROUP BY x,y,z;
Stream 只能被CONTINUOUS查詢,如果直接查詢會報錯:
pipeline=# select * from stream_test1;ERROR: "stream_test1" is a streamHINT: Streams can only be read by a continuous view‘s FROM clause.
插入資料到Stream
pipeline=# INSERT INTO stream_test1(x,y,z) VALUES(1,2,‘A‘),(3,4,‘B‘),(5,6,‘C‘),(7,8,‘D‘),(1,2,‘A‘);INSERT 0 5
查詢結果
pipeline=# select * from v_sum; sum ----- 39(1 row)pipeline=# select * from v_group; coun | x | y | z ------+---+---+--- 1 | 5 | 6 | C 1 | 7 | 8 | D 1 | 3 | 4 | B 2 | 1 | 2 | A(4 rows)
在建立CONTINUOUS,後面select能寫分析函數,各種over(),這樣資料在不同視窗內時時計算,能很方便的解決效能問題。
這個view沒太詳細研究,貌似跟oracle的物化視圖類似。
關於UDF
PG是支援預存程序的,自己寫FUNCTION,也支援PLLUA。
因為資料是從外部入庫,我這塊想把PLLUA整合到PG裡面來,自己寫LUA來做庫內計算。
拿LUA替代plpgsql,效能應該會有很大一部分提升,有待測試。
pipelineDB初體驗