1. 程式人生 > >資料倉庫一些整理(列式資料庫)

資料倉庫一些整理(列式資料庫)

術語備註:
1、OLTP。這是on-line transaction processing的簡寫。翻譯成聯機事務處理。就是線上交易的業務資料。這方面的資料庫是關係型資料庫。 2、OLAP。On-Line Analytical Processing 翻譯成聯機分析處理。通俗理解,就是做資料統計、分析的平臺。順應這個需求產生了資料倉庫的概念。 3、資料倉庫。只是一個概念,資料的倉庫。搭建資料倉庫的技術方案可以是關係型資料庫,也可以是列儲存。為了通俗理解,可以把資料倉庫和OLAP看作一個東西。 4、商業智慧BI。本質還是依賴於資料倉庫做支援的,沒有資料儲存,沒有大量資料,無法統計、無法分析。 怎麼來理解或區分資料庫和資料倉庫的關係
業界經常說的術語是OLTP,這是on-line transaction processing的簡寫。聯機事務處理。 OLAPOn-Line Analytical Processing 翻譯成聯機分析處理。 從名字來看,可以看出一個側重事務處理。一個側重分析處理。事務處理,就是交易資料。如訂單、商品等資料的增刪查改。分析處理,要對這些資料分析出統計結果。分析處理,就要使用資料倉庫來儲存資料了,要與業務資料庫分開,而資料來自於業務資料庫。 聯機交易處理使用的是交易型資料庫,即行式儲存關係型資料庫如oracle、sqlserver、mysql。 聯機分析處理使用的是分析型資料庫,即列式關係型資料庫hbase、hive、clickhouse等。
資料倉庫只是一個概念,至於用什麼資料庫,隨自己。對資料的分析處理,得到統計結果,歸到資料倉庫裡面去,以提供線上查詢。 資料庫中的建模一般遵循三正規化,而資料倉庫的建模有特定的方式,一般採用維度建模。 為什麼資料倉庫喜歡使用列式關係型儲資料庫? 資料倉庫使用的技術方案,有很多種。可以使用關係型資料庫mysql,目前,業界一般使用列儲存。 為什麼不用mysql等行儲存關係資料庫來做資料倉庫? 而一般使用列儲存資料庫, 是考慮到資料倉庫的以下特點: 1、資料倉庫的資料來源多個系統。可能是檔案、可能是其他關係型資料庫中的交易資料。 2、需要多個維度建立資料統計模型。
3、儲存資料量。歷史的,存檔的,歸納的,計算的資料。 4、需要訪問大量的記錄才能統計出結果。如果統計效能上不能很慢,無法出統計結果。就滿足不了分析統計的需求。 涉及到複雜的聚合統計查詢,這類系統就比較難以處理了,比如要查詢某一些型別的使用者過去三個月購買最多的商品,因為同一時間需要查詢大量資料,OLTP(關係資料庫) 系統並不擅長處理這類需求。 5、更新資料很少。都是新增資料、查詢資料。於是對查詢速度要求高。 列式型關係資料庫,使用上與mysql一樣,都是sql語句操作,也是關係表設計。唯獨底層儲存原理不一樣。下面解釋。 對比行儲存和列儲存 下面來看網上找的一張圖,對比行儲存和列儲存 行儲存的一行資料(此行的所有資料)都在一起,緊接著就是第二行資料,依次下去。 列儲存不同的是,一列的所有資料都放在一起了。 ​從上圖可以很清楚地看到,行式儲存下一張表的資料都是放在一起的,但列式儲存下都被分開儲存了。所以它們就有了如下這些優缺點:
行式儲存 列式儲存
優點 Ø 資料被儲存在一起 Ø INSERT/UPDATE容易 Ø 查詢時只有涉及到的列會被讀取 Ø 投影(projection)很高效 Ø 任何列都能作為索引
缺點 Ø 選擇(Selection)時即使只涉及某幾列,所有資料也都會被讀取 Ø 選擇完成時,被選擇的列要重新組裝 Ø INSERT/UPDATE比較麻煩
注:關係型資料庫理論回顧 - 選擇(Selection)和投影(Projection) 列儲存在做join聯合的時候,效率更高。 在列儲存中,下面查詢語句:select customers,material from table where customers="miler" and material="refrigerator" 一列的所有資料都在一塊,所以每一列都是一個索引。對一列資料壓縮也很方便,變成數字儲存了。儲存空間變小,儲存空間變小,操作速度就更快。 關鍵步驟如下: 1. 去字典表裡找到字串對應數字(只進行一次字串比較)。 2. 用數字去列表裡匹配,匹配上的位置設為1。 3. 把不同列的匹配結果進行位運算得到符合所有條件的記錄下標。 4. 使用這個下標組裝出最終的結果集。 下面筆者整理了業界常來搭建資料倉庫的資料庫 在資料倉庫領域的收費列資料庫 1、惠普公司的Vertica 2、oracle公司Oracle Warehouse Builder的 3、sybase公司的Sybase IQ/SAPIQ 4、mysql公司出的Infobright。 5、Greenplum公司的Greenplum 網際網路公司自主研發的 1、華為的Carbondata 2、百度研發給內部使用的palo。 3、騰訊Hermes 4、Druid:廣告分析,網際網路廣告系統監控、度量和網路監控。開源免費。 5、俄羅斯的yandex公司為自己內部統計需要研發的clickhouse。yandex為俄羅斯的"百度"、"百度統計"業務。2016年6月份才開源釋出出來。這個文件全,對php語言支援好。效能不弱於百度的palo。
資料庫名稱 所屬公司 是否商業收費 優點 缺點 說明 列式儲存(非行儲存)
Oracle Warehouse Builder(OWB) oracle 商業收費 未知 未知 未知 未知
Sybase IQ/SAPIQ SAP 商業收費 SAP公司收購資料庫公司SYbase的產品。Sybase IQ擁有列式儲存、網格架構、專利的資料壓縮、先進的查詢優化器電信和金融行業的客戶較多
Vertica 惠普公司 商業收費 未知 未知
hbase Apache的Hadoop專案的子專案 開源免費 很適合統計多維度資料。目前看資料,樂視的視訊雲涉及到視訊多維度統計從redis、mysql遷到hbase,響應需求更快。Facebook用在很多業務中。 1、搭建和維護HBase是很繁瑣的,引入很多學習成本,遇到問題還要排查。2、Php操作hbase,需要安裝一facebook的服務thrift,這個服務安裝沒成功。一箇中間服務,不夠簡單。 hbase與google的表格儲存資料庫bigtable是同一種東西。列儲存。hbase是模仿bigtable產生的。
hive 開源免費 1、查詢速度比較慢。2、基於MapReduce來處理資料。需要理解mapreduce,會寫這種。目前來看不好上手 否,只是一中架構。
palo 百度 開源免費 用在百度統計以及百度其他應用。 列儲存
clickhouse 俄羅斯的Yandex 開源免費 查詢速度快,SQL語句操作。 1、文件齊全。有官網。支援php、.net等各類語言,官網直接提供了各類語言的庫。2、速度很快。經過Yandex公司自身的實踐考驗。俄羅斯的nginx也是久經考驗。 此公司類似於中國的 百度和百度統計業務。為應對自身內部需要而開發 列儲存
Infobright MySql公司 開源免費,有商業版和社群版 1、社群版不支援更改資料。只能載入資料。2、社群版只能支援10多個併發查詢 3、世面上用的人少。 列儲存
Greenplum Greenplum 商業收費 基於關係資料庫PostgreSQL做儲存 列儲存
Druid 免費 列儲存
從上表中總結幾個開源免費的: 典型列儲存代表: 一、hbase php操作hbase需要另外安裝facebook開發的異構語言服務thrift。這點麻煩。我試驗過。目前樂視雲的視訊統計從redis轉到了hbase。 二、百度的palo(用在百度統計以及百度其他應用)。網上的使用資料比較少。要使用直接使用百度雲提供的付費服務。百度雲目前提供了付費服務 三、俄羅斯的clickhouse。clickhouse比palo的效能要更強。 屬於Yandex,此公司類似於俄羅斯的百度和百度統計。為了應對自身同統計需要而開發。目前已經開放出來使用。 對各種語言的支援要更好,php、python、.net等操作資料庫的客戶端庫,在官網直接提供了。 筆者推薦使用clickhouse。對比幾個,對比目前可選的,從對上手程度、免費、對php的支援三個角度分析,只有這個最合適了 為什麼不能使用Mongodb來做資料倉庫? 設計初衷不同 SQL與NoSQL最大的不同之一就是不支援JOIN,在傳統的資料庫中,SQL JOIN子句允許你使用普通的欄位,在兩個或者是更多表中的組合表中的每行資料。 面向文件的資料庫,例如MongoDB,被設計用來儲存非結構化的資料,理想情況下,這些資料是在資料集合中是相互沒有關聯的。一個集合,可以看作mysql中的一個表。 雖然mongodb是支援關聯查詢,但是非常弱。使用關聯查詢效能馬上就下來不少了。它本身的定位不是關係型資料庫。 資料倉庫的特點,它存在多個維度,關係比較複雜,必須使用關係型資料庫來建立資料模型。而關係型資料庫,目前基於行儲存的關係型資料庫mysql,在資料量大的時候,需要分表等操作,存在效能問題,所以業界使用基於列儲存的關係資料庫來做資料倉庫。 故資料倉庫這種比較複雜的邏輯關係處理,不要使用mongodb。 對clickhouse的研究情況 對列式資料庫clickhouse,目前部署環境還順利。發現對php操作資料庫的支援、介面管理資料庫的工具,官網都有直接提供。真是專門為花不起錢買商業資料庫、又想技術維護門檻低的創業公司,準備的資料倉庫軟體,是另一個“MySQL”。 原始碼是c++寫的。 此資料庫,百度能搜尋到的資料並不多,都是看官網英文。 原因是:資料倉庫一般上規模的公司才會去使用;而一旦涉及,他們要麼自己研發列式資料庫,要麼是購買商業列資料庫解決方案。如華為Carbondata 、騰訊Hermes、瀋陽延雲YDB。惠普公司的Vertica資料庫,Facebook購買是這個資料庫做使用者行為分析。 我之前在表格中列出了一些列資料庫。要麼是商業收費的,要麼是上手不容易,要麼功能限制太多。所以既要免費,又要功能和效能滿足,可選的很少。 目前實際測驗看,這個資料庫確實是另一個“mysql”,適合創業公司特點: 1、免費卻不輸於商業資料倉庫。網上別人公開的測驗資料看,效能不比惠普公司等提供的商業列式儲存資料庫差。與百度自己研發列資料庫palo,也進行過效能對比,各有千秋,不輸。 2、好上手,維護成本低。對php支援良好。介面管理工具也全。 3、擴充套件方便。支援分散式和資料複製。 4、經過俄羅斯最大的搜尋引擎公司yandex,內部場景執行後開源出來的。由於是2016年6月才開源出來,故國內公司使用不多,畢竟已經使用了商業資料倉庫的,遷移要權衡。 俄羅斯人做東西挺給力,給了個著名的nginx的,風靡超過apache。 下面給試驗資料

