許多公司都已經將 Druid 應用於多種不同的應用場景。請訪問 使用 Apache Druid 的公司 頁面來了解都有哪些公司使用了 Druid。
如果您的使用場景符合下面的一些特性,那麼Druid 將會是一個非常不錯的選擇:
- 數據的插入頻率非常高,但是更新頻率非常低。
- 大部分的查詢爲聚合查詢(aggregation)和報表查詢(reporting queries),例如我們常使用的 “group by” 查詢。同時還有一些檢索和掃描查詢。
- 查詢的延遲被限制在 100ms 到 幾秒鐘之間。
- 你的數據具有時間組件(屬性)。針對時間相關的屬性,Druid 進行特殊的設計和優化。
- 你可能具有多個數據表,但是查詢通常只針對一個大型的分佈數據表,但是,查詢又可能需要查詢多個較小的
lookup
表。 - 如果你的數據中具有高基數(high cardinality)數據字段,例如 URLs、用戶 IDs,但是你需要對這些字段進行快速計數和排序。
- 你需要從 Kafka,HDFS,文本文件,或者對象存儲(例如,AWS S3)中載入數據。
如果你的使用場景是下面的一些情況的話,Druid 不是一個較好的選擇:
- 針對一個已經存在的記錄,使用主鍵(primary key)進行低延遲的更新操作。Druid 支持流式插入(streaming inserts)數據,但是並不很好的支持流式更新(streaming updates)數據。 Druid 的更新操作是通過後臺批處理完成的。
- 你的系統類似的是一個離線的報表系統,查詢的延遲不是系統設計的重要考慮。
- 使用場景中需要對錶(Fact Table)進行連接查詢,並且針對這個查詢你可以介紹比較高的延遲來等待查詢的完成。