什麼是Druid

来源:https://www.cnblogs.com/tree1123/archive/2020/02/03/12254632.html
-Advertisement-
Play Games

一、Druid是什麼 Druid 單詞來源於西方古羅馬的神話人物,中文常常翻譯成德魯伊。 玩過魔獸世界,暗黑破壞神,Dota,爐石傳說,Dota自走棋的朋友,對這個詞一定不陌生。 本文中所介紹的Druid是一個分散式的支持實時分析的數據存儲系統。通俗一點:高性能實時分析資料庫。它由美國廣告技術公司M ...


file

一、Druid是什麼

Druid 單詞來源於西方古羅馬的神話人物,中文常常翻譯成德魯伊。

玩過魔獸世界,暗黑破壞神,Dota,爐石傳說,Dota自走棋的朋友,對這個詞一定不陌生。

本文中所介紹的Druid是一個分散式的支持實時分析的數據存儲系統。通俗一點:高性能實時分析資料庫。它由美國廣告技術公司MetaMarkets於2011年創建,並且於2012年開源。MetaMarkets是一家專門為線上媒體公司提供數據服務的公司,主營是DSP廣告運營推送平臺,由於對實時性要求非常高,公司不得不放棄原始的大數據方案,Druid也就應運而生。

Druid的官方網站地址是:http://druid.io/

目前Druid已基於Apache License 2.0協議開源,正在由Apache孵化,代碼托管於Github。

最新官網地址為:

https://druid.apache.org/

file

阿裡曾開源過一個項目叫做Druid是一個資料庫連接池。與本文所述Driud只是名字相同,並沒有什麼聯繫,Github上兩者都有相應的版本庫。

file

本文說的Druid是Apache Druid

Github地址:https://github.com/apache/druid/ 已經有9k+star 最新release版本已經到0.17 正處於上升期。

file

二、Druid特性與基本概念

Druid主要解決的問題就是傳統資料庫無法解決的大數據量查詢性能的問題。

所以她的本質就是一個分散式支持實時數據分析的數據存儲系統。

能夠快速的實現查詢與數據分析,高可用,高擴展能力。

特性

1.快速查詢:druid提供了快速的聚合能力以及快速OLAP查詢能力,多租戶的設計,是面向用戶分析應用的理想方式。druid的數據聚合粒度可以是1分鐘,5分鐘,1小時或者1天等。數據的記憶體化提高了druid的查詢速度。

OLAP:與之相對的是OLTP,這裡通過一個線上商城舉例,比如在一個線上商城中兩者都是做什麼呢?

  • OLTP就是商品瀏覽,交易,用戶數據。必須支持事務,頻繁查詢修改。 OLTP(聯機事務處理),傳統資料庫的主要應用,面向最基本的CRUD操作,特點是實時性高,數據量小,可以修改刪除數據,要求有嚴格的事務。
  • OLAP就是對商城數據進行分析,數據量大。 OLAP(聯機分析處理),支持複雜的分析操作,對決策的支持,特點是數據量大,吞吐量大,只支持查詢。

2.實時數據註入:druid支持流數據的註入,並提供了數據的事件驅動,保證在實時和離線環境下事件的實效性和統一性。歷史數據不改變,實時數據實時接入。

3.可擴展的PB級存儲:druid集群可以很方便的擴容到PB的數據量,每秒百萬級別的數據註入。即便在加大數據規模的情況下,也能保證時其效性。druid可以按照時間範圍把聚合數據進行分區處理。

4.多環境部署:druid既可以運行在商業的硬體上,也可以運行在雲上。它可以從多種數據系統中註入數據,包括hadoop,spark,kafka,storm和samza等。

5.豐富的社區:druid擁有豐富的社區,供大家學習。

Metamarkets之前幾個druid開發者成立了一家叫做imply.io的新公司:https://imply.io/

Druid與其他OLAP方案對比:

file

使用場景

根據Druid的特性可知,druid適合的場景:

  • 查詢多修改很少

  • 查詢以聚合或分組為主

  • 快速查詢

  • 需要支持離線和實時的數據源

由此可見Druid在實時計算中,作為實時報表和實時大屏的查詢環節非常的合適。

而且druid具有非常好的性能:

高擴展使用列式存儲的分散式系統;高容錯,自平衡,保證查詢延遲和數據完整性;自動聚合,索引數據,提供多種演算法優化查詢效率。

所以druid中一般保存的是聚合後的數據。

基本概念

1、數據格式

druid在數據攝入之前,首先需要定義一個數據源也就是Datasource,這個dataSource的結構是 時間列(TimeStamp),維度列(Dimension)和指標列(Metric)。

時間列:druid會將時間相近的一些數據聚合在一起,查詢的時候指定時間範圍。

維度列:作為標識一些統計的維度,比如各種類型。

指標列:就是用於聚合和計算的列,包括count,sum等等。

2、數據攝入

druid提供了兩種數據攝入方式,實時和批處理。

file

3、數據查詢

druid支持兩種查詢,原生和sql

sql查詢大同小異

[ EXPLAIN PLAN FOR ]
[ WITH tableName [ ( column1, column2, ... ) ] AS ( query ) ]
SELECT [ ALL | DISTINCT ] { * | exprs }
FROM table
[ WHERE expr ]
[ GROUP BY exprs ]
[ HAVING expr ]
[ ORDER BY expr [ ASC | DESC ], expr [ ASC | DESC ], ... ]
[ LIMIT limit ]
[ UNION ALL <another query> ]

