快速學習 Druid的資料結構

2021-10-04 07:11:13 字數 1211 閱讀 9982

與druid架構相輔相成的是其基於datasource與segment的資料結構,它們共同成就了 druid的高效能優勢。

若與傳統的關係型資料庫管理系統( rdbms)做比較,druid的datasource可以理解為 rdbms中的表(table)。datasource的結構包含以下幾個方面。

時間列( timestamp):表明每行資料的時間值,預設使用 utc時間格式且精確到毫秒級別。這個列是資料聚合與範圍查詢的重要維度。

維度列(dimension):維度來自於 olap的概念,用來標識資料行的各個類別資訊。

指標列( metric):指標對應於 olap概念中的 fact,是用於聚合和計算的列。這些指標列通常是一些數字,計算操作通常包括 count、sum和 mean等。

無論是實時資料消費還是批量資料處理, druid在基於datasource結構儲存資料時即可選擇對任意的指標列進行聚合( rollup)操作。該聚合操作主要基於維度列與時間範圍兩方面的情況。

下圖顯示的是執行聚合操作後 datasource的資料情況。

相對於其他時序資料庫, druid在資料儲存時便可對資料進行聚合操作是其一大特點,該特點使得 druid不僅能夠節省儲存空間,而且能夠提高聚合查詢的效率。

datasource是乙個邏輯概念, segment卻是資料的實際物理儲存格式, druid正是通過 segment實現了對資料的橫縱向切割( slice and dice)操作。從資料按時間分布的角度來看,通過引數 segmentgranularity的設定,druid將不同時間範圍內的資料儲存在不同的 segment資料塊中,這便是所謂的資料橫向切割。

這種設計為 druid帶來乙個顯而易見的優點:按時間範圍查詢資料時,僅需要訪問對應時間段內的這些 segment資料塊,而不需要進行全表資料範圍查詢,這使效率得到了極大的提高。

通過 segment將資料按時間範圍儲存,同時,在 segment中也面向列進行資料壓縮儲存,這便是所謂的資料縱向切割。而且在 segment中使用了 bitmap等技術對資料的訪問進行了優化。

druid字段級 Druid的資料結構

druid的資料結構 druid資料儲存結構可以分為三層 1.datasource 2.chunk 3.segment datasource相當於傳統資料庫的按時間分割槽的表,chunk相當於mysql中的按時間分割槽的表乙個分割槽,但是chunk不是乙個實體,只是乙個虛擬的概念,乙個chunk中可...

資料結構 快速排序

include include typedef struct qnode typedef struct qlist void qlist init qlist int int void qlist print qlist int part sort qlist int int void quick ...

資料結構 快速排序

快速排序是一種平均效能比較好的排序方法,它的平均效能是 nlogn 快速排序的演算法思想是 1 選取待排序記錄中的一項作為qvoit,即樞軸,以此作為基準,首先將待排序序列分為兩類,一類是比排序序列大的,在基準的右邊。一類是比基準小的,在基準的左邊,當然這裡排序的出發點是從左到右非遞減序列。2 對左...