0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分享一個高性能的實時分析型數(shù)據(jù)庫Apache Durid

工程師鄧生 ? 來源:碼哥字節(jié) ? 作者:MageByte技術(shù)團隊 ? 2022-09-01 12:09 ? 次閱讀

概覽

Apache Druid 是一個高性能的實時分析型數(shù)據(jù)庫。

一個現(xiàn)代化的云原生,流原生,分析型數(shù)據(jù)庫

Druid 是為快速查詢和快速攝入數(shù)據(jù)的工作流而設(shè)計的。Druid 強在有強大的 UI,運行時可操作查詢,和高性能并發(fā)處理。Druid 可以被視為一個滿足多樣化用戶場景的數(shù)據(jù)倉庫的開源替代品。

輕松與現(xiàn)有的數(shù)據(jù)管道集成

Druid 可以從消息總線流式獲取數(shù)據(jù)(如 Kafka,Amazon Kinesis),或從數(shù)據(jù)湖批量加載文件(如 HDFS,Amazon S3 和其他同類數(shù)據(jù)源)。

比傳統(tǒng)方案快 100 倍的性能

Druid 對數(shù)據(jù)攝入和數(shù)據(jù)查詢的基準性能測試大大超過了傳統(tǒng)解決方案。

Druid 的架構(gòu)融合了數(shù)據(jù)倉庫,時間序列數(shù)據(jù)庫和檢索系統(tǒng)最好的特性。

解鎖新的工作流

Druid 為 Clickstream,APM(應(yīng)用性能管理系統(tǒng)),supply chain(供應(yīng)鏈),網(wǎng)絡(luò)遙測,數(shù)字營銷和其他事件驅(qū)動形式的場景解鎖了新的查詢方式和工作流。Druid 專為實時和歷史數(shù)據(jù)的快速臨時查詢而構(gòu)建。

部署在 AWS/GCP/Azure,混合云,k8s 和租用服務(wù)器上

Druid 可以部署在任何*NIX 環(huán)境中。無論是內(nèi)部環(huán)境還是云環(huán)境。部署 Druid 是非常 easy 的:通過添加或刪減服務(wù)來擴容縮容。

使用場景

Apache Druid 適用于對實時數(shù)據(jù)提取,高性能查詢和高可用要求較高的場景。因此,Druid 通常被作為一個具有豐富 GUI 的分析系統(tǒng),或者作為一個需要快速聚合的高并發(fā) API 的后臺。Druid 更適合面向事件數(shù)據(jù)。

比較常見的使用場景:

點擊流分析(web 和 mobile 分析)

風(fēng)控分析

網(wǎng)路遙測分析(網(wǎng)絡(luò)性能監(jiān)控)

服務(wù)器指標存儲

供應(yīng)鏈分析(制造業(yè)指標)

應(yīng)用性能指標

商業(yè)智能/實時在線分析系統(tǒng) OLAP

下面將詳細分析這些使用場景:

用戶活動和行為

Druid 經(jīng)常用在點擊流,訪問流,和活動流數(shù)據(jù)上。具體場景包括:衡量用戶參與度,為產(chǎn)品發(fā)布追蹤 A/B 測試數(shù)據(jù),并了解用戶使用方式。Druid 可以做到精確和近似計算用戶指標,例如不重復(fù)計數(shù)指標。這意味著,如日活用戶指標可以在一秒鐘計算出近似值(平均精度 98%),以查看總體趨勢,或精確計算以展示給利益相關(guān)者。Druid 可以用來做“漏斗分析”,去測量有多少用戶做了某種操作,而沒有做另一個操作。這對產(chǎn)品追蹤用戶注冊十分有用。

網(wǎng)絡(luò)流

Druid 常常用來收集和分析網(wǎng)絡(luò)流數(shù)據(jù)。Druid 被用于管理以任意屬性切分組合的流數(shù)據(jù)。Druid 能夠提取大量網(wǎng)絡(luò)流記錄,并且能夠在查詢時快速對數(shù)十個屬性組合和排序,這有助于網(wǎng)絡(luò)流分析。這些屬性包括一些核心屬性,如 IP 和端口號,也包括一些額外添加的強化屬性,如地理位置,服務(wù),應(yīng)用,設(shè)備和 ASN。Druid 能夠處理非固定模式,這意味著你可以添加任何你想要的屬性。

