自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

列存儲(chǔ):為什么你要掌握列存儲(chǔ)技術(shù)

存儲(chǔ) 存儲(chǔ)軟件
在大數(shù)據(jù)技術(shù)如火如荼的今天,掌握列存儲(chǔ)技術(shù)不論對(duì)于求職面試,技術(shù)選型,還是增加自己的知識(shí)廣度都是非常有幫助的。

 一. 為什么要掌握列存儲(chǔ)技術(shù)

列存儲(chǔ)太流行了?。。?/p>

在大數(shù)據(jù)技術(shù)如火如荼的今天,掌握列存儲(chǔ)技術(shù)不論對(duì)于求職面試,技術(shù)選型,還是增加自己的知識(shí)廣度都是非常有幫助的。列存儲(chǔ)技術(shù)目前應(yīng)用領(lǐng)域有:

  • hadoop生態(tài)系統(tǒng):幾乎所有的Sql-On-Hadoop引擎都支持列存儲(chǔ)技術(shù),比如SparkSql,Impala。parquet幾乎成為了交互式分析的標(biāo)準(zhǔn)存儲(chǔ)。
  • NoSql數(shù)據(jù)庫(kù):HBase,cassandra等數(shù)據(jù)庫(kù)。
  • 傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù):Vertica,Infobright等傳統(tǒng)意義上面向列的關(guān)系數(shù)據(jù)庫(kù),甚至oracle,sql-server都開(kāi)始支持列存儲(chǔ)了。

[[219947]]

二. 文章大綱

盡管列存儲(chǔ)技術(shù)已經(jīng)非常的火了,但是列存儲(chǔ)技術(shù)的中文資料還是太少了,在百度中搜索列存儲(chǔ)幾乎搜不到任何有價(jià)值的東西,列存儲(chǔ)技術(shù)的學(xué)習(xí)難度非常高。

作者對(duì)列存儲(chǔ)領(lǐng)域核心論文,開(kāi)源技術(shù)做了一個(gè)整理,在接下來(lái)的系列文章中,分別對(duì)列存儲(chǔ)技術(shù)進(jìn)行一一介紹。本系列文章大綱如下:

列存儲(chǔ)1:***個(gè)列存儲(chǔ)模型DSM

列存儲(chǔ)2:列存儲(chǔ)沒(méi)有取代行存儲(chǔ)背后的原因

列存儲(chǔ)3:列存儲(chǔ)的崛起

列存儲(chǔ)4:現(xiàn)代列存儲(chǔ)關(guān)系數(shù)據(jù)庫(kù)

列存儲(chǔ)5:元組物化策略

列存儲(chǔ)6:列存儲(chǔ)壓縮

列存儲(chǔ)7:向量化執(zhí)行引擎

列存儲(chǔ)8:列存儲(chǔ)在hadoop中的應(yīng)用

列存儲(chǔ)9:數(shù)據(jù)庫(kù)存儲(chǔ)模型的發(fā)展趨勢(shì)

三.初識(shí)列存儲(chǔ)

數(shù)據(jù)庫(kù)領(lǐng)域中有兩種存儲(chǔ)方式:行存儲(chǔ)和列存儲(chǔ)。二者之間唯一的區(qū)別就是一個(gè)按行存儲(chǔ),一個(gè)按照列存儲(chǔ),如圖1。

                                  圖1行存儲(chǔ)和列存儲(chǔ)

我們?cè)倥e一個(gè)具體的例子,假設(shè)我們有一個(gè)employ關(guān)系表,employ表含有uuid,name,age三列,表總大小大約在3G左右。

在行存儲(chǔ)中(圖2,左),表”水平”存儲(chǔ),既按行連續(xù)存儲(chǔ),首先***行,然后第二行。當(dāng)執(zhí)行SELECT uuid FROM sales,需要遍歷表的所有數(shù)據(jù)(3G)來(lái)返回uuid列。

在列存儲(chǔ)中(圖2,右),表是”垂直”存儲(chǔ)的,每一列獨(dú)立的存儲(chǔ)為一個(gè)文件,sales表中的每一個(gè)列都有一個(gè)對(duì)應(yīng)的文件存儲(chǔ)。當(dāng)用戶執(zhí)行SELECT uuid FROM sales時(shí),只需查詢uuid對(duì)應(yīng)的文件即可(30M),而不必查詢其他列所對(duì)應(yīng)的文件,從而極大的減少了磁盤(pán)訪問(wèn),提高查詢速度。

我們看到了列存儲(chǔ)的優(yōu)勢(shì):列存儲(chǔ)查詢可以剔除無(wú)關(guān)的列,當(dāng)查詢只有少量列時(shí),可以極大的減少查詢的數(shù)據(jù)量,提高查詢速度。