相關推薦

資料倉庫一些整理(資料庫)

術語備註: 1、OLTP。這是on-line transaction processing的簡寫。翻譯成聯機事務處理。就是線上交易的業務資料。這方面的資料庫是關係型資料庫。 2、OLAP。On-Line Analytical Processing 翻譯成聯機分析處理。通俗理解,就是做資

資料儲存---記憶體資料庫KDB+(Q)文件

 Kx systems公司的創始人之一Arthur Whitney在2003年研發了列式資料庫KDB和它的操作語言Q。    官網:www.kx.com 主要Feature: 記憶體內的資料庫:理解KDB的一種方式就是KDB是一個記憶體資料庫,但擁有磁碟可

資料庫資料庫的對比

導語:隨著大資料的發展,現在出現的列式儲存和列式資料庫。它與傳統的行式資料庫有很大區別的。 正文: 行式資料庫是按照行儲存的,行式資料庫擅長隨機讀操作不適合用於大資料。像SQL server,Oracle,mysql等傳統的是屬於行式資料庫範疇。 列式資料庫從一開始就是面向大資料環境下資

資料庫資料庫區別

行式資料庫: 1.資料是按行儲存的 2.沒有建立索引的查詢將消耗很大的io 3.建立索引和檢視需要花費一定的物理空間和時間資源 4.面對大量的查詢,複雜的查詢,資料庫必須被大量膨脹才能滿足效能需求 列式資料庫: 1.資料是按列儲存的,每一列單獨存放 2.資料既是索引 3.只訪問查詢涉及的列

