LinkedIn 開源 OLAP 存儲和分析系統:Pinot
Pinot 是一個實時分布式的 OLAP 數據存儲和分析系統。LinkedIn 使用它實現低延遲可伸縮的實時分析。Pinot 從離線數據源(包括 Hadoop 和各類文件)和在線數據源(如 Kafka)中攫取數據進行分析。Pinot 被設計是可以進行水平擴展的。
Pinot 特別適合這樣的數據分析場景:分析模型固定,數據只追加以及低延遲,以及分析結果可查詢。
關鍵特性:
-
面向列的數據庫,提供多種壓縮模式,如運行長度、固定比特長度
</li> -
可插入式的索引技術,包括可排序索引、Bitmap 索引和反向索引
</li> -
可根據查詢和段元數據對查詢和執行進行優化
</li> -
近乎實時的從 Kafka 獲取數據,以及批量從 Hadoop 獲取數據
</li> -
類 SQL 的語言支持查詢、聚合、過濾、分組、排序和去重
</li> -
支持多值字段
</li> -
水平伸縮以及容錯
</li> </ul>Pinot 非常使用用來查詢時許數據以及大維度的數組。
Pinot 的組件架構:
Pinot 核心概念:
示例查詢:
/Total number of documents in the table/ select count(*) from baseballStats limit 0
/Top 5 run scorers of all time/ select sum('runs') from baseballStats group by playerName top 5 limit 0
/Top 5 run scorers of the year 2000/ select sum('runs') from baseballStats where yearID=2000 group by playerName top 5 limit 0
/Top 10 run scorers after 2000/ select sum('runs') from baseballStats where yearID>=2000 group by playerName limit 0
/Select playerName,runs,homeRuns for 10 records from the table and order them by yearID/ select playerName,runs,homeRuns from baseballStats order by yearID limit 1</pre>