此外,列存儲(chǔ)還具有很多行存儲(chǔ)所不具有的優(yōu)點(diǎn):因?yàn)榘戳写鎯?chǔ),每一個(gè)列種內(nèi)存相似的概率比較大,例如age列,34,26,26.因此列存儲(chǔ)壓縮率要比行存儲(chǔ)高很多。此外,我們可以將列數(shù)據(jù)放到CPU cache中,然后使用SIMD指令執(zhí)行計(jì)算,從而提高計(jì)算速度。

列存儲(chǔ)概括起來(lái)具有如下優(yōu)點(diǎn)[文獻(xiàn)2],我們?cè)诮酉聛?lái)的系列文章中將分別詳細(xì)的介紹:

  • 輕量級(jí)壓縮算法(Leight-Weight Compression)
  • 延遲壓縮(Late Compression)
  • 延遲物化(Late Materialization)
  • 直接操作壓縮數(shù)據(jù)(Operating Directly on Compressed Data)
  • 向量化執(zhí)行引擎(vectorized processing)

四.列存儲(chǔ)簡(jiǎn)史

列存儲(chǔ)技術(shù)從誕生之日起,至今已有40多年時(shí)間了,列存儲(chǔ)技術(shù)的廣泛應(yīng)用也不過(guò)是最近十年左右的事情。我們不由得好奇,既然列存儲(chǔ)技術(shù)出現(xiàn)已經(jīng)有40年了,為什么最近十年才開(kāi)始流行,本文主要對(duì)列存儲(chǔ)的發(fā)展歷史做一個(gè)全局的綜述,后面系列文章將對(duì)列存儲(chǔ)做更細(xì)致的介紹。

                                     圖3:列存儲(chǔ)歷史

列存儲(chǔ)技術(shù)的發(fā)展主要經(jīng)歷了3個(gè)階段:

  • 1970-1990:列存儲(chǔ)思想開(kāi)始出現(xiàn)。在70s年代,列存儲(chǔ)技術(shù)最早應(yīng)用在倒排文件中。76以后關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)開(kāi)始出現(xiàn),關(guān)系數(shù)據(jù)庫(kù)從出現(xiàn)開(kāi)始就使用行存儲(chǔ)作為其標(biāo)準(zhǔn)存儲(chǔ),到了1985年,Copeland在其A decomposition storage model論文中***提出了DSM存儲(chǔ),作者對(duì)DSM和NSM做了比較全面的對(duì)比,這篇論文闡述了兩個(gè)最重要的觀點(diǎn):首先,DSM可以取代NSM作為關(guān)系數(shù)據(jù)庫(kù)的存儲(chǔ),其次,當(dāng)查詢只有一個(gè)列或者少數(shù)幾個(gè)列時(shí),DSM可以顯著的減少磁盤(pán)讀取次數(shù),從而提高查詢性能。
  • 1990-2005:列存儲(chǔ)技術(shù)被應(yīng)用在內(nèi)存數(shù)據(jù)庫(kù)中。到了90年代,CPU和內(nèi)存之間的速度差異越來(lái)越大,當(dāng)CPU指令訪問(wèn)內(nèi)存數(shù)據(jù)時(shí),需要花費(fèi)上百個(gè)周期來(lái)等待內(nèi)存返回結(jié)果,導(dǎo)致CPU大部分時(shí)間都浪費(fèi)在等待內(nèi)存上,CPU訪問(wèn)內(nèi)存開(kāi)始成為新的瓶頸。在數(shù)據(jù)庫(kù)領(lǐng)域,最早注意到這一點(diǎn)的是Boncz.
  • 1999年,Boncz在[3]中指出內(nèi)存訪問(wèn)將成為數(shù)據(jù)庫(kù)系統(tǒng)新的瓶頸,這個(gè)觀點(diǎn)是非常令人興奮的,因?yàn)槿藗円恢闭J(rèn)為磁盤(pán)是數(shù)據(jù)庫(kù)系統(tǒng)最主要的瓶頸,而忽略了內(nèi)存延遲。受boncz論文的啟發(fā),在數(shù)據(jù)庫(kù)領(lǐng)域,逐漸出現(xiàn)了PAX等針對(duì)CPU cache優(yōu)化的存儲(chǔ)模型。因boncz在那個(gè)年代超前的觀點(diǎn),VLDB在2009將其論文評(píng)為十年內(nèi)***論文。 
  • 2005-至今:讀優(yōu)化數(shù)據(jù)庫(kù)。2005年以后,互聯(lián)網(wǎng)應(yīng)用越來(lái)越流行,企業(yè)存儲(chǔ)的數(shù)據(jù)體量也越來(lái)越大,人們不再滿足于簡(jiǎn)單的存儲(chǔ)數(shù)據(jù),而是開(kāi)始想著怎么從現(xiàn)有的數(shù)據(jù)中挖掘出價(jià)值。于是,TB,PB級(jí)數(shù)據(jù)倉(cāng)庫(kù)開(kāi)始出現(xiàn)。數(shù)據(jù)庫(kù)倉(cāng)庫(kù)是典型的分析型應(yīng)用,所謂的分析,就是海量數(shù)據(jù)基礎(chǔ)上(至少***)執(zhí)行復(fù)雜查詢(join,group by,filter)。此時(shí),傳統(tǒng)的OLTP數(shù)據(jù)庫(kù)很難處理這種分析應(yīng)用,于是新的面向分析的數(shù)據(jù)庫(kù)系統(tǒng)誕生了:面向列的關(guān)系數(shù)據(jù)。