數(shù)字營銷

Druid 常常用來存儲和查詢在線廣告數(shù)據(jù)。這些數(shù)據(jù)通常來自廣告服務(wù)商,它對衡量和理解廣告活動效果,點擊穿透率,轉(zhuǎn)換率(消耗率)等指標至關(guān)重要。

Druid 最初就是被設(shè)計成一個面向廣告數(shù)據(jù)的強大的面向用戶的分析型應(yīng)用程序。在存儲廣告數(shù)據(jù)方面,Druid 已經(jīng)有大量生產(chǎn)實踐,全世界有大量用戶在上千臺服務(wù)器上存儲了 PB 級數(shù)據(jù)。

應(yīng)用性能管理

Druid 常常用于追蹤應(yīng)用程序生成的可運營數(shù)據(jù)。和用戶活動使用場景類似,這些數(shù)據(jù)可以是關(guān)于用戶怎樣和應(yīng)用程序交互的,它可以是應(yīng)用程序自身上報的指標數(shù)據(jù)。Druid 可用于下鉆發(fā)現(xiàn)應(yīng)用程序不同組件的性能如何,定位瓶頸,和發(fā)現(xiàn)問題。

不像許多傳統(tǒng)解決方案,Druid 具有更小存儲容量,更小復(fù)雜度,更大數(shù)據(jù)吞吐的特點。它可以快速分析數(shù)以千計屬性的應(yīng)用事件,并計算復(fù)雜的加載,性能,利用率指標。比如,基于百分之 95 查詢延遲的 API 終端。我們可以以任何臨時屬性組織和切分數(shù)據(jù),如以天為時間切分數(shù)據(jù),如以用戶畫像統(tǒng)計,如按數(shù)據(jù)中心位置統(tǒng)計。

物聯(lián)網(wǎng)和設(shè)備指標

Driud 可以作為時間序列數(shù)據(jù)庫解決方案,來存儲處理服務(wù)器和設(shè)備的指標數(shù)據(jù)。收集機器生成的實時數(shù)據(jù),執(zhí)行快速臨時的分析,去估量性能,優(yōu)化硬件資源,和定位問題。

和許多傳統(tǒng)時間序列數(shù)據(jù)庫不同,Druid 本質(zhì)上是一個分析引擎。Druid 融合了時間序列數(shù)據(jù)庫,列式分析數(shù)據(jù)庫,和檢索系統(tǒng)的理念。它在單個系統(tǒng)中支持了基于時間分區(qū),列式存儲,和搜索索引。這意味著基于時間的查詢,數(shù)字聚合,和檢索過濾查詢都會特別快。

你可以在你的指標中包括百萬唯一維度值,并隨意按任何維度組合 group 和 filter(Druid 中的 dimension 維度類似于時間序列數(shù)據(jù)庫中的 tag)。你可以基于 tag group 和 rank,并計算大量復(fù)雜的指標。而且你在 tag 上檢索和過濾會比傳統(tǒng)時間序列數(shù)據(jù)庫更快。

OLAP 和商業(yè)智能

Druid 經(jīng)常用于商業(yè)智能場景。公司部署 Druid 去加速查詢和增強應(yīng)用。和基于 Hadoop 的 SQL 引擎(如 Presto 或 Hive)不同,Druid 為高并發(fā)和亞秒級查詢而設(shè)計,通過 UI 強化交互式數(shù)據(jù)查詢。這使得 Druid 更適合做真實的可視化交互分析。

技術(shù)

Apache Druid 是一個開源的分布式數(shù)據(jù)存儲引擎。Druid 的核心設(shè)計融合了 OLAP/analytic databases,timeseries database,和 search systems 的理念,以創(chuàng)造一個適用廣泛用例的統(tǒng)一系統(tǒng)。Druid 將這三種系統(tǒng)的主要特性融合進 Druid 的 ingestion layer(數(shù)據(jù)攝入層),storage format(存儲格式化層),querying layer(查詢層),和 core architecture(核心架構(gòu))中。

7002297a-292c-11ed-ba43-dac502259ad0.png

Druid 的主要特性包括:

列式存儲