資料庫資料庫

開發用了很久的Vertica,知道它是“列式資料庫”但一直沒有去研究過列式資料庫的一些特性,現在來總結一下。 列式資料庫是以列相關儲存架構進行資料儲存的資料庫,主要適合於批量資料處理和即時查詢。相對應的是行式資料庫,資料以行相關的儲存體系架構進行空間分配,主要適合於小批量的

Hbase與Oracle比較(資料庫與行資料庫

1 主要區別 1.1、Hbase適合大量插入同時又有讀的情況 1.2、 Hbase的瓶頸是硬碟傳輸速度,Oracle的瓶頸是硬碟尋道時間。   Hbase本質上只有一種操作,就是插入,其更新操作是插入一個帶有新的時間戳的行,而刪除是插入一個帶有插入標記的行。其主要操作是收集

測試環境MySQL的MyISAM行資料庫引擎和InfoBright的brightHouse資料庫引擎

本機系統: 普通桌上型電腦,2CPU,2G記憶體,硬碟5400轉,Linux Ubuntu 12.04 32位 InfoBright按最小預設配置my-ib.cnf [mysqld] 27 port = 5029 28 socket = /tmp/mysql-ib.sock

oracle資料庫把某行資料轉成一資料

select running_time, running_user, algorithm_id, algorithm_list_id, name1, name2, ROWNUM, wm_concat(t

資料導論(4)——OLTP與OLAP、資料庫資料倉庫

公司內部的資料自下而上流動,同時完成資料到資訊、知識、洞察的轉化過程。 而企業內部資料,從日常OLTP流程中產生,實時儲存進不同的資料庫中。同時定期被提取、經格式轉化、清洗和載入(ETL),以統一的格式儲存進資料倉庫,以供決策者進行OLAP處理,並將處理結果視覺化。 OLTP & OLAP 企業

小菜niao解說-----資料倉庫資料庫

我相信會在百度上搜索什麼是資料倉庫或者搜尋資料庫和資料倉庫的區別的時候,大家都是對資料庫有了一定了解了(本人反正是這樣的,哈哈!!),所以就不再介紹什麼是資料庫了, 我先給大家大家家講講什麼是資料倉庫: 資料倉庫,是為了企業所有級別的決策制定計劃過程,提供所有型別資料型別的戰略集合。它出

#18 資料倉庫(hive)和資料庫(mysql)有什麼區別?

資料倉庫(hive)和資料庫(mysql)的區別 資料庫(DB=Data Base) 資料倉庫(DW=Data Warehouse) (1)資料的型別 資料庫(mysql):線上交易資料 資料倉庫(hive):歷史資料 (2)

MYSQL用命令資料庫,建表,插入資料及常見錯誤

1.登入 首先 cmd進入命令列然後cd到自己安裝的MySQL server的bin目錄下,例如我的是 cd C:\Program Files\MySQL\MySQL Server 8.0\bin 然後用root使用者登陸 C:\Program Files\MySQL\MyS

資料庫資料倉庫 區別

資料庫與資料倉庫的區別 瞭解資料庫與資料倉庫的區別之前,首先掌握三個概念。資料庫軟體、資料庫、資料倉庫。 資料庫軟體:是一種軟體,可以看得見,可以操作。用來實現資料庫邏輯功能。屬於物理層。 資料庫:是一種邏輯概念,用來存放資料的倉庫。通過資料庫軟體來實現。資料庫由很

springboot的@cachePut在使用資料庫更新資料一些奇怪的問題

在使用@CachePut來更新快取的時候,控制檯報如下錯誤: java.lang.ClassCastException: java.base/java.lang.Integer cannot be cast to java.base/java.util.List     a

資料倉庫資料庫的區別

   資料庫:是一種邏輯概念,通過資料庫軟體來實現存放資料。資料庫由很多表組成,表是二維的,一張表裡面有很多欄位。欄位一字排開,對資料就一行一行的寫入表中。資料庫的表,在於能夠用二維表現多維的關係。如:oracle、MySQL、SQL Server等。    資料倉庫:從邏

資料庫為什麼會分為“行儲存”和“儲存”呢?

我們知道 當今的資料處理大致可分為兩大類 聯機事務處理 OLTP (on-line transaction processing) 以及聯機分析處理 OLAP (On-Line Analytical Processing) OLTP 是傳統關係型資料庫的主要應用 用來執行一些基本的、日常的事務處

資料庫資料倉庫的本質區別

資料庫 與 資料倉庫 資料庫:傳統的關係型資料庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。 資料倉庫:資料倉庫系統的主要應用主要是OLAP(On-Line Analytical Processing),支援複雜的分析操作,側重決策支援,並且提供直觀易懂的查詢結果。 我嘗

[資料庫] SQL查詢語句錶行列轉換及一行資料轉換成兩

本文主要講述了SQL查詢語句表之間的行列轉換,同時也包括如何將一行資料轉換成兩列資料的方法、子查詢的應用、decode函式的用法。希望文章對你有所幫助~ 1.建立資料庫表及插入資料2.子查詢統計不同性質的學生總數3.一行資料轉換成兩列資料 union all4.錶行列資料轉

資料系列之資料倉庫Hive知識整理(四)Hive的嚴格模式,動態分割槽,排序,事務,調優

1.Hive的嚴格模式Hive提供了一個嚴格模式,可以防止使用者執行那些產生意想不到的不好的影響的查詢。想想看在那麼大的資料量的前提下,如果我們在分割槽上表上使用查詢所有,或是使用了笛卡爾積查詢資料等等不良情況,那得花費我們多少時間和資源成本,Hive在預設情況下會開啟一種模

HBase 是儲存資料庫

在介紹 HBase 是不是列式儲存資料庫之前,我們先來了解一下什麼是行式資料庫和列式資料庫。 行式資料庫和列式資料庫 在維基百科裡面,對行式資料庫和列式資料庫的定義為:列式資料庫是以列相關儲存架構進行資料儲存的資料庫,主要適合於批量資料處理(OLAP)和即時查詢。相對應的是行式資料庫,資料以行相關的儲存體