olap的標準概念叫作「聯機分析處理系統」,與之對應的是oltp「聯機事務處理系統」。oltp對於事務性的要求非常高,常用於銀行、**等系統,但執行速度相對有限。有感於此,關聯式資料庫之父codd便在2023年提出了olap的概念,認為使用者的很多決策需要依賴大量的計算與多維的分析才能解決,並作為一類單獨的產品,與oltp區分開來。
olap委員會對聯機分析處理的定義為:從原始資料中轉化出來的、能夠真正為使用者所理解的、並真實反映企業多維特性的資料稱為資訊資料,使分析人員、管理人員或執行人員能夠從多種角度對資訊資料進行快速、一致、互動地訪問,從而獲得對資料的更深入了解的一類軟體技術。
可以說,olap的核心特點是「多維」,olap技術也可以稱之為「多維度資料分析工具」。
codd提出了關於olap的12條準則:
綜上所述,olap系統強調了資料分析在系統中的重要性,對於速度等要求有著極高的要求。
目前我們能接觸到的開源olap包括但不限定於:hive、hawq、spark sql、presto、kylin、impala、druid、greeplum等。有點類似於「蒙代爾不可能三角」,目前沒有乙個引擎能夠在資料量、靈活性和速度上做到完美統一,針對不同的場景,每種資料庫的使用範圍不同。
hive是基於hdfs的olap應用,一般只用於分析計算,不用於crud操作。作為mapreduce的sql化表達方式,優點是學習成本低,不用學習專門的mapreduce開發,且資料格式可以自定義,擴充套件性非常好,十分適合做資料倉儲。但hive在資料處理的過程中,並不會直接加工資料,因此通常會掃瞄全表資料來實現分析功能,計算的延遲非常高。儘管hive的計算過程動輒以小時計算,但hive仍然是基於hadoop體系應用最廣泛的olap引擎。
官網:hawq相較於hive,最大的不同,是採用了mpp架構,改進了針對 hadoop 的基於成本的查詢優化器。除了能高效處理本身的內部資料。無論是功能特性,還是效能表現,hawq 都比較適用於構建 hadoop 分析型資料倉儲應用。
官網:sparksql的前身是shark,它將 sql 查詢與 spark 程式無縫整合,可以將結構化資料作為 spark 的 rdd 進行查詢。sparksql作為spark生態的一員繼續發展,而不再受限於hive,只是相容hive。
官網:presto 是由 facebook 開源的大資料分布式 sql 查詢引擎,適用於互動式分析查詢,可支援眾多的資料來源,包括 hdfs,rdbms,kafka 等,而且提供了非常友好的介面開發資料來源聯結器。
presto沒有使用mapreduce,它是通過乙個定製的查詢和執行引擎來完成的。它的所有的查詢處理是在記憶體中,這也是它的效能很高的乙個主要原因。presto和spark sql有很大的相似性,這是它區別於hive的最根本的區別。
官網:提到kylin就不得不說說rolap和molap。
而kylin自身就是乙個molap系統,多維立方體(molap cube)的設計使得使用者能夠在kylin裡為百億以上資料集定義資料模型並構建立方體進行資料的預聚合。
官網:impala也是乙個sql on hadoop的查詢工具,底層採用mpp技術,支援快速互動式sql查詢。與hive共享元資料儲存。impalad是核心程序,負責接收查詢請求並向多個資料節點分發任務。statestored程序負責監控所有impalad程序,並向集群中的節點報告各個impalad程序的狀態。catalogd程序負責廣播通知元資料的最新資訊。
官網:druid 是一種能對歷史和實時資料提供亞秒級別的查詢的資料儲存。druid 支援低延時的資料攝取,靈活的資料探索分析,高效能的資料聚合,簡便的水平擴充套件。適用於資料量大,可擴充套件能力要求高的分析型查詢系統。druid解決的問題包括:資料的快速攝入和資料的快速查詢。
官網:greenplum是乙個開源的大規模並行資料分析引擎。借助mpp架構,在大型資料集上執行複雜sql分析的速度比很多解決方案都要快。乙個重要的資訊是,greenplum基於postgresql,也就是說greenpulm和tidb的定位類似,想要在oltp和olap上進行統一。
官網:就像美團在調研kylin的報告中所說的:「目前還沒有乙個olap系統能夠滿足各種場景的查詢需求。其本質原因是,沒有乙個系統能同時在資料量、效能、和靈活性三個方面做到完美,每個系統在設計時都需要在這三者間做出取捨。」
初探資料庫索引
索引是定義在儲存表 table 基礎上,有助於無需檢查所有記錄而快速定位所需記錄的一種輔助儲存結構。索引是由一系列儲存在磁碟上的索引項組成的。索引一般由下面兩個字段組成 儲存索引的檔案為索引檔案,儲存表的檔案稱為主檔案 索引檔案的組織方式可以理解為儲存方式。一般分為兩種 索引欄位的組成前面已經提到,...
MongoDB 資料庫的初探
以前都是使用的是關係型資料庫 mysql,orcale等 今天對nosql進行了一下了解,下面我介紹一下nosql中的mongodb資料的安裝 在cmd中輸入如圖 dbpath 資料存放的路徑 logpath 日誌存放的檔案,是乙個檔案而不是路徑 servicename windows下的服務名稱 ...
hibernate 資料庫事務初探
對事務的知識進行一次梳理,解決自己似懂非懂的狀態!什麼是事務?比較官方的解釋是 由一條或者多條sql組成的不可分割的工作單元!要是執行失敗就都失敗,要是成功就都成功!舉個栗子就是 你轉錢給別人,分為以下幾個步驟 1.你的錢減少 2.對方的錢增多 如果在1 2這個過程中 伺服器崩了 執行就失敗了 加上...