從Starrocks安裝說起和Oracle的OLAP殊途同歸
StarRocks是一款分析型數據庫(他的定語也很多,分布式存算分離等等)。作為數據庫他的運行和維護遲早也是落在我這里的。對于做數據庫的人都知道什么是交易型數據庫,什么是分析型數據庫。以及什么是事務分析混合型數據庫。但是對于非這塊領域的人根本不知道為什么選擇某個產品。某些產品是好,但是為什么好不知道。只是傻子過年看街坊,別人這樣用了,那我也這樣用。至于為什么不知道。
其實行式存儲對交易友好,因為寫入和修改是以行為基礎。而列式存儲對分析友好,是因為聚合都是對列進行運算的。而如果大家熟悉我國的實際業務場景就會發現。幾乎沒有單純的OLTP,單純的OLAP。都會發現是事務分析混合的。這也就是為什么2021年時候信通院白皮書定了數據庫七大趨勢之一就是HTAP。
從技術分類來說Oracle、MySQL是數據庫。Redis、MongoDB、influxdb、neo4j、Elasticsearch也是數據庫。Hadoop技術棧也是數據庫。區塊鏈也是數據庫。Impala、StarRocks等也是數據庫。所以最終有問題都會涉及到我。本著這個思路我也嘗試著進行一下安裝。雖然也有容器化部署的方式,但是自己手工安裝一遍收獲是不一樣的。
考慮到大家說我排版問題(不會墨天輪的排版,然后就到處復制了)這次用截圖。
圖片
下載好安裝包傳上去。將近3G啊。下載了一會。
不少yum安裝的,看上去容易。正式環境時候怎么辦?還能yum嗎?
解壓以后該有的目錄都有了。不用自己創建(自己創建的還亂,官方的目錄層級挺好的)
然后就編輯fe的配置文件。Fe是前臺的意思。FE(Frontend)負責管理元數據、管理客戶端連接、進行查詢規劃、查詢調度等工作。每個 FE 節點都會在內存保留一份完整的元數據,這樣每個 FE 節點都能夠提供無差別的服務。
圖片
所以要建立這個元數據目錄。(本次體驗為單機部署)
然后設置環境變量(為了以后打命令偷懶)
圖片
這里遇到一個問題,一定要在環境變量中設置JAVA_HOME。開始以為安裝了他能自己識別。
啟動前臺進程。
圖片
然后配置后臺進程。BE (Backend)。這里需要把相應的路徑寫到配置文件中去。
BE 是 StarRocks 的后端節點,負責數據存儲和 SQL 計算等工作。
數據存儲方面,BE 節點都是完全對等的。FE 按照一定策略將數據分配到對應的 BE 節點,BE 負責將導入數據寫成對應的格式存儲下來,并生成相關索引。
在執行 SQL 計算時,一條 SQL 語句首先會按照語義規劃成邏輯執行單元,然后再按照數據的分布情況拆分成具體的物理執行單元。物理執行單元會在對應的 BE 節點上執行,這樣可以實現本地計算,避免數據的傳輸與拷貝。
然后啟動后臺進程。start_be.sh –-daemon
但是這里出問題了。后臺進程啟動失敗,也沒錯誤日志。傳說的be.info日志沒有。在反復確認配置沒有問題后,只得找人咨詢。恰好微信好友有一個原廠的朋友。問過后原廠產研的老師非常準確的說,是avx2的問題。沒有 avx2 的話, be 肯定啟動失敗。
這里解釋一下:AVX2(Advanced Vector Extensions 2)是一種指令集擴展,用于增強處理器的并行計算能力。它引入了更多的SIMD(Single Instruction, Multiple Data)指令,可以同時對多個數據進行操作,加快向量化計算和并行處理的速度。
AVX2指令集在一些需要進行大規模數據處理和并行計算的任務中能夠提供性能優勢,例如圖像和視頻處理、科學計算、機器學習等。通過使用AVX2指令集,程序可以更高效地利用CPU的并行計算能力,加快運算速度,提高系統的響應能力。
說到這里明白了,是我虛擬機的指令集不支持。馬上找給我虛擬機的同事看看能不能解決?最后是把虛擬機做熱遷移,遷移到一個新的宿主機上。
圖片
現在看到支持avx2指令集了,后臺進程也開起來了。
他的客戶端用的是MySQL的客戶端。
圖片
這里密碼是空。輸入回車。不寫 -p我試下來不行。
執行這個命令看看前臺進程和后臺進程。
圖片
然后就可以像MySQL一樣操作的。但是
圖片
語法不一樣。直接建表會出ERROR的1064錯誤。需要指定分片鍵等。關鍵的是由于是單機體驗,要手寫副本1.默認是3.目前不能再配置文件中修改。
最后寫入數據。
圖片
重點來了:
StarRocks一開始說了是列式數據庫,所以適合分析。這點應該說明白了。之所以表現出眾主要原因我覺得應該是SIMD(向量化執行)我這里引用一下楊廷琨老師PPT
圖片
Oracle的In-memory之所以快,其實也是因為SIMD的原因(當然在內存中做就更加快了),而這個是2013年就發布的。試想一下2013年做出來的,那么哪年開始做的?又是哪年開始設計的?這才是重點。
我這里標題之所以寫殊途同歸,看來要像分析更快,最后SIMD目前看是繞不過去的。而這些都是數學的范疇吧。我一直說數據庫是數學和物理學的結合(CPU 內存這些硬件就是物理器件)。至今還有不少人,沒有意識到數據庫和數學的緊密關系。(當然內行人都已經認識到了,沒有意識到的也的確是外行。也許有些人并不看重數據庫所以沒有認識也就沒有認識吧)。其實在2010年之前我就是外行,我就沒認識到。