Druid 單獨存儲并壓縮每一列數(shù)據(jù)。并且查詢時只查詢特定需要查詢的數(shù)據(jù),支持快速 scan,ranking 和 groupBy。

原生檢索索引

Druid 為 string 值創(chuàng)建反向索引以達到數(shù)據(jù)的快速搜索和過濾。

流式和批量數(shù)據(jù)攝入

開箱即用的 Apache kafka,HDFS,AWS S3 連接器 connectors,流式處理器。

靈活的數(shù)據(jù)模式

Druid 優(yōu)雅地適應(yīng)不斷變化的數(shù)據(jù)模式和嵌套數(shù)據(jù)類型。

基于時間的優(yōu)化分區(qū)

Druid 基于時間對數(shù)據(jù)進行智能分區(qū)。因此,Druid 基于時間的查詢將明顯快于傳統(tǒng)數(shù)據(jù)庫。

支持 SQL 語句

除了原生的基于 JSON 的查詢外,Druid 還支持基于 HTTP 和 JDBC 的 SQL。

水平擴展能力

百萬/秒的數(shù)據(jù)攝入速率,海量數(shù)據(jù)存儲,亞秒級查詢。

易于運維

可以通過添加或移除 Server 來擴容和縮容。Druid 支持自動重平衡,失效轉(zhuǎn)移。

數(shù)據(jù)攝入

Druid 同時支持流式和批量數(shù)據(jù)攝入。Druid 通常通過像 Kafka 這樣的消息總線(加載流式數(shù)據(jù))或通過像 HDFS 這樣的分布式文件系統(tǒng)(加載批量數(shù)據(jù))來連接原始數(shù)據(jù)源。

Druid 通過 Indexing 處理將原始數(shù)據(jù)以 segment 的方式存儲在數(shù)據(jù)節(jié)點,segment 是一種查詢優(yōu)化的數(shù)據(jù)結(jié)構(gòu)。

70141b94-292c-11ed-ba43-dac502259ad0.png

數(shù)據(jù)存儲

像大多數(shù)分析型數(shù)據(jù)庫一樣,Druid 采用列式存儲。根據(jù)不同列的數(shù)據(jù)類型(string,number 等),Druid 對其使用不同的壓縮和編碼方式。Druid 也會針對不同的列類型構(gòu)建不同類型的索引。

類似于檢索系統(tǒng),Druid 為 string 列創(chuàng)建反向索引,以達到更快速的搜索和過濾。類似于時間序列數(shù)據(jù)庫,Druid 基于時間對數(shù)據(jù)進行智能分區(qū),以達到更快的基于時間的查詢。

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

702422e6-292c-11ed-ba43-dac502259ad0.jpg

查詢

Druid 支持 JSON-over-HTTP 和 SQL 兩種查詢方式。除了標準的 SQL 操作外,Druid 還支持大量的唯一性操作,利用 Druid 提供的算法套件可以快速的進行計數(shù),排名和分位數(shù)計算。

704420dc-292c-11ed-ba43-dac502259ad0.png

架構(gòu)

Druid 是微服務(wù)架構(gòu),可以理解為一個拆解成多個服務(wù)的數(shù)據(jù)庫。Druid 的每一個核心服務(wù)(ingestion(攝入服務(wù)),querying(查詢服務(wù)),和 coordination(協(xié)調(diào)服務(wù)))都可以單獨部署或聯(lián)合部署在商業(yè)硬件上。

Druid 清晰的命名每一個服務(wù),以確保運維人員可以根據(jù)使用情況和負載情況很好地調(diào)整相應(yīng)服務(wù)的參數(shù)。例如,當(dāng)負載需要時,運維人員可以給數(shù)據(jù)攝入服務(wù)更多的資源而減少數(shù)據(jù)查詢服務(wù)的資源。

Druid 可以獨立失敗而不影響其他服務(wù)的運行。

7061d06e-292c-11ed-ba43-dac502259ad0.jpg

運維

Drui 被設(shè)計成一個健壯的系統(tǒng),它需要 7*24 小時運行。Druid 擁有以下特性,以確保長期運行,并保證數(shù)據(jù)不丟失。

數(shù)據(jù)副本

Druid 根據(jù)配置的副本數(shù)創(chuàng)建多個數(shù)據(jù)副本,所以單機失效不會影響 Druid 的查詢。

