大數據技術7:基于StarRocks統一OALP實時數倉

前言: 大家對StarRocks 的了解可能不及 ClickHouse或者是遠不及 ClickHouse?。但是大家可能聽說過 Doris ,而 StarRocks 實際上原名叫做 Doris DB ,他相當于是一個加強版的也就是一個 Doris+ ,也就是說 Doris 所有的功能 StarRocks 都是有的,但是 StarRocks 有的這種加速的功能 Doris 目前是沒有的。我們可以基于 Apache Doris 統一 OLAP 技術棧,滿足龐大數據體量下的實時分析與極速查詢。


1、什么是StarRocks?

StarRocks原名DorisDB,StarRocks 是 Apache Doris 的 Fork 版本。StarRocks 是新一代極速全場景 MPP (Massively Parallel Processing) 數據庫。StarRocks 是一款高性能分析型數據倉庫,使用向量化、MPP 架構、CBO、智能物化視圖、可實時更新的列式存儲引擎等技術實現多維、實時、高并發的數據分析。StarRocks 既支持從各類實時和離線的數據源高效導入數據,也支持直接分析數據湖上各種格式的數據。StarRocks 兼容 MySQL 協議,可使用 MySQL 客戶端和常用 BI 工具對接。同時 StarRocks 具備水平擴展,高可用、高可靠、易運維等特性。廣泛應用于實時數倉、OLAP 報表、數據湖分析等場景。

StarRocks 架構簡潔,采用了全面向量化引擎,并配備全新設計的 CBO (Cost Based Optimizer) 優化器,查詢速度(尤其是多表關聯查詢)遠超同類產品。

  • StarRocks 能很好地支持實時數據分析,并能實現對實時更新數據的高效查詢。StarRocks 還支持現代化物化視圖,進一步加速查詢。

  • 多分布式 Join極速引擎,這個分布式?Join 目前就是 ClickHouse?比較缺乏的一個功能。如果了解 spark 或者了解 presto 的話,其實都應該知道這都是有的,就是說這個其實就是做 Shuffle ,就是把不同的 Key 給 Shuffle 到同一個 bucket 里邊,然后再去做 Join ,然后右邊實際上是一個更加高效的一種 Join 方式也就是提前的去做好了這個 bucket 的分類,也就是說同一個 Key,兩張表相同的 Key ,全部落到同一個 bucket 的范圍,然后這個 bucket 的之間肯定是沒有 over lap ,所以可以放心的做這個Colocate ?joy ,在這個 spark 里面也叫 bucket join 。

  • 使用 StarRocks,用戶可以靈活構建包括大寬表、星型模型、雪花模型在內的各類模型。

  • StarRocks 兼容 MySQL 協議,支持標準 SQL 語法,易于對接使用,全系統無外部依賴,高可用,易于運維管理。StarRocks 還兼容多種主流 BI 產品,包括 Tableau、Power BI、FineBI 和 Smartbi。


2、使用Doris替換ClickHouse、Kylin和Druid

這里有一家電子商務SaaS提供商,其數據系統提供實時和離線報告、客戶分割和日志分析服務。最初,他們為這些不同的目的使用了不同的OLAP引擎:

  • Apache Kylin用于離線報告:該系統為超過500萬個賣家提供離線報告服務。其中的大型賣家擁有超過1000萬注冊會員和100,000個SKU,詳細信息放在平臺上的400多個數據立方體中。

  • ClickHouse用于客戶分割和Top-N日志查詢:這需要高頻更新、高QPS和復雜的SQL。

  • Apache Druid用于實時報告:賣家通過組合不同的維度提取所需的數據,這種實時報告需要快速的數據更新、快速的查詢響應和系統的強大穩定性。

圖片

