Druid.io系列5:查詢過程
Druid使用JSON over HTTP 作為底層的查詢語言,不過強大的社群也為我們提供了多種查詢方式,比如Python介面pydruid、R介面RDruid、JavaScript介面plywood、類SQL介面plyql、PHP介面druid-php等。
Druid查詢目前只支援單表操作,基本涵蓋了ANSISQL中常用的查詢語句,包括:
聚合類(Aggregation)查詢
時間序列查詢
TopN查詢
GroupBy
元資訊(Metadata)類查詢
時間範圍查詢(資料集最早和最近出現時間點)
Segment元資訊
DataSource元資訊
搜尋類(Search)查詢(包括Select查詢)
不過Druid目前還不支援JOIN類操作,以上已支援的各類查詢的詳細說明可以參見:http://druid.io/docs/0.9.1.1/querying/searchquery.html
查詢過程
在介紹BrokerNode中已基本概述了Druid是如何查詢叢集內的資料。BrokerNode作為叢集內查詢入口,需要了解資料在叢集內的分佈情況,才能將查詢請求傳送給對應的資料節點(包括HistoricalNode和Real-TimeNode),BrokerNode會merge每個節點返回的資料,最終返回給使用者。
在這裡主要說下帶有過濾(filter)的查詢請求,我們知道Segments內部存在點陣圖索引,所以資料的過濾操作完全可以轉換為bitmap的按位邏輯操作,所以無論是HistoricalNodes還是Real-TimeNodes,都不需要去檢視原始資料,只需要通過點陣圖索引的按位邏輯操作,獲得符合過濾條件的行號,再取出需要的列返回給Broker即可。
相關文章
- Druid.io系列4:索引過程分析UI索引
- JVM系列(四):java方法的查詢過程實現JVMJava
- 理解索引(中):MySQL查詢過程和高階查詢索引MySql
- MySQL系列之一條SQL查詢語句的執行過程MySql
- 一條select的查詢的過程
- django 動態查詢實現過程Django
- MySQL學習 - 查詢的執行過程MySql
- SQLServer查詢使用者儲存過程SQLServer儲存過程
- 第 16 課 PostgreSQL查詢過程原始碼分析SQL原始碼
- GaussDB SQL查詢語句執行過程解析SQL
- MySQL 查詢語句執行過程淺析MySql
- Urule開源版系列5——RuleSetParser解析過程
- Chapter 5 查詢APT
- 如何查詢一個儲存過程是否在執行儲存過程
- Ms Sql Server查詢儲存過程中的內容SQLServer儲存過程
- mysql查詢語句5:連線查詢MySql
- MySQL入門系列:查詢簡介(五)之子查詢MySql
- Druid.io系列3:Druid叢集節點UI
- Elasticsearch系列---聚合查詢(一)Elasticsearch
- Elasticsearch系列---聚合查詢原理Elasticsearch
- Linux系列之查詢命令Linux
- ElasticSearch分片互動過程(建立索引、刪除索引、查詢索引)Elasticsearch索引
- 34. 過濾條件、多表查詢、子查詢
- DNS協議 是什麼?說說DNS 完整的查詢過程?DNS協議
- Elasticsearch——filter過濾查詢ElasticsearchFilter
- Elasticsearch 查詢與過濾Elasticsearch
- MySQL入門系列:查詢簡介(七)之組合查詢MySql
- SpringBoot 系列-啟動過程Spring Boot
- Vue歷史城市搜尋記錄查詢(攜程H5效果)VueH5
- 查詢當前資料庫存在某個字串的儲存過程資料庫字串儲存過程
- Druid.io通過NiFi攝取流資料UINifi
- mysql多條件過濾查詢之mysq高階查詢MySql
- SPF PermError:DNS 查詢過多ErrorDNS
- sphinx查詢過濾問題
- PHP 5 Dockerfile 改造過程PHPDocker
- mybatis原始碼學習:基於動態代理實現查詢全過程MyBatis原始碼
- Oracle服務啟動-索引-子查詢-分頁儲存過程問題Oracle索引儲存過程
- ES查詢之查詢屬性過濾、結果高亮顯示