第四章:druid.io的功能

目前druid.io的版本已經發展到0.7.1了,其功能也在不斷的完善中,功能的基本描述及使用在官方文檔上面已經有很詳細的介紹。

這裏將不對功能做過多的描述,重點是在用的過程和怎麼用。


目前druid.io提供了幾個查詢類型功能:
1、groupby
2、search
3、segment Metadata
4、timeseries
5、topN
6、datasource metadata
其中1、2、4、5屬於使用功能;3、6屬於管理功能。
在使用功能範圍內,使用非常頻繁的是1、4,然後是2、5。
先說簡單的使用:
對於search應用,類似於在輸入框裏進行自動補全功能,不過druid.io支持的多個維度匹配和對多個value的匹配,個人覺得search的場景有很多替代方案。多個維度search做過濾時,是沒有記錄關聯性的。對於另一個topN來說,應用場景多數是排行榜這樣的統計,例如:統計下載量排名前十的APP,topN是groupby功能的一個特例,在druid.io單獨作爲一個功能是對其進行了優化處理。關於排序的方式也有很多細節的區別,例如:數字排序、lexicographic、AlphaNumberic等。 AlphaNumberic方式功能很強,如下:
Traditional

Alphanum
z1.doc
z10.doc
z100.doc
z101.doc
z102.doc
z11.doc
z12.doc
z13.doc
z14.doc
z15.doc
z16.doc
z17.doc
z18.doc
z19.doc
z2.doc
z20.doc
z3.doc
z4.doc
z5.doc
z6.doc
z7.doc
z8.doc
z9.doc
        

z1.doc
z2.doc
z3.doc
z4.doc
z5.doc
z6.doc
z7.doc
z8.doc
z9.doc
z10.doc
z11.doc
z12.doc
z13.doc
z14.doc
z15.doc
z16.doc
z17.doc
z18.doc
z19.doc
z20.doc
z100.doc
z101.doc
z102.doc
目前的topN只支持單維度。
關於timeseries的方式,也可以認爲是groupby功能的一個特例,主要針對沒有維度選擇的場景,這樣可以提高計算和響應時間。

重點說下groupby類型,因爲它是其它查詢類型延伸的基礎,整個groupby類型,包含維度選擇、統計指標選擇、過濾條件、時間範圍及時區、排序方式、結果集返回大小,數據集選擇。

維度選擇屬性dimensions
對於維度,細節可以做到展示名稱與存儲名稱分離;提供維度值轉換後的統計方式,例如:我要按ip前三段來做統計
click_ip
click 
conversion
119.30.23.111
1
0
119.30.23.121
1
0
119.30.23.130
0
1
201.22.308.55
1
0
202.67.22.306
1
0
202.67.22.307
1
0
202.67.22.308
0
1
119.20.11.35
1
0
按前三段統計結果如下:
click_ip
click 
conversion
119.30.23
2 1
201.22.308
1
0
202.67.22
2
1
119.20.11
1
0
關於維度的值怎麼轉換,文檔有詳細的介紹js方式、正則方式等都有(在早期的版本中js的轉換功能沒有實現,在我們後面集成的0.6.121.1版本里已經實現了),目前新的版本(0.7.1.1)增加了對時間的處理。

過濾條件選擇屬性filters
注意:filters的處理是針對dimension的。
filters支持層級條件(通過and和or兩個邏輯操作符進行),也是支持等於、js方式、正則方式進行判斷。這裏延伸出來一個問題就是對當前維度過濾,並且當前維度有轉換邏輯,那麼這兩個邏輯在一起誰先執行呢?
如果需要對aggregations過濾使用Having語法功能。

統計指標屬性aggregations和postaggregations。
我們先來了解下aggregations,引擎提供了最基礎的方式:count、longsum、doublesum、min、max。
druid.io在針對aggregations的支持非常強悍,因爲使用了js的引擎,所以能夠非常靈活的應對不同的業務計算場景(包括複雜的計算邏輯),而且是配置化(個人使用感覺類似於fork/join和MR),並且也支持常量,dimension和metrics都可以參與其中。

postaggregations是在aggregations的基礎之上在進行的處理,主要是對指標進行一個橫向的二次計算處理,這兩部分很重要,需要在實戰中好好體會。
時間範圍其實關聯兩方面,一個跟數據存儲相關;一個跟數據查詢相關;另一個特點就是支持時區轉換查詢特別適合業務範圍屬於全球化的公司。

結果集的默認返回是全量(這裏涉及到對數據量的控制),當然爲了快速響應是有一個limit的設置。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章