這三個組件都有各自的痛點:

  • Apache Kylin在固定表模式下運行良好,但每次添加維度時,需要創建一個新的數據立方體并在其中重新填充歷史數據。

  • ClickHouse不適用于多表join處理,因此需要額外的解決方案來進行聯合查詢和多表連接查詢。在高并發場景下,它的表現低于預期。

  • Apache Druid實現了冪等寫入,因此它本身不支持數據更新或刪除。這意味著當上游出現問題時,需要進行完整的數據替換。如果您從頭到尾考慮所有數據備份和移動,這樣的數據修復是一個多步驟的過程。此外,新攝入的數據在放入Druid中的段之前將無法用于查詢。這意味著存在更長的時間窗口,從而導致上下游之間的數據不一致。

由于它們共同工作,這種架構可能太難以維護,因為它需要在開發、監控和維護方面了解所有這些組件。此外,每次用戶擴展集群時,他們必須停止當前集群并遷移所有數據庫和表,這不僅是一個巨大的任務,而且會對業務造成巨大的干擾。基于上述架構痛點,友贊對市面上的架構進行了調研與選型,希望選擇一款能夠簡化當前復雜架構、統一 OLAP 技術棧的引擎。他們除了分析 OLAP 性能本身對于業務的幫助,還需要評估架構改造所帶來的收益成本比,思考架構進行遷移和重構之后所帶來的 ROI 是否符合預期。

圖片

Apache Doris填補了這些空白。

  • 查詢性能:Doris擅長高并發查詢和JOIN連接查詢,并且現在配備了倒排索引以加速日志搜索。

  • 數據更新:Doris的唯一鍵模型支持大容量更新和高頻實時寫入,而重復鍵模型和唯一鍵模型支持部分列更新。它還提供數據寫入的恰好一次保證,并確保基表、物化視圖和副本之間的一致性。

  • 維護:Doris與MySQL兼容。它支持輕松擴展和輕量級模式更改。它配備了自己的集成工具,如Flink-Doris-Connector和Spark-Doris-Connector。


3、?StarRocks和ClickHouse壓測性能對比

這里比較了兩個組件在SQL和連接查詢方案上的性能,并計算了Apache Doris的CPU和內存消耗。

2.1 SQL查詢性能

Apache Doris在16個SQL查詢中的10個中表現優于ClickHouse,最大的性能差距比例接近30。總體而言,Apache Doris比ClickHouse快2~3倍。

圖片

2.2 連接查詢性能

對于連接查詢測試,使用了不同大小的主表和維表。

  • 主表:用戶活動表(40億行)、用戶屬性表(250億行)和用戶屬性表(960億行)

  • 維表:100萬行、1000萬行、5000萬行、1億行、5億行、10億行和25億行。

測試包括完全連接查詢和過濾連接查詢。完全連接查詢連接主表和維表的所有行,而過濾連接查詢使用WHERE過濾器檢索特定賣家ID的數據。結果如下:

主表(40億行):

  • 完全連接查詢:Doris在所有維表的完全連接查詢中均優于ClickHouse。隨著維表變大,性能差距越來越大。最大的差距比例接近5。

  • 過濾連接查詢:基于賣家ID,過濾器從主表中篩選出了4100萬行。對于小型維表,Doris比ClickHouse快2~3倍;對于大型維表,Doris比ClickHouse快10倍以上;對于大于1億行的維表,ClickHouse會拋出OOM錯誤,而Doris則正常運行。

主表(250億行):

  • 完全連接查詢:Doris在所有維表的完全連接查詢中均優于ClickHouse。ClickHouse在維表大于5000萬行時會產生OOM錯誤。

  • 過濾連接查詢:過濾器從主表中篩選出了5.7億行。Doris在幾秒鐘內響應,而ClickHouse在連接大型維表時完成時間為幾分鐘,并在此過程中崩潰。

主表(960億行):

Doris在所有查詢中都表現出相對較快的性能,而ClickHouse無法執行所有查詢。

在CPU和內存消耗方面,Apache Doris在所有大小的連接查詢中都保持穩定的集群負載。


