概念
druid是基于olap的數(shù)據(jù)庫查詢系統(tǒng)胃夏。有點類似現(xiàn)在開源的kylin耻讽。下面我先簡單介紹druid的一下基本概念,一些我認為需要重點展開和了解的闸拿,在后面會有章節(jié)具體介紹。
數(shù)據(jù)結構
druid里面的存儲的數(shù)據(jù)結構书幕,我直接拿了官方的例子
熟悉olap概念的話新荤,可以看到上面的數(shù)據(jù)可以分成三部分,分別是
Timestamp column:時間戳列台汇,我們所有的查詢都需要圍繞這個時間去做
Dimension columns: 維度列苛骨,publisher, advertiser, gender, and country這幾個字段都屬于這部分,通俗點就是作為你的查詢條件的并且不需要做聚合運算的字段苟呐。
Metric columns:度量列痒芝,如果你需要對click和price做求和或者其他聚合運算的話,是可以把這些字段作為度量列的牵素。
分片
上面說明了druid它的數(shù)據(jù)的一個表現(xiàn)形式严衬,現(xiàn)在就來了解一下它的存儲方式。?
druid它是按照一個個分片(segment)來存儲的笆呆,這個和elasticsearch是類似的请琳,目前我們使用的話,是按照天來劃分的赠幕,也就說timeStamp在同一天的話會分配到同一個分片里面俄精,這個粒度可以根據(jù)你們數(shù)據(jù)量大小做調(diào)整,官方是建議一個分片的大小在700m左右榕堰。?
dataSource_interval_version_partitionNumber 這個是分片的命名的格式竖慧。
roll-up
在大部分時候,druid獲取的每條的數(shù)據(jù)的詳情你是不關心的逆屡,你需要的是在某個粒度下某些維度聚合后的結果圾旨。類似下面這種結果
這樣的話,你就可以大大的節(jié)省存儲空間康二,查詢速度也會有大大的提高碳胳,當然損失的就是你查不了每條原始數(shù)據(jù)了。以上都可以通過配置文件配置沫勿,后面會專門說明這塊挨约。
數(shù)據(jù)查詢
durid原始支持http請求查詢,也提供了其它語言的查詢接口产雹,具體可用到官方文檔查http://druid.io/libraries.html
druid 集群
druid集群只要以下不同類型的節(jié)點組成诫惭,每個節(jié)點負責的事情也不一樣。
Historical Nodes :歷史數(shù)據(jù)節(jié)點的主要是通過zk獲得自己需要的元數(shù)據(jù)蔓挖,然后去下載或者刪除相關的分片夕土,并負責響應來自broker查詢的請求
Broker Nodes:接受來做客戶端的查詢請求,分析請求后,把請求分發(fā)到對應分片的歷史數(shù)據(jù)節(jié)點或者實時節(jié)點怨绣,響應返回后再對結果進行合并角溃。
Coordinator Nodes :負責管理存放在歷史數(shù)據(jù)節(jié)點的分片數(shù)據(jù),管理分片的分配篮撑。
Real-time Processing:實時處理節(jié)點减细,可以由自帶的realtime nodes 或者? indexing service去做,主要職責是負責實時數(shù)據(jù)的攝取赢笨,為數(shù)據(jù)創(chuàng)建索引未蝌,將處理好的數(shù)據(jù)發(fā)往歷史數(shù)據(jù)節(jié)點,接收來自broker的查詢請求茧妒。
安裝
druid原生的安裝過程比較繁瑣萧吠,所以用的是一個叫imply的安裝包,基本上一鍵安裝桐筏。地址?
這樣的話纸型,你就可以大大的節(jié)省存儲空間,查詢速度也會有大大的提高九昧,當然損失的就是你查不了每條原始數(shù)據(jù)了绊袋。以上都可以通過配置文件配置,后面會專門說明這塊铸鹰。
數(shù)據(jù)查詢
durid原始支持http請求查詢癌别,也提供了其它語言的查詢接口,具體可用到官方文檔查http://druid.io/libraries.html
druid 集群
druid集群只要以下不同類型的節(jié)點組成蹋笼,每個節(jié)點負責的事情也不一樣展姐。
Historical Nodes :歷史數(shù)據(jù)節(jié)點的主要是通過zk獲得自己需要的元數(shù)據(jù),然后去下載或者刪除相關的分片剖毯,并負責響應來自broker查詢的請求
Broker Nodes:接受來做客戶端的查詢請求圾笨,分析請求后,把請求分發(fā)到對應分片的歷史數(shù)據(jù)節(jié)點或者實時節(jié)點逊谋,響應返回后再對結果進行合并擂达。
Coordinator Nodes :負責管理存放在歷史數(shù)據(jù)節(jié)點的分片數(shù)據(jù),管理分片的分配胶滋。
Real-time Processing:實時處理節(jié)點板鬓,可以由自帶的realtime nodes 或者? indexing service去做,主要職責是負責實時數(shù)據(jù)的攝取究恤,為數(shù)據(jù)創(chuàng)建索引俭令,將處理好的數(shù)據(jù)發(fā)往歷史數(shù)據(jù)節(jié)點,接收來自broker的查詢請求部宿。
安裝
druid原生的安裝過程比較繁瑣抄腔,所以用的是一個叫imply的安裝包,基本上一鍵安裝。地址?