我應該在什麼時候使用 Apache Druid

許多公司都已經將 Druid 應用於多種不同的應用場景。請訪問 使用 Apache Druid 的公司 頁面來了解都有哪些公司使用了 Druid。

 

druid_architecture_diagram

 

如果您的使用場景符合下面的一些特性,那麼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)進行連接查詢,並且針對這個查詢你可以介紹比較高的延遲來等待查詢的完成。

https://www.ossez.com/t/apache-druid/13604

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章