獨立服務(wù)

Druid 清晰的命名每一個主服務(wù),每一個服務(wù)都可以根據(jù)使用情況做相應(yīng)的調(diào)整。服務(wù)可以獨立失敗而不影響其他服務(wù)的正常運行。例如,如果數(shù)據(jù)攝入服務(wù)失效了,將沒有新的數(shù)據(jù)被加載進系統(tǒng),但是已經(jīng)存在的數(shù)據(jù)依然可以被查詢。

自動數(shù)據(jù)備份

Druid 自動備份所有已經(jīng) indexed 的數(shù)據(jù)到一個文件系統(tǒng),它可以是分布式文件系統(tǒng),如 HDFS。你可以丟失所有 Druid 集群的數(shù)據(jù),并快速從備份數(shù)據(jù)中重新加載。

滾動更新

通過滾動更新,你可以在不停機的情況下更新 Druid 集群,這樣對用戶就是無感知的。所有 Druid 版本都是向后兼容。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3752

    瀏覽量

    64236
  • 管理系統(tǒng)
    +關(guān)注

    關(guān)注

    1

    文章

    2380

    瀏覽量

    35767
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    640

    瀏覽量

    39491
  • APM
    APM
    +關(guān)注

    關(guān)注

    1

    文章

    71

    瀏覽量

    12976

