亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

StarRocks數(shù)據(jù)庫詳解(什么是StarRocks)

 更新時間:2025年03月10日 09:34:26   作者:Java戰(zhàn)神  
StarRocks是一個高性能的全場景MPP數(shù)據(jù)庫,支持多種數(shù)據(jù)導(dǎo)入導(dǎo)出方式,包括Spark、Flink、Hadoop等,它采用分布式架構(gòu),支持多副本和彈性容錯,本文介紹StarRocks詳解,感興趣的朋友一起看看吧

StarRocks介紹

StarRocks,作為新一代極速全場景MPP(Massively Parallel Processing)數(shù)據(jù)庫,充分汲取了關(guān)系型OLAP數(shù)據(jù)庫與分布式存儲系統(tǒng)在大數(shù)據(jù)時代的精髓。通過不斷的改進與優(yōu)化,它在架構(gòu)上進行了升級,并增添了諸多創(chuàng)新功能,從而演變?yōu)橐豢铑I(lǐng)先的企業(yè)級產(chǎn)品。StarRocks致力于為用戶提供極速且統(tǒng)一的分析體驗,能夠靈活應(yīng)對各種數(shù)據(jù)分析場景。它支持多種數(shù)據(jù)模型、導(dǎo)入方式,并能輕松整合及接入現(xiàn)有系統(tǒng),如Spark、Flink、Hive和ElasticSearch等。