參考鏈接:

從 Clickhouse 到 Apache Doris:有贊業務場景下性能測試與遷移驗證

開源大數據 OLAP 引擎最佳實踐 | 學習筆記(二)-阿里云開發者社區

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213787.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213787.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213787.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【設計模式--結構型--橋接模式】

設計模式--結構型--橋接模式 橋接(Bridge)模式定義結構案例好處使用場景 橋接(Bridge)模式 定義 將抽象與實現分離,使他們可以獨立變化。它是用組合關系代替繼承關系來實現,從而降低了抽象和實現這兩個維…

達夢 DM 數據庫

達夢數據庫 varchar varchar2的區別, 推薦使用 varchar2 -- 日期格式化 SELECT DATE_FORMAT(GETDATE(), %Y-%m-%d %H:%i:%s);-- 2023-12-11 SELECT CURDATE();-- 2023-12-11 09:22:24 SELECT SYSDATE();-- 2023-12-11 11:09:53.136527 SELECT GETDATE();-- 當前日期1 -1天 SEL…

MyEclipse中常用的快捷鍵大全

Eclipse的編輯功能非常強大,掌握了Eclipse快捷鍵功能,能夠大大提高開發效率。Eclipse中有如下一些和編輯相關的快捷鍵。 1. 【ALT/】 此快捷鍵為用戶編輯的好幫手,能為用戶提供內容的輔助,不要為記不全方法和屬性名稱犯愁…

vite+vue3實現動態路由

在做這個動態路由的時候踩了很多坑,其中大部分是粗心了 動態菜單主要是導入的方式 import.meta.glob 參考:功能 | Vite 官方中文文檔 1、多層路由渲染(用3層路由做demo) 拿到接口的數據是后臺直接處理好的結構,但是…

Lua腳本操作redis

