實時OLAP分析利器Druid介紹

来源:https://www.cnblogs.com/guichenglin/archive/2020/04/16/12716475.html
-Advertisement-
Play Games

文章目錄 前言 Druid介紹 主要特性 基礎概念 數據格式 數據攝入 數據存儲 數據查詢 查詢類型 架構 運維 OLAP方案對比 使用場景 使用建議 參考 近期主題 前言 項目早期、數據(報表分析)的生產、存儲和獲取業務,MySQL基本上可以滿足需要,但是隨著業務的快速增長,數據量翻至億為單位時, ...


文章目錄

前言

Druid介紹

主要特性

基礎概念

數據格式

數據攝入

數據存儲

數據查詢

查詢類型

架構

運維

OLAP方案對比

使用場景

使用建議

參考

近期主題

 


前言

項目早期、數據(報表分析)的生產、存儲和獲取業務,MySQL基本上可以滿足需要,但是隨著業務的快速增長,數據量翻至億為單位時,MySQL無法滿足例如:快速實時返回“分組+聚合計算+排序聚合指標”查詢需求。記得還是2017年之後,對當時的幾款OLAP進行了調研,用線上數據訓練。當時Druid在性能和功能上基本上能夠滿足需要,下麵介紹一下Apache Druid。

Druid介紹

Apache Druid 是一個高性能實時分析資料庫,在複雜的海量數據下進行互動式實時數據展現的OLAP工具。能夠處理TB級別數據,毫秒級響應。目前國內在使用的公司有:阿裡、滴滴、知乎、360、eBay,Hulu等。官方網址:http://druid.io

主要特性

  1. 開源、列式存儲,預聚合
  2. 實時流式和批量數據攝入
  3. 靈活的數據模式、支持SQL查詢
  4. 擴展方便,容易運維
  5. TB,PB級別的數據處理

基礎概念

數據格式

    數據源:datasource,datasource的結構有:時間列(timestamp)、維度列(Dimension)和指標列(Metric)

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

    維度列:標識一些統計的維度,比如:名稱、類別等

    指標列:用於聚合和計算的列,比如:訪問總數、合計金額等

timestamp

demensions

metric

date

userid

username

age

sex

visits

costs

2020-01-01T00:00:00Z

100001

張三

20

201

20.10

2020-01-01T00:00:00Z

100002

李四

21

160

16.00

2020-01-01T00:00:00Z

100003

王五

20

100

10.00

數據攝入

    同時支持流式和批量數據攝入。通常通過像 Kafka 這樣的消息匯流排(載入流式數據)或通過像 HDFS 這樣的分散式文件系統(載入批量數據)來連接原始數據源。

Druid 通過 Indexing 處理將原始數據以 segment 的方式存儲在數據節點,segment 是一種查詢優化的數據結構。

數據存儲

Druid 採用列式存儲。根據不同列的數據類型(string,number 等),Druid 對其使用不同的壓縮和編碼方式。Druid 也會針對不同的列類型構建不同類型的索引。

類似於檢索系統,Druid 為 string 列創建反向索引,以達到更快速的搜索和過濾。類似於時間序列資料庫,Druid 基於時間對數據進行智能分區,以達到更快的基於時間的查詢。

不像大多數傳統系統,Druid 可以在數據攝入前對數據進行預聚合。這種預聚合操作被稱之為 rollup,這樣就可以顯著的節省存儲成本。

數據查詢

    支持兩種查詢:JSON-HTTP,SQL兩種方式

查詢類型

    Timeseries:基於時間範圍查詢的類型

    TopN:基於單維度的排名查詢

    GroupBy:基於多維度的分組查詢

架構

運維

Druid是非常健壯的系統,Druid 擁有數據副本、獨立服務、自動數據備份和滾動更新,以確保長期運行,並保證數據不丟失。

OLAP方案對比

 

Druid

Kylin

Elasticsearch

Spark SQL

數據規模

超大

超大

中等

超大

查詢效率

中等

併發度

SQL支持

靈活度

Druid:是一個實時處理時序數據的OLAP資料庫,因為它的索引首先按照時間分片,查詢的時候也是按照時間線去路由索引。