C-store是***個(gè)現(xiàn)代的列存儲(chǔ)關(guān)系數(shù)據(jù)庫(kù),其原型Michael Stonebraker(2014年圖靈獎(jiǎng)得主,后文會(huì)介紹)等大牛開(kāi)發(fā)的,后來(lái)慢慢演變成vertica,我們現(xiàn)在的很多列存儲(chǔ)技術(shù)用的都是c-store中的那一套,比如面向列的壓縮。

面向列的關(guān)系數(shù)據(jù)庫(kù)是典型的讀優(yōu)化數(shù)據(jù)庫(kù),所謂的讀優(yōu)化數(shù)據(jù)庫(kù),是指他們具有良好的復(fù)雜查詢性能,但是不支持單行插入,在線更新等操作。該類(lèi)系統(tǒng)通常只支持批量加載,比如每天凌晨設(shè)置一個(gè)定時(shí)任務(wù)將數(shù)據(jù)加載到數(shù)據(jù)庫(kù)中。

五. 總結(jié)

列存儲(chǔ)就是每一個(gè)列或者多個(gè)列獨(dú)立的存儲(chǔ)為一個(gè)文件,這是所有列存儲(chǔ)系統(tǒng)的特點(diǎn)

列存儲(chǔ)查詢時(shí)可以”剔除”無(wú)關(guān)的列,從而極大的減少所查詢的數(shù)據(jù)量,提高查詢速度。

列存儲(chǔ)發(fā)展歷史經(jīng)歷了三個(gè)時(shí)期,1970-1990年,列存儲(chǔ)思想開(kāi)始萌芽,DSM是***個(gè)列存儲(chǔ)模型。1990-2005年,人們主要關(guān)注列存儲(chǔ)數(shù)據(jù)庫(kù)在主內(nèi)存中的應(yīng)用,monet,pax是該時(shí)期的代表。2005以后,面向分析的讀優(yōu)化數(shù)據(jù)庫(kù)開(kāi)始流行。

列存儲(chǔ)相關(guān)技術(shù):輕量級(jí)壓縮算法,延遲物化,直接操作壓縮數(shù)據(jù),向量化執(zhí)行引擎。

 

責(zé)任編輯:武曉燕 來(lái)源: 大數(shù)據(jù)技術(shù)干貨
相關(guān)推薦

2021-06-17 06:19:20

存儲(chǔ)SQL數(shù)據(jù)庫(kù)

2018-09-19 10:01:39

MSSQL列存儲(chǔ)實(shí)時(shí)分析

2018-01-30 08:47:46

存儲(chǔ)查詢性能

2012-09-26 10:42:11

大數(shù)據(jù)

2020-06-15 08:51:58

數(shù)據(jù)庫(kù)存儲(chǔ)系統(tǒng)

2024-07-25 08:43:35

2011-07-13 10:00:46

2018-05-23 00:20:29

2011-03-17 16:46:50

SQL Server存儲(chǔ)方式

2014-08-25 10:00:18

開(kāi)源

2018-06-14 08:44:03

2023-10-24 11:44:21

2020-08-03 07:50:56

存儲(chǔ)對(duì)象存儲(chǔ)

2021-02-08 08:34:55

存儲(chǔ)列式 OLAP

2019-01-04 11:08:38

開(kāi)源分布式流存儲(chǔ)Pravega

2015-07-28 14:22:09

BAT

2013-09-22 09:55:23

碼農(nóng)程序員

2016-11-09 19:50:43

對(duì)象存儲(chǔ)AWS S3

2022-06-30 08:03:13

Prisma數(shù)據(jù)庫(kù)工具開(kāi)源

2010-03-29 13:19:10

OracleMulti
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)