模擬庫存扣減 基礎版 SpringBootTest class LuaTests {Resource(name"redisTemplate")ValueOperations<String,Long> valueOperations;AutowiredStringRedisTemplate stringRedisTemplate;final String priductKey "product.1";Testvoid test1()…

Java NIO, IO 整理

NIO: IO多路復用: 參考: Redis&#xff08;六&#xff09;單線程I/O多路復用模型淺析_單線程多路復用-CSDN博客 Java NIO 詳解_java nio詳解_開發菜雞的博客-CSDN博客 Java Socket 之 NIO - 掘金 答應我&#xff0c;這次搞懂 I/O 多路復用&#xff01;_小林coding的博客-CS…

Spring JdbcTemplate

一、簡介 Spring 框架對 JDBC 進行封裝&#xff0c;使用 JdbcTemplate 方便實現對數據庫操作。它是 spring 框架中提供的一個對象&#xff0c;是對原始 Jdbc API 對象的簡單封裝。spring 框架為我們提供了很多的操作模板類。 針對操作關系型數據&#xff1a; jdbcTemplateHibe…

A* 算法簡介

一、A* 算法簡介A* algorithm is a popular choice for graph search. Breadth First Search is the simplest of the graph search algorithms. Graph search algorithms, including A*, take a “graph” as input. A* algorithm is a modification of Dijkstra’s Algorithm…

華為OD機試 - 部門人力分配(Java JS Python C)

題目描述 部門在進行需求開發時需要進行人力安排。 當前部門需要完成 N 個需求,需求用 requirements 表述,requirements[i] 表示第 i 個需求的工作量大小,單位:人月。 這部分需求需要在 M 個月內完成開發,進行人力安排后每個月人力時固定的。 目前要求每個月最多有2個…

在k8s中部署nfs-client-provisioner

1、部署過程 1.1、環境依賴 在部署nfs-client-provisioner之前&#xff0c;需要先部署nfs服務。 因為&#xff0c;nfs-client-provisioner創建的pv都是要在nfs服務器中搭建的。 本示例中的nfs server的地址如下&#xff1a; [rootnode1 /]# showmount -e Export list for …

pinia 持久化插件使用

官方文檔 本文主要介紹 vue3組合式 api 使用持久化插件的寫法。 選項式 寫法官方已給出 安裝依賴 pnpm i pinia-plugin-persistedstate插件的使用 import { createPinia } from pinia import piniaPluginPersistedstate from pinia-plugin-persistedstateconst pinia creat…

JavaMap工具類(MapUtils)

1、Object轉Map 2、將 map 中的 value 為null的的元素轉成空字符串"" 3、map轉Object 4、MAP 判空 5、Map 排序 按key值長度進行排序 6、兩個MAP對比&#xff0c;在oldMap中移除remMap中所有的key值 備注&#xff1a;排序的話(TreeMap)是可以直接實現簡單排序的…

VR轉接線方案/VR Link串流數據線方案/VR眼鏡PD快充方案

虛擬現實技術(英文名稱&#xff1a;Virtual Reality&#xff0c;縮寫為VR)&#xff0c;又稱虛擬實境或靈境技術&#xff0c;是20世紀發展起來的一項全新的實用技術。虛擬現實技術囊括計算機、電子信息、仿真技術&#xff0c;其基本實現方式是以計算機技術為主&#xff0c;利用并…

Java:commons-lang3中的StringUtils.strip實現移除字符串首尾字符

依賴 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version> </dependency>示例 // 包名 import org.apache.commons.lang3.StringUtils;// 處理字符串&…

kafka支持外網訪問

kafka支持外網訪問 1.kafka正常部署之后如果不修改&#xff0c;外網是無法訪問的&#xff0c;具體如下&#xff08;這里是單節點&#xff09; 2.這個時候需要修改kafka的config中的server.properties中的 listeners 修改為0.0.0.0 監控所有網卡&#xff0c;advertised.listene…

管理空閑存儲空間

位示圖是操作系統中一種管理空閑存儲空間的方法。管理空閑除使用位示圖法還可用&#xff1a;空閑區表法&#xff0c;空閑鏈表法&#xff0c;成組鏈接法 1.空閑區表法 空閑表法屬于連續分配方法。它與內存管理中的動態分區分配方法雷同。 將外存空間上一個連續未分配區域稱為“…

[三次反轉法]循環移動數組元素

循環移動 題目描述 給定一組整數&#xff0c;要求利用數組把這組數保存起來&#xff0c;然后實現對數組的循環移動。假定供有n個整數&#xff0c;則要使前面各數順序向后移m個位置&#xff0c;并使最后m個數變為最前面的m個數(m<n)。 注意&#xff0c;不要用先輸出后m個數…

口袋參謀:如何對訂單實現一鍵批量插旗?

?在淘寶店鋪運營中&#xff0c;對寶貝訂單標注插旗&#xff0c;也算是常態了&#xff0c;至少90%的商家都不陌生&#xff0c;剩下的10%是剛入行的新手&#xff0c;正如我剛入行一樣。 01 首先我們要了解什么是插旗&#xff1f; 其實就是淘寶店鋪利用各種顏色的旗子來代表訂單…

A-23 P離子交換樹脂:高效去除無機有機污染物的新選擇

在當今水處理行業中&#xff0c;高效、環保的離子交換樹脂備受關注。本文將為您介紹一款具有卓越性能的堿性季胺基陰離子交換樹脂——Tulsion A-23 P。通過分析其特性和應用&#xff0c;展示其在水處理領域的優勢。 一、Tulsion A-23 P離子交換樹脂的特性 物理化學穩定性&#…

Vue生命周期函數執行順序(使用注意事項)

文章目錄 beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestroydestroyed Vue.js 是一個基于 MVVM 模式的前端框架&#xff0c;它的核心是一個響應式的數據綁定系統。在 Vue.js 中&#xff0c;組件是一個可復用的 Vue 實例&#xff0c;它擁有自己的生命周期…