此外,StarRocks還兼容MySQL協(xié)議,使得用戶能夠通過MySQL客戶端及常用BI工具輕松進行數(shù)據(jù)分析。其分布式架構(gòu)特性使得數(shù)據(jù)表能夠水平劃分并多副本存儲,集群規(guī)??伸`活調(diào)整,支持高達10PB級別的數(shù)據(jù)分析。同時,MPP框架的引入使得計算能夠并行加速,而多副本設(shè)計則提供了彈性容錯能力。

在技術(shù)層面,StarRocks采用關(guān)系模型和嚴格的列式存儲引擎,通過精妙的編碼和壓縮技術(shù)來降低讀寫放大效應(yīng)。其向量化執(zhí)行方式能充分利用多核CPU的并行計算能力,從而顯著提升查詢性能。要實現(xiàn)這一技術(shù),需要借助CPU的SIMD指令集,這是一種能夠在CPU寄存器層面實現(xiàn)數(shù)據(jù)并行操作的技術(shù)。

什么是StarRocks?

StarRocks是新一代極速全場景MPP數(shù)據(jù)庫(高并發(fā)數(shù)據(jù)庫)。

StarRocks充分吸收關(guān)系型OLAP數(shù)據(jù)庫和分布式存儲系統(tǒng)在大數(shù)據(jù)時代的優(yōu)秀研究成果。

1.可以在Spark和Flink里面處理數(shù)據(jù),然后將處理完的數(shù)據(jù)寫到StarRocks里面。

2.可以實現(xiàn)將數(shù)據(jù)從Hadoop倒入到StarRocks里面去,也可以將StarRocks的數(shù)據(jù)倒入到Hadoop里面,都是可以實現(xiàn)的。

3.可以對接ES數(shù)據(jù)庫(ElasticSearch)。

4.StarRocks兼容MySQL的協(xié)議,可以通過 MySQL的客戶端 和 常用BI工具 對接StarRocks來進行數(shù)據(jù)分析。

5.StarRocks采用分布式架構(gòu),對數(shù)據(jù)表進行水平劃分并且以多副本存儲,集群規(guī)模可以靈活伸縮,能夠支持10PB級別的數(shù)據(jù)分析,支持MPP框架,并行加速計算,支持多副本,具有彈性容錯能力。

StarRocks適合什么場景?

1.OLAP多維分析:用戶行為分析,用戶畫像,財務(wù)報表,系統(tǒng)監(jiān)控分析。

2.實時數(shù)據(jù)分析:電商數(shù)據(jù)分析,直播質(zhì)量分析,物流運單分析,廣告投放分析。

3.高并發(fā)查詢:廣告主表分析,Dashboard多頁面分析。

4.統(tǒng)一分析:通過使用一套系統(tǒng)解決上述場景,降低系統(tǒng)復(fù)雜度和多技術(shù)棧開發(fā)成本。

StarRocks基本概念:

1.FE:FrondEnd是StarRocks的前端節(jié)點,負責管理元數(shù)據(jù),負責與客戶端連接,進行查詢規(guī)劃,查詢調(diào)度等工作。

2.BE:BackEnd時StarRocks的后端節(jié)點,負責數(shù)據(jù)存儲,計算執(zhí)行,以及Compaction,副本管理等工作。

3.Broker:Broker并不是必須出現(xiàn)的,當StarRocks和HDFS進行交互的時候(也就是數(shù)據(jù)從HDFS到StarRocks中 和 數(shù)據(jù)從StarRocks中到HDFS里面),那么StaRocks負責這個過程的中轉(zhuǎn)服務(wù),輔助提供導(dǎo)入導(dǎo)出功能。

4.StarRocksManager:StarRocks的可視化工具,提供StarRocks的集群管理,在線查詢,故障查詢,監(jiān)控報警的可視化工具。

5.Tablet:StarRocks中表的邏輯分片,也是StarRocks中副本管理的基本單位,每個表根據(jù)分區(qū)和分桶機制被劃分成多個Tablet存儲在不同BE節(jié)點上。

StarRocks系統(tǒng)架構(gòu):

FE:

1.接受MySQL客戶端的連接,解析并且執(zhí)行SQL語句。

2.管理元數(shù)據(jù),執(zhí)行SQL DDL命令,用CataLog記錄庫,表,分區(qū),tablet副本等信息。

3.FE高可用部署,使用 復(fù)制協(xié)議選主 和 主從同步 元數(shù)據(jù),所有的元數(shù)據(jù)修改操作,都有FE的leader節(jié)點完成,F(xiàn)E的follower節(jié)點可執(zhí)行讀操作。元數(shù)據(jù)的讀寫滿足順序一致性,F(xiàn)E的節(jié)點數(shù)目采用2n+1,可以容忍n個節(jié)點故障,當FE leader故障的時候,可以從現(xiàn)有的follower節(jié)點中重新選主,完成故障切換。

4.FE中的SQL Layer對用戶提交的SQL進行解析,分析,改寫,語義分析和關(guān)系代數(shù)優(yōu)化,生產(chǎn)邏輯執(zhí)行計劃。

5.FE中的Planner負責把邏輯計劃轉(zhuǎn)化為可分布式執(zhí)行的物理計劃,分發(fā)給一組BE。

6.FE監(jiān)督BE,管理BE的上下線,根據(jù)BE的存活和健康狀態(tài),維持tablet副本的數(shù)量。

7.FE協(xié)調(diào)數(shù)據(jù)導(dǎo)入,保證數(shù)據(jù)導(dǎo)入的一致性。

BE:

1.BE管理tablet副本,tablet時table經(jīng)過分區(qū)分桶形成的子表,采用列式存儲。

2.BE受FE指導(dǎo),創(chuàng)建或刪除子表。

3.BE接收FE分發(fā)的物理執(zhí)行計劃并指定BE coordinator節(jié)點,在BE coordinator的調(diào)度下,與其他BE worker共同協(xié)作完成執(zhí)行。

4.BE讀本地的列存儲引擎獲取數(shù)據(jù),并通過索引和謂詞下沉快速過濾數(shù)據(jù)。

5.BE后臺執(zhí)行compact任務(wù),減少查詢時的讀放大。

6.數(shù)據(jù)導(dǎo)入的時候,由FE指定BE coordinator,將數(shù)據(jù)以fanout的形式寫入到tablet多副本所在的BE上。

StarRocks為什么快:

列式存儲:StarRocks中,一張表的列可以分為維度列(key列)和指標列(value列),維度列用于分組和排序,指標列可通過聚合函數(shù)等累加起來。StarRocks可以認為是多維的key到多維指標的映射。(在寫SQL的時候最好要根據(jù)表的前綴,類似于MySQL的索引最左前綴原則)

稀疏索引:當進行范圍查詢時,StarRocks能夠快速定位到起始目標行,是因為shortkey index(稀疏索引)。

預(yù)先聚合:StarRocks支持聚合模型,維度列取值相同數(shù)據(jù)行可合并一行,合并后數(shù)據(jù)行的維度列取值不變,指標列的取值為這些數(shù)據(jù)行的聚合結(jié)果,用戶需要給指標列指定聚合函數(shù),通過預(yù)先聚合,可以加速聚合操作。

分區(qū)分桶:StarRocks的表被分為tablet,每個tablet多副本冗余存儲在BE上,BE和tablet的數(shù)量可以根據(jù)計算資源和數(shù)據(jù)規(guī)模而彈性伸縮,查詢時,多臺BE可并行地查找tablet快速獲取數(shù)據(jù)。而且tablet的副本可以復(fù)制和前一,增強了數(shù)據(jù)的可靠性,避免了數(shù)據(jù)傾斜。

列級別的索引技術(shù):Bloomfilter可以快速判斷數(shù)據(jù)塊中不含所查找值,ZoneMap通過數(shù)據(jù)范圍快速過濾待查找值,Bitmap索引可快速計算出枚舉類型的列滿足一定條件的行。

StarRocks的4種表模型:

明細模型(Duplicate key):關(guān)注歷史數(shù)據(jù)。

聚合模型(Aggregate key):關(guān)注總量,平均值,最大值,最小值,計算一個統(tǒng)一的指標。

更新模型(Unique key):設(shè)定一個主鍵(uid),主鍵是唯一的,如果主鍵是第一次出現(xiàn)在表中,那么執(zhí)行插入操作,如果主鍵第二次出現(xiàn)在表中,那么執(zhí)行更新操作,覆蓋前一條記錄。(并不是真的覆蓋,其實也存著明細數(shù)據(jù),只是將最新的一條記錄返回)

主鍵模型(Primary key):主鍵模型相當于是更新模型的升級版,速度更快一些。更新模型采用Merge on Read讀時合并策略會大大限制查詢功能,在主鍵模型更好地解決了行級的更新操作。配合Flink-connector-starrocks可以完成MySQL CDC實時同步的方案。存儲引擎會為主鍵建立索引,導(dǎo)入數(shù)據(jù)時會把索引加載到內(nèi)存中,所以主鍵模型對內(nèi)存的要求更高。真正保證每個主鍵只有一條數(shù)據(jù)存在。

各自適用場景:

1.明細模型:建表的時候注意設(shè)置排序列(duplicate key)

關(guān)注歷史明細數(shù)據(jù)。

2.聚合模型:建表的時候注意設(shè)置聚合列( distributed by hash(site_id) )

業(yè)務(wù)方進行查詢?yōu)閰R總類查詢,比如sum,count,max。

不需要查看明細數(shù)據(jù)。

老數(shù)據(jù)不會被頻繁修改,只會追加和新增。

3.更新模型:建表的時候注意設(shè)置UNIQUE KEY 唯一列(create_time,order_id)

數(shù)據(jù)需要進行更新,比如拉鏈表。

已經(jīng)寫入的數(shù)據(jù)有大量的更新需求。(比如電商場景中,訂單的狀態(tài)經(jīng)常會發(fā)生變化,沒必要用明細表記錄變化趨勢,使用更新模型記錄最新的狀態(tài)即可)

需要進行實時數(shù)據(jù)分析。

4.主鍵模型:建表的時候注意PRIMARY KEY主鍵列(user_id)

數(shù)據(jù)冷熱特征:只有最近幾天的數(shù)據(jù)才需要修改,老的冷數(shù)據(jù)很少需要修改,比如訂單數(shù)據(jù),老的訂單完成后就不再更新,并且分區(qū)是按天進行分區(qū)的,那么在導(dǎo)入數(shù)據(jù)時歷史分區(qū)的數(shù)據(jù)的主鍵就不會被加載,也就不會占用內(nèi)存了,內(nèi)存中僅會加載近幾天的索引。

大寬表(數(shù)百列數(shù)千列):主鍵只占整個數(shù)據(jù)的很小一部分,內(nèi)存開銷比較低。比如用戶狀態(tài)/畫像表,雖然列非常多,但總的用戶數(shù)量不大,主鍵索引內(nèi)存占用相對可控。

StarRocks排序列:

明細模型中的排序列可以理解成是 DUPLICATED KEY

聚合模型中的排序列可以理解成是 AGGREGATE KEY

更新模型中的排序列可以理解成是UNIQUE KEY

主鍵模型中的排序列可以理解成是PRIMARY KEY

排序列的設(shè)定順序必須和建表語句的字段順序一樣,如果想使用到排序列那么必須要按照類似于MySQL的索引最左前綴原則,設(shè)定where條件。

使用排序鍵的本質(zhì)其實就是在進行二分查找,所以排序列指定的越多,那么消耗的內(nèi)存也會越大,StarRocks為了避免這種情況發(fā)生也對排序鍵做了限制:

1.排序鍵的列只能是建表字段的前綴。

2.排序鍵的列數(shù)不能超過3.

3.字節(jié)數(shù)不超過36字節(jié)。

4.不包含F(xiàn)LOAT/DOUBLE類型的列。

5.Varchar類型列只能出現(xiàn)一次,并且是末尾位置。

物化視圖:Materialized View(MVs)物化視圖

在基于維度進行分析的時候,需要使用物化視圖。

StarRocks中Bitmap索引:

BitMap索引利用位數(shù)組(bit array)來表示數(shù)據(jù)集中某個屬性的所有可能值是否出現(xiàn),每個位對應(yīng)數(shù)據(jù)表中的一行記錄,如果該位為1,則表示該行記錄具有指定的屬性值;如果為0,則表示不具備。這種結(jié)構(gòu)非常適合于 處理布爾型查詢 或者 枚舉類型比較少 的列查詢,比如性別。

BitMap在一些場景下表現(xiàn)的比較優(yōu)秀,但是同樣也存在著局限性:

1.內(nèi)存消耗:BitMap索引會占據(jù)比較大的內(nèi)存空間。

2.更新成本:當數(shù)據(jù)插入,刪除或者更新的時候,對應(yīng)的位圖需要維護,會產(chǎn)生開銷。

總結(jié):最適用的場景是針對于低基數(shù)(列中不同值的數(shù)量很少),會展現(xiàn)出更高的優(yōu)化能力。

StarRocks中布隆過濾器:

Bloom Filter(布隆過濾器),是用于快速地判斷某個元素是否在一個集合中的數(shù)據(jù)結(jié)構(gòu),優(yōu)點是空間效率和時間效率都很高,缺點是有一定的誤判率。就是說,如果布隆過濾器說一個元素不在集合中,那它確實不在;但如果說一個元素可能在這個集合中,這個結(jié)論也不一定是正確的。

工作原理:布隆過濾器 由一個 位數(shù)組(二進制向量) 和 一系列哈希函數(shù) 組成。在初始化的階段,所有的位都是0。當一個元素被插入到布隆過濾器中時,會被每一個哈希函數(shù)處理,每個哈希函數(shù)都會產(chǎn)生一個位數(shù)組的索引,然后相應(yīng)位置的位會被置為1。這樣,每個元素的插入都會在位數(shù)組中留下多個標記。檢查一個元素是否在集合中的時候,也是使用同樣的哈希函數(shù)計算出多個索引的位置,如果所有這些位置的位都是1,那么可能在集合中,如果任何一位是0,那么就可以確定不在集合中。

(如果布隆過濾器已經(jīng)判斷出集合中不存在指定的值,就不需要讀取數(shù)據(jù)文件。

   如果布隆過濾器判斷出集合中包含指定的值,就需要讀取數(shù)據(jù)文件確認目標值是否存在。

   另外,Bloom Filter索引無法確定具體是哪一行數(shù)據(jù)具有該指定的值)

在StarRocks中的應(yīng)用:

減少磁盤I/O:在執(zhí)行查詢時,布隆過濾器可以先于實際數(shù)據(jù)讀取之前被查詢,用于快速排除那些肯定不包含查詢結(jié)果的數(shù)據(jù)塊,從而減少不必要的磁盤讀取操作,提高查詢效率。

分區(qū)剪枝(partition pruning):在分布式系統(tǒng)中,布隆過濾器可以幫助決定是否需要從特定分區(qū)或者節(jié)點中讀取數(shù)據(jù),實現(xiàn)查詢的分區(qū)剪枝,減少網(wǎng)絡(luò)傳輸和計算資源的消耗。

動態(tài)調(diào)整:StarRocks的布隆過濾器支持動態(tài)調(diào)整其誤報率,以適應(yīng)不同查詢場景的需求。通過調(diào)整哈希函數(shù)的數(shù)量和位數(shù)組的大小,可以在誤報率和存儲空間之間找到平衡。

通過在建表的時候設(shè)定 PROPERTIES("bloom_filter_columns"="event_type,sex");

注意事項:

1.不支持對Tinyint,F(xiàn)loat,Double類型的列建Bloom Filter索引。

2.Bloom Filter索引只對 'in' 和 '=' 過濾查詢有加速效果。

3.如果要查看某個查詢是否命中了Bloom Filter索引,可以通過查詢的Profile信息查看(TODO:加上查看Profile的鏈接)。

StarRocks的數(shù)據(jù)導(dǎo)入:

StarRocks的數(shù)據(jù)導(dǎo)入方式原理和場景
Stream Load

支持從本地直接導(dǎo)入數(shù)據(jù),支持CSV格式,數(shù)據(jù)量在10G以下。

原理:Stream Load中,用戶通過HTTP協(xié)議提交導(dǎo)入命令,提交到FE節(jié)點,F(xiàn)E節(jié)點則會通過HTTP重定向指令請求轉(zhuǎn)發(fā)給某一個BE節(jié)點,用戶也可以直接提交導(dǎo)入命令指定BE節(jié)點。

Broker Load支持從HDFS,S3等外部存儲系統(tǒng)導(dǎo)入數(shù)據(jù),支持CSV,ORCFile,Parquet等文件格式,數(shù)據(jù)量在幾十GB到上百GB級別。
Rountine LoadStarRocks通過這種方式支持從Kafka持續(xù)不斷的導(dǎo)入數(shù)據(jù),并且支持通過SQL控制導(dǎo)入任務(wù)的暫停,重啟,停止。將Job提交給FE,拆分成多個task,將task并行的向BE(StarRocks)里面寫
Spark Load
Insert into只是通過寫SQL來操作。
Flink Connector
Datax Writer

Colocate join:

colocate join可以避免數(shù)據(jù)網(wǎng)絡(luò)傳輸開銷,核心思想是將同一個Colocation Group中表采用一致的分桶鍵,一致的副本數(shù)量和一致副本放置方式。因此如果join列分桶鍵一致,則計算節(jié)點只需做本地join即可,無須從其他節(jié)點獲取數(shù)據(jù),從而規(guī)避網(wǎng)絡(luò)shuffle的過程。

可以通過設(shè)置PROPERTIES("colocate_with" = "group"),如果colocate:true,那么就是得到了colocate join優(yōu)化,如果colocate:false,那么就是沒有得到colocate join優(yōu)化(可能會存在shuffle)。

StarRocks外部表:

到此這篇關(guān)于StarRocks數(shù)據(jù)庫詳解(什么是StarRocks)的文章就介紹到這了,更多相關(guān)StarRocks詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 記一次SQL優(yōu)化的實戰(zhàn)記錄

    記一次SQL優(yōu)化的實戰(zhàn)記錄

    作為開發(fā)人員,我們免不了與sql打交道,有些sql可能在業(yè)務(wù)的最開始,執(zhí)行是毫無問題的,但是隨著業(yè)務(wù)量的提升以及業(yè)務(wù)復(fù)雜度的加 深,可能之前的sql就會需要優(yōu)化了,下面這篇文章主要給大家介紹了關(guān)于一次SQL優(yōu)化的實戰(zhàn)記錄,需要的朋友可以參考下
    2022-07-07
  • 一篇文章教會你使用gs_restore導(dǎo)入數(shù)據(jù)

    一篇文章教會你使用gs_restore導(dǎo)入數(shù)據(jù)

    gs_restore是GaussDB(DWS)提供的針對gs_dump導(dǎo)出數(shù)據(jù)的導(dǎo)入工具,下面這篇文章主要給大家介紹了關(guān)于如何通過一篇文章教會你使用gs_restore導(dǎo)入數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Navicat使用快速入門教程

    Navicat使用快速入門教程

    這篇文章主要介紹了Navicat使用快速入門教程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SQL中NTEXT字段內(nèi)容顯示<long text>的原因

    SQL中NTEXT字段內(nèi)容顯示<long text>的原因

    SQL中NTEXT字段內(nèi)容顯示<long text>的原因...
    2007-03-03
  • 聚合函數(shù)和group by的關(guān)系詳解

    聚合函數(shù)和group by的關(guān)系詳解

    大家好,本篇文章主要講的是聚合函數(shù)和group by的關(guān)系詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 免費開源數(shù)據(jù)庫:SQLite、MySQL和PostgreSQL的優(yōu)缺點

    免費開源數(shù)據(jù)庫:SQLite、MySQL和PostgreSQL的優(yōu)缺點

    對于處理大規(guī)模數(shù)據(jù)和高并發(fā)訪問的場景,MySQL和PostgreSQL更適合,SQLite在小型應(yīng)用程序或嵌入式設(shè)備中是一種輕量級、簡單和易于使用的選擇,根據(jù)具體的應(yīng)用需求和場景特點,選擇合適的開源關(guān)系型數(shù)據(jù)庫可以提供更好的性能、可擴展性和靈活性
    2024-02-02
  • 關(guān)于ADOX的相關(guān)知識

    關(guān)于ADOX的相關(guān)知識

    關(guān)于ADOX的相關(guān)知識...
    2006-12-12
  • 使用navicat導(dǎo)入sql文件的方法步驟

    使用navicat導(dǎo)入sql文件的方法步驟

    這篇文章主要介紹了使用navicat導(dǎo)入sql文件的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 時序數(shù)據(jù)庫VictoriaMetrics源碼解析之寫入與索引

    時序數(shù)據(jù)庫VictoriaMetrics源碼解析之寫入與索引

    這篇文章主要為大家介紹了VictoriaMetrics時序數(shù)據(jù)庫的寫入與索引源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Hive數(shù)據(jù)去重的兩種方式?(distinct和group?by)

    Hive數(shù)據(jù)去重的兩種方式?(distinct和group?by)

    數(shù)據(jù)庫中表存在重復(fù)數(shù)據(jù),需要清理重復(fù)數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Hive數(shù)據(jù)去重的兩種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01

最新評論