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
- sql查詢過程表述SQL
- 理解索引(中):MySQL查詢過程和高階查詢索引MySql
- MySQL系列之一條SQL查詢語句的執行過程MySql
- 儲存過程模糊查詢(like)儲存過程
- 閃回查詢恢復過程
- 查詢儲存過程報錯資訊儲存過程
- ORACLE 查詢語句處理過程(Oracle
- django 動態查詢實現過程Django
- 儲存過程結果進行查詢 select 存過過程儲存過程
- 一條select的查詢的過程
- MySQL學習 - 查詢的執行過程MySql
- SQLServer查詢使用者儲存過程SQLServer儲存過程
- Urule開源版系列5——RuleSetParser解析過程
- MySQL 查詢語句執行過程淺析MySql
- 第 16 課 PostgreSQL查詢過程原始碼分析SQL原始碼
- 帶有儲存過程的組合查詢儲存過程
- GaussDB SQL查詢語句執行過程解析SQL
- Chapter 5 查詢APT
- 查詢某個儲存過程有哪些內容儲存過程
- 在Oracle中查詢儲存過程和函式Oracle儲存過程函式
- 【sqlserver】查詢阻塞儲存過程sp_who_lockSQLServer儲存過程
- JAVA + Oracle儲存過程返回查詢結果集JavaOracle儲存過程
- mysql查詢語句5:連線查詢MySql
- Sql Server系列:SQL語句查詢資料庫中表、檢視、儲存過程等組成SQLServer資料庫儲存過程
- 如何查詢一個儲存過程是否在執行儲存過程
- SQL解析過程中的查詢轉換 - Transforming QueriesSQLORM
- 查詢多張表記錄數的儲存過程儲存過程
- Oracle 單個表查詢速度極慢處理過程Oracle
- Ms Sql Server查詢儲存過程中的內容SQLServer儲存過程
- MySQL入門系列:查詢簡介(五)之子查詢MySql
- Elasticsearch系列---聚合查詢(一)Elasticsearch
- Elasticsearch系列---聚合查詢原理Elasticsearch
- Sql Server系列:子查詢SQLServer
- ElasticSearch分片互動過程(建立索引、刪除索引、查詢索引)Elasticsearch索引
- MySQL儲存過程使用if子查詢判斷需要注意MySql儲存過程
- 儲存過程中的符合條件查詢 and 1= ''+@knlgName+''儲存過程