原文標題:Apache Durid從入門到安裝詳解

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—通過拼接數(shù)據(jù)庫碎片恢復(fù)SQLserver數(shù)據(jù)庫

    運行在存儲上的SQLServer數(shù)據(jù)庫,有1000多個文件,大小幾十TB。數(shù)據(jù)庫每10天生成
    的頭像 發(fā)表于 10-31 13:21 ?107次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—通過拼接<b class='flag-5'>數(shù)據(jù)庫</b>碎片恢復(fù)SQLserver<b class='flag-5'>數(shù)據(jù)庫</b>

    軟件系統(tǒng)數(shù)據(jù)庫的分庫分表設(shè)計

    的分布式集群,實現(xiàn)分庫分表功能,解決數(shù)據(jù)庫中海量數(shù)據(jù)存儲和查詢性能的問題。MyCat 還是個數(shù)據(jù)庫的集群中間件,主要實現(xiàn) RDBMS
    的頭像 發(fā)表于 08-22 11:39 ?276次閱讀
    軟件系統(tǒng)<b class='flag-5'>數(shù)據(jù)庫</b>的分庫分表設(shè)計

    恒訊科技分析:跨境電商網(wǎng)站有哪些數(shù)據(jù)庫系統(tǒng)是推薦使用的?

    對于跨境電商網(wǎng)站,數(shù)據(jù)庫系統(tǒng)的選擇非常關(guān)鍵,以下是些推薦使用的數(shù)據(jù)庫系統(tǒng): 1、MySQL:MySQL是流行的開源關(guān)系
    的頭像 發(fā)表于 08-12 15:01 ?291次閱讀

    HarmonyOS開發(fā)案例:【搭建關(guān)系數(shù)據(jù)庫】(4)

    本節(jié)將介紹如何調(diào)用關(guān)系數(shù)據(jù)庫接口在本地搭建數(shù)據(jù)庫,并讀寫相應(yīng)的用戶數(shù)據(jù)。
    的頭像 發(fā)表于 05-11 10:27 ?727次閱讀
    HarmonyOS開發(fā)案例:【搭建關(guān)系<b class='flag-5'>型</b><b class='flag-5'>數(shù)據(jù)庫</b>】(4)

    深耕文檔數(shù)據(jù)庫12載,SequoiaDB再開源

    、易用性四方向的技術(shù)特性,宣布了2024年面向技術(shù)社區(qū)的開源計劃。此次發(fā)布活動不僅是對SequoiaDB性能的全面介紹,更是對十余年來始終堅守以JSON文檔數(shù)據(jù)庫內(nèi)核為技術(shù)底座的發(fā)
    的頭像 發(fā)表于 01-16 13:06 ?262次閱讀

    mysql怎么新建個數(shù)據(jù)庫

    mysql怎么新建個數(shù)據(jù)庫 如何新建個數(shù)據(jù)庫在MySQL中 創(chuàng)建個數(shù)據(jù)庫是MySQL中的基
    的頭像 發(fā)表于 12-28 10:01 ?837次閱讀

    輕量級數(shù)據(jù)庫有哪些類型

    關(guān)系數(shù)據(jù)庫是目前最常見的數(shù)據(jù)庫類型,它將數(shù)據(jù)以表的形式存儲,并使用SQL語言進行數(shù)據(jù)的管理和查詢。雖然關(guān)系
    的頭像 發(fā)表于 12-20 11:29 ?1162次閱讀

    常見的存儲Idea數(shù)據(jù)庫的地方

    Idea的數(shù)據(jù)庫被存儲在許多不同的地方,取決于應(yīng)用程序和使用的技術(shù)。下面將詳細描述些常見的存儲Idea數(shù)據(jù)庫的地方。 關(guān)系數(shù)據(jù)庫(RDB
    的頭像 發(fā)表于 12-06 14:15 ?897次閱讀

    mysql數(shù)據(jù)庫基礎(chǔ)命令

    MySQL是流行的關(guān)系數(shù)據(jù)庫管理系統(tǒng),經(jīng)常用于存儲、管理和操作數(shù)據(jù)。在本文中,我們將詳細介紹MySQL的基礎(chǔ)命令,并提供與每個命令相關(guān)
    的頭像 發(fā)表于 12-06 10:56 ?533次閱讀

    oracle數(shù)據(jù)庫的使用方法

    Oracle數(shù)據(jù)庫種關(guān)系數(shù)據(jù)庫管理系統(tǒng),它由Oracle公司開發(fā)和維護。它提供了安全、可靠和高性能
    的頭像 發(fā)表于 12-06 10:10 ?1157次閱讀

    oracle數(shù)據(jù)庫alert日志作用

    Oracle數(shù)據(jù)庫alert日志的作用、結(jié)構(gòu)和重要內(nèi)容。 、alert日志的作用 異常檢測和排查:alert日志能夠記錄數(shù)據(jù)庫引擎和實例發(fā)生的異常情況,如啟動、關(guān)閉、崩潰和重啟等。當(dāng)數(shù)據(jù)庫
    的頭像 發(fā)表于 12-06 10:08 ?1168次閱讀

    redis是關(guān)系數(shù)據(jù)庫

    Redis不是關(guān)系數(shù)據(jù)庫,它是種基于鍵值對的NoSQL數(shù)據(jù)庫。在本文中,我將對Redis進行詳細介紹,包括其特點、用途、常見命令和應(yīng)用場景等。 Redis(REmote DIcti
    的頭像 發(fā)表于 12-05 10:32 ?1475次閱讀

    NoSQL 數(shù)據(jù)庫如何選型

    什么是NoSQL數(shù)據(jù)庫?為什么要使用NoSQL數(shù)據(jù)庫?鍵值數(shù)據(jù)庫內(nèi)存鍵值數(shù)據(jù)庫文檔數(shù)據(jù)庫列式數(shù)據(jù)庫
    的頭像 發(fā)表于 11-26 08:05 ?428次閱讀
    NoSQL <b class='flag-5'>數(shù)據(jù)庫</b>如何選型

    Redis 不僅僅是內(nèi)存數(shù)據(jù)庫

    除了用作緩存與主數(shù)據(jù)庫之外,Redis還能夠提供大量其他的底層技術(shù)用于解決業(yè)務(wù)問題,包括實時分析驅(qū)動決策、高性能、關(guān)鍵數(shù)據(jù)的故障轉(zhuǎn)移和高速的數(shù)字支付等。文章速覽:基于
    的頭像 發(fā)表于 11-26 08:05 ?317次閱讀
    Redis 不僅僅是內(nèi)存<b class='flag-5'>數(shù)據(jù)庫</b>

    mysql是什么類型的數(shù)據(jù)庫

    MySQL是種關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),用于存儲和管理大量結(jié)構(gòu)化數(shù)據(jù)。它被廣泛用于各種應(yīng)用程序和網(wǎng)站的后端,包括電子商務(wù)平臺、社交媒體網(wǎng)站、金融系統(tǒng)等等。MySQL的特點是
    的頭像 發(fā)表于 11-16 14:43 ?1649次閱讀