什么是StarRocks?
StarRocks 是一款新一代的、超快的、大規(guī)模并行處理(MPP)數(shù)據(jù)庫,旨在為企業(yè)提供實(shí)時分析的便利。它能夠大規(guī)模地支持亞秒級查詢。
StarRocks 設(shè)計(jì)優(yōu)雅。它包括豐富的功能,包括完全向量化引擎、新設(shè)計(jì)的成本基優(yōu)化器 (CBO) 和智能物化視圖。因此,StarRocks 可以提供遠(yuǎn)超同類數(shù)據(jù)庫產(chǎn)品的查詢速度,尤其是在多表連接方面。
StarRocks非常適合對新鮮數(shù)據(jù)進(jìn)行實(shí)時分析。數(shù)據(jù)可以以高速度攝入,并且可以實(shí)時更新和刪除。StarRocks使用戶能夠創(chuàng)建使用各種模式的表,例如扁平、星型和雪花模式。
兼容 MySQL 協(xié)議和標(biāo)準(zhǔn) SQL,StarRocks 對所有主要的 BI 工具有開箱即用的支持,例如 Tableau 和 Power BI。StarRocks 不依賴任何外部組件。它是一個集成的數(shù)據(jù)分析平臺,允許高可擴(kuò)展性、高可用性和簡化管理與維護(hù)。
StarRocks具有簡單的架構(gòu)。整個系統(tǒng)僅由兩種類型的組件組成;前端節(jié)點(diǎn)和后端節(jié)點(diǎn)。前端節(jié)點(diǎn)被稱為FE。后端節(jié)點(diǎn)有兩種類型,BE和CN(計(jì)算節(jié)點(diǎn))。當(dāng)使用本地?cái)?shù)據(jù)存儲時,部署B(yǎng)Es;當(dāng)數(shù)據(jù)存儲在對象存儲或HDFS上時,部署CNs。StarRocks不依賴于任何外部組件,簡化了部署和維護(hù)。節(jié)點(diǎn)可以水平擴(kuò)展而無需停機(jī)服務(wù)。此外,StarRocks具有元數(shù)據(jù)和服務(wù)數(shù)據(jù)的復(fù)制機(jī)制,這提高了數(shù)據(jù)可靠性并高效地防止了單點(diǎn)故障(SPOFs)。
StarRocks 兼容 MySQL 協(xié)議并支持標(biāo)準(zhǔn) SQL。用戶可以從 MySQL 客戶端輕松連接到 StarRocks,以獲得即時且有價(jià)值的見解。
特色
MPP框架
StarRocks 采用大規(guī)模并行處理 (MPP) 框架。一個查詢請求被分割成多個物理計(jì)算單元,可以在多臺機(jī)器上并行執(zhí)行。每臺機(jī)器都有專用的 CPU 和內(nèi)存資源。MPP 框架充分利用了所有 CPU 內(nèi)核和機(jī)器的資源。隨著集群橫向擴(kuò)展,單個查詢的性能可以持續(xù)提高。
完全矢量化執(zhí)行引擎
全矢量執(zhí)行引擎更高效地利用CPU處理能力,因?yàn)檫@個引擎以列式方式組織和處理數(shù)據(jù)。具體來說,StarRocks以列式方式存儲數(shù)據(jù)、在內(nèi)存中組織數(shù)據(jù)和計(jì)算SQL運(yùn)算符。列式組織充分利用了CPU緩存。列式計(jì)算減少了虛擬函數(shù)調(diào)用和分支判斷的數(shù)量,從而產(chǎn)生了更充分的CPU指令流。
存儲和計(jì)算的分離
從3.0版本開始引入了存儲計(jì)算分離架構(gòu)。在該架構(gòu)中,計(jì)算和存儲被解耦,以實(shí)現(xiàn)資源隔離、計(jì)算節(jié)點(diǎn)的彈性擴(kuò)展以及高性能查詢。存儲計(jì)算分離使StarRocks具備更好的靈活性、更高的性能和數(shù)據(jù)可用性以及更低的成本。
成本基優(yōu)化器
多表連接查詢的性能優(yōu)化非常困難。僅靠執(zhí)行引擎無法提供出色的性能,因?yàn)樵诙啾磉B接查詢的情景中,執(zhí)行計(jì)劃的復(fù)雜性可能會相差幾個數(shù)量級。相關(guān)表越多,執(zhí)行計(jì)劃就越多,這使得選擇最佳計(jì)劃成為NP難題。只有足夠優(yōu)秀的查詢優(yōu)化器才能為高效多表分析選擇一個相對最佳的查詢計(jì)劃。
實(shí)時、可更新的列式存儲引擎
StarRocks 是一種列式存儲引擎,允許相同類型的數(shù)據(jù)連續(xù)存儲。在列式存儲中,數(shù)據(jù)可以以更高效的方式編碼,提高壓縮比并降低存儲成本。列式存儲還減少了總的數(shù)據(jù)讀取 I/O,從而提高查詢性能。此外,在大多數(shù) OLAP 場景中,只查詢特定的列。列式存儲使用戶能夠僅查詢部分列,顯著減少磁盤 I/O。
智能物化視圖
StarRocks 使用智能物化視圖來加速查詢和數(shù)據(jù)倉庫分層。與其他需要手動數(shù)據(jù)同步的物化視圖不同,StarRocks 的物化視圖會根據(jù)基表中的數(shù)據(jù)變化自動更新數(shù)據(jù),無需額外的維護(hù)操作。此外,物化視圖的選擇也是自動的。如果 StarRocks 識別到一個合適的物化視圖(MV)來提高查詢性能,它會自動重寫查詢以利用該 MV。這個智能過程顯著提高了查詢效率,無需手動干預(yù)。
數(shù)據(jù)湖分析
除了對本地?cái)?shù)據(jù)進(jìn)行高效分析之外,StarRocks 還可以作為計(jì)算引擎來分析存儲在數(shù)據(jù)湖中的數(shù)據(jù),例如 Apache Hive、Apache Iceberg、Apache Hudi 和 Delta Lake。StarRocks 的一個關(guān)鍵特性是其外部目錄,它作為與外部維護(hù)的元存儲的鏈接。此功能為用戶提供了無縫查詢外部數(shù)據(jù)源的能力,消除了數(shù)據(jù)遷移的需要。因此,用戶可以分析來自不同系統(tǒng)的數(shù)據(jù),例如 HDFS 和 Amazon S3,以各種文件格式,如 Parquet、ORC 和 CSV 等。
架構(gòu)選擇
StarRocks 支持共享無狀態(tài)(每個 BE 在其本地存儲上有一部分?jǐn)?shù)據(jù))和共享數(shù)據(jù)(所有數(shù)據(jù)在對象存儲或 HDFS 上,每個 CN 只有本地存儲上的緩存)。您可以根據(jù)需要決定數(shù)據(jù)存儲在哪里。
共享無狀態(tài)
本地存儲為實(shí)時查詢提供了更低的查詢延遲。
作為典型的大規(guī)模并行處理(MPP)數(shù)據(jù)庫,StarRocks 支持共享無狀態(tài)架構(gòu)。在這種架構(gòu)中,BE(Backend)負(fù)責(zé)數(shù)據(jù)存儲和計(jì)算。直接訪問 BE 模式中的本地?cái)?shù)據(jù)允許進(jìn)行本地計(jì)算,避免了數(shù)據(jù)傳輸和數(shù)據(jù)復(fù)制,并提供了超快的查詢和分析性能。該架構(gòu)支持多副本數(shù)據(jù)存儲,增強(qiáng)了集群處理高并發(fā)查詢的能力,并確保數(shù)據(jù)可靠性。它非常適合追求最佳查詢性能的場景。
共享數(shù)據(jù)
對象存儲和HDFS提供了成本、可靠性和可擴(kuò)展性的好處。除了存儲的可擴(kuò)展性之外,CN節(jié)點(diǎn)可以在不需重新平衡數(shù)據(jù)的情況下添加和刪除,因?yàn)榇鎯陀?jì)算是分開的。
在共享數(shù)據(jù)架構(gòu)中,BE 被替換為“計(jì)算節(jié)點(diǎn) (CN)”,這些節(jié)點(diǎn)只負(fù)責(zé)數(shù)據(jù)計(jì)算任務(wù)和緩存熱數(shù)據(jù)。數(shù)據(jù)存儲在像 Amazon S3、GCP、Azure Blob Storage、MinIO 等低成本且可靠的遠(yuǎn)程存儲系統(tǒng)中。當(dāng)緩存命中時,查詢性能與共享無狀態(tài)架構(gòu)相當(dāng)。CN 節(jié)點(diǎn)可以根據(jù)需要在幾秒鐘內(nèi)添加或移除。這種架構(gòu)降低了存儲成本,確保了更好的資源隔離,并具有高彈性和可擴(kuò)展性。
共享數(shù)據(jù)架構(gòu)與無共享架構(gòu)一樣保持簡單。它僅由兩種類型的節(jié)點(diǎn)組成:FE和CN。唯一的區(qū)別是用戶必須提供后端對象存儲。