Apache Druid 中文翻譯- Introduction 簡介

什麼是Druid ?

Apache Druid是一個實時分析數據庫,旨在對大型數據集進行快速的切片和切分分析(“ OLAP ”查詢)。Druid最常用作數據庫,以支持對實時攝取,快速查詢性能和高正常運行時間很重要的用例。因此,Druid通常用於爲分析應用程序的GUI提供支持,或用作需要快速聚合的高併發API的後端。Druid最適合面向事件的數據。

Druid的常見應用領域包括:

  • 點擊流分析(網絡和移動分析)
  • 網絡遙測分析(網絡性能監控)
  • 服務器指標存儲
  • 供應鏈分析(製造指標)
  • 應用程序性能指標
  • 數字營銷/廣告分析
  • 商業智能/ OLAP

Druid的核心架構結合了數據倉庫,時序數據庫和日誌搜索系統的思想。它的的一些主要功能是:

  1. 列式存儲格式。Druid使用面向列的存儲,這意味着它僅需要加載特定查詢所需的確切列。這極大地提高了僅命中幾列的查詢的速度。此外,每列都針對其特定數據類型進行了優化存儲,從而支持快速掃描和聚合。
  2. 可擴展的分佈式系統。Druid通常部署在數十到數百臺服務器的集羣中,並且可以提供每秒數百萬條記錄的接收速率,數萬億條記錄的保留以及亞秒級到幾秒的查詢延遲。
  3. 大規模並行處理。Druid可以在整個集羣中並行處理查詢。
  4. 實時或批量攝取。Druid可以實時(攝取的數據可立即用於查詢)或批量攝取數據。
  5. 自我修復,自我平衡,易於操作。作爲操作員,要擴展或擴展集羣,只需添加或刪除服務器,集羣就會在後臺自動重新平衡自身,而不會造成任何停機。如果任何Druid服務器發生故障,系統將自動繞過損壞的機器,直到可以更換這些服務器爲止。Druid設計爲24/7全天候運行,而無需出於任何原因而導致計劃內的停機,包括配置更改和軟件更新。
  6. 雲原生的容錯架構,不會丟失數據。一旦Druid攝取了數據,就會在在深度存儲(通常是雲存儲,HDFS或共享文件系統)中創建一個副本。即使全部的Druid服務器發生故障,也可以從深度存儲中恢復您的數據。對於僅影響少數Druid服務器的有限故障,可以通過複製確保在系統恢復時仍然可以進行查詢。
  7. 用於快速過濾的索引。Druid使用CONCISE或 Roaring壓縮的位圖索引來創建索引,以支持快速過濾和跨多列搜索。
  8. 基於時間的分區。Druid首先按時間對數據進行分區,然後可以根據其他字段進行分區。這意味着基於時間的查詢將僅訪問與查詢時間範圍匹配的分區。這將大大提高基於時間的數據的性能。
  9. 近似算法。德魯伊包括用於近似計數區別,近似排名以及近似直方圖和分位數計算的算法。這些算法提供有限的內存使用量,通常比精確計算要快得多。對於精度比速度更重要的情況,德魯伊還提供了精確的計數區別和精確的排名。
  10. 攝取時自動彙總。Druid可選地在攝取時支持數據彙總。這種彙總會部分地預先聚合您的數據,並可以節省大量成本並提高性能。

When should I use Druid? 什麼時候應該使用德魯伊?

許多公司都將Druid用於各種不同的用例。 Powered by Apache Druid頁面列出了一些公司的列表。

如果您的用例符合以下幾個描述符,則Druid可能是一個不錯的選擇:

  • 插入率很高,但更新並不常見。
  • 您的大多數查詢都是聚合查詢和報告查詢(“分組依據”查詢)。您可能還具有搜索和掃描查詢。
  • 您將查詢延遲目標定爲100毫秒到幾秒鐘。
  • 您的數據具有時間成分(Druid包括與時間特別相關的優化和設計選擇)。
  • 您可能有多個表,但是每個查詢僅命中一個大的分佈式表。查詢可能會擊中多個較小的“查找”表。
  • 您具有高基數數據列(例如URL,用戶ID),並且需要對其進行快速計數和排名。
  • 您想從Kafka,HDFS,平面文件或Amazon S3之類的對象存儲中加載數據。

如果存在下面的情況,您可能會希望使用德魯伊包括:

  • 您需要使用主鍵對現有記錄進行低延遲更新。Druid支持流插入,但不支持流更新(使用後臺批處理作業完成更新)。
  • 您正在構建一個脫機報告系統,其中查詢延遲不是很重要。
  • 您想要進行“大”聯接(將一個大事實表連接到另一個大事實表),並且可以花很長時間來完成這些查詢。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章