druid的原生查詢採用json方式,通過http傳送。

一個druid查詢groupby的例子,指定了時間範圍,聚合粒度,數據源等。

{
  "queryType": "groupBy",
  "dataSource": "sample_datasource",
  "granularity": "day",
  "dimensions": ["country", "device"],
  "limitSpec": { "type": "default", "limit": 5000, "columns": ["country", "data_transfer"] },
  "filter": {
    "type": "and",
    "fields": [
      { "type": "selector", "dimension": "carrier", "value": "AT&T" },
      { "type": "or",
        "fields": [
          { "type": "selector", "dimension": "make", "value": "Apple" },
          { "type": "selector", "dimension": "make", "value": "Samsung" }
        ]
      }
    ]
  },
  "aggregations": [
    { "type": "longSum", "name": "total_usage", "fieldName": "user_count" },
    { "type": "doubleSum", "name": "data_transfer", "fieldName": "data_transfer" }
  ],
  "postAggregations": [
    { "type": "arithmetic",
      "name": "avg_usage",
      "fn": "/",
      "fields": [
        { "type": "fieldAccess", "fieldName": "data_transfer" },
        { "type": "fieldAccess", "fieldName": "total_usage" }
      ]
    }
  ],
  "intervals": [ "2012-01-01T00:00:00.000/2012-01-03T00:00:00.000" ],
  "having": {
    "type": "greaterThan",
    "aggregation": "total_usage",
    "value": 100
  }
}

三、應用場景

druid常見應用領域包括:

  • 點擊流分析(網路和移動分析)
  • 風險/欺詐分析
  • 網路遙測分析(網路性能監控)
  • 伺服器指標存儲
  • 供應鏈分析(製造指標)
  • 應用程式性能指標
  • 商業智能/ OLAP

file

用戶行為分析

Druid可以用於,點擊流,視圖流,活動流。

準確地和近似地計算用戶指標,計算出日常活動用戶之類的平均指標,以查看總體趨勢,或者精確計算以呈現給運營部門。

數字營銷

Druid常用於存儲和查詢線上廣告數據。這些數據通常來自廣告伺服器,對於衡量和瞭解廣告系列的效果,點擊率,轉化率(損耗率)等等。

OLAP和BI

Druid通常用於BI,與Hive之類的SQL-on-Hadoop引擎不同,Druid專為高併發性和亞秒級查詢而設計,可通過UI進行互動式數據探索。

總之,在實時計算應用越來越廣泛的今天,druid將憑藉著她的高性能和OLAP的優勢,在實時的BI已經大屏等領域大放異彩!

靜下心來,努力的提升自己,永遠都沒有錯。更多實時計算相關博文,歡迎關註實時流式計算

file


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • centos系統搭建PXE網路安裝centos+ubuntu+Windows Centos搭建PXE,安裝部署操作系統 一 . 原理: 1.什麼是PXE: PXE(Pre-boot Execution Environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Se ...
  • SVN倉庫備份和遷移 author: yunqimg(ccxtcxx0) 前言 本文主要是講 SVN 倉庫的全量備份和增量備份,只包括基本操作. 如有疑問請參考 References. 倉庫備份 svnadmin dump 1. 備份方式多樣 2. 如果版本數過多,dump的過程將非常慢 3. 備份 ...
  • 此篇文章為博主在Linux學習過程中的一些記錄,記錄在此方便查閱。 常用命令總結 + ls 顯示目錄內容 (list directory contents) + 不顯示隱藏的文件和子目錄 + 顯示目錄中所有的文件和子目錄(包括隱藏文件) + 顯示目錄中文件和子目錄的詳細信息(包括許可權、大小、創建/修 ...
  • RocksDB介紹RocksDB簡介RocksDB是基於C++語言編寫的嵌入式KV存儲引擎,它不是一個分散式的DB,而是一個高效、高性能、單點的資料庫引擎。它是由Facebook基於Google開源的kv存儲LevelDB開發開發。RocksDB使用LSM存儲引擎。它針對不同的生產環境進行調優,可以 ...
  • 關於點陣圖,可能大家不太熟悉, 那麼點陣圖能幹啥呢?點陣圖的內容其實就是普通的字元串,也就是byte數組,我們都知道 byte 8 位無符號整數 0 到 255 說個場景。比如你處理一些業務時候,往往會存在 是或者不是 這樣的數據,那麼這種數據還是頻繁去查看和請求,從數據方面和請求次數方面都是非常的大的。 ...
  • Mysql5.6安裝 下載好安裝包後,在bin目錄下用cmd打開,輸入mysqld install 【服務名】新建個服務 在windows+r輸入services.msc即可查看服務 怎樣使用mysql 在本地電腦上安裝好mysql伺服器後,使用命令開啟mysql服務,命令為net start my ...
  • 近來學習scrap分散式,需要用到redis,但以前沒接觸過,所以記錄一下自己的安裝過程。 準備:Mac,redis-5.0.4.tar.gz 1.壓縮包到官網下(建議下載穩定版)網址:redis.io 2.我把壓縮包放在了/usr/local/下麵。 3.打開終端,找到壓縮包,在當前目錄下輸入:t ...
  • 【問題描述】 Queries_per_sec (QPS)是資料庫兩個比較重要的性能計數器指標。我們經常要求開發告知這個參數,以評估資料庫的一個負載情況。下麵的這段代碼連上伺服器,做一個簡單的查詢: using (MySqlConnection conn = new MySqlConnection() ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...