Kylin:核心是Cube,Cube是一種預計算技術,基本思路是預先對數據作多維索引,查詢時只掃描索引而不訪問原始數據從而提速。

ES:最大的特點是使用了倒排索引解決索引問題。根據研究,ES在數據獲取和聚集用的資源比在Druid高。

Spark SQL:基於Spark平臺上的一個OLAP框架,基本思路是增加機器來並行計算,從而提高查詢速度。

使用場景

  • 廣告數據分析
  • 風控分析
  • 伺服器指標存儲
  • 應用性能指標
  • 實時線上分析系統 OLAP
  • 實時報表分析
  • 離線+實時數據源
  • 行為數據分析

使用建議

  1. 時序化數據:所有行記錄中必須有日期指標
  2. OLAP併發有限,不適合OLTP查詢,建議首次回源加Cache
  3. 目前不支持JOIN操作,不支持數據更新
  4. 離線數據替換前一天實時數據
  5. 分頁支持的不夠完善

另外、Druid在項目中已經投產多年,用OLAP方案解決業務上的問題,整理技術點為了方便相似業務同學參考和使用。

參考

https://druid.apache.org/docs/latest/design/

近期主題:

  • Druid在數據分析需求中的學習和應用

  • Druid多種應用場景的實戰

  • 定時任務到分散式服務的演變

 


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

-Advertisement-
Play Games
更多相關文章
  • 製作鏡像有2種方式,一種是容器轉換成鏡像,另一種是使用dockerfile創建鏡像,一般後者更常用。 容器轉為鏡像 使用 命令將容器轉換成鏡像 需要轉移鏡像時,將該鏡像打成一個包 在另一臺電腦載入這個鏡像時,載入這個包 使用dockerfile創建鏡像(推薦) dockerfile是一個文本文件,包 ...
  • 最近發現我們開發環境的 IIS 上的 SSL 證書過期了,為了後面方便維護和更新,搞了一個 powershell 腳本,以後要更新的時候直接跑一下腳本就可以了,所以有了這篇文章 ...
  • 本教程主要介紹如何在Ubuntu 18.04系統上實現Spire.Cloud私有化部署。CentOS 7系統部署請參考 這篇教程。 詳細步驟如下: 一、環境配置 1、關閉防火牆 1)首先查看防火牆狀態 ufw status verbose (非管理員需在最前面加sudo) 預設情況下,防火牆狀態是i ...
  • 基本GCC命令的使用 GCC是一套由GNU項目開發的編程語言編譯器,可處理C語言、 C++、Fortran、Pascal、Objective C、Java等等。GCC通常是 跨平臺軟體的編譯器首選。gcc是GCC套件中的編譯驅動程式名。 若電腦是x86 64位系統,為了編譯成IA 32指令集, 則 ...
  • 目錄和文件都能操作的命令 rm cp mv rm 英文原意:remove files or directories 功能:刪除文件或目錄 語法:rm 選項[ fir] 文件或目錄 cp 英文原意:copy files and directories 功能:複製文件和目錄 語法:cp 選項[ adil ...
  • 本文主要給大家羅列了HBase協處理器載入的三種方式:Shell載入(動態)、Api載入(動態)、配置文件載入(靜態)。其中靜態載入方式需要重啟HBase。 我們假設我們已經有一個現成的需要載入的協處理器Jar包: HelloCoprocessor 0.0.1.jar 。 協處理器載入的三種方式 S ...
  • 一個問題 有一張表test,這張表除了主鍵id外,還有a,b, c 三列 假設給這三個欄位建一個複合索引 index_abc (a, b, c),問,下麵幾種查詢中,哪種查詢會用到索引 index_abc ? 1. 查詢一 select * from test where a > 1000 and ...
  • 前言:當項目上線並穩定運行後,我們就需要考慮自動備份功能了,自動備份固然簡單,但是需要相應的自動刪除來配合使用。 首先我們打開SqlServer管理工具(SSMS),在左側目錄中找到 管理-->右鍵維護計劃-->新建維護計劃 雙擊左側下方目錄:創建 ”清除維護“ 任務 雙擊後打開提示視窗,我們設置 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...