数据库行式存储和列式存储的区别
這里簡(jiǎn)單介紹數(shù)據(jù)庫(kù)行式存儲(chǔ)和列式存儲(chǔ)的概念和它們之間的區(qū)別。
行式存儲(chǔ)
傳統(tǒng)的數(shù)據(jù)庫(kù)是關(guān)系型的,按行來(lái)存儲(chǔ)(二維表)數(shù)據(jù),如下圖:
其中,只有張三把一行數(shù)據(jù)填滿(mǎn)了,李四王五趙六都沒(méi)有填滿(mǎn)。因?yàn)檫@里的行結(jié)構(gòu)是固定的,每一行都一樣,即使你不用,也必須要空到哪里,而不能沒(méi)有。
列式存儲(chǔ)
為了與傳統(tǒng)數(shù)據(jù)庫(kù)做區(qū)分,新型的數(shù)據(jù)庫(kù)被叫做非關(guān)系型數(shù)據(jù)庫(kù),按列來(lái)存儲(chǔ)數(shù)據(jù),如下圖:
原來(lái)張三的一列(單元格)數(shù)據(jù)對(duì)應(yīng)現(xiàn)在張三的一行數(shù)據(jù),原來(lái)張三的六列數(shù)據(jù)對(duì)應(yīng)現(xiàn)在張三的六行數(shù)據(jù)。原來(lái)的六列數(shù)據(jù)是在一行,所以共用一個(gè)主鍵(即張三)。現(xiàn)在變成了六行數(shù)據(jù),每行數(shù)據(jù)都需要一個(gè)主鍵(不然不知道這行數(shù)據(jù)是誰(shuí)的),所以原來(lái)的主鍵(即張三的唯一標(biāo)識(shí))重復(fù)了六次。
由于原來(lái)的列變成了現(xiàn)在的行,有需要就加一行,沒(méi)需要就不加,這樣就不會(huì)造成空間的浪費(fèi)。
行式存儲(chǔ)和列式存儲(chǔ)的區(qū)別
1.行式存儲(chǔ)傾向于結(jié)構(gòu)固定,列式存儲(chǔ)傾向于結(jié)構(gòu)弱化。
2.行式存儲(chǔ)存儲(chǔ)一行數(shù)據(jù)僅需要一個(gè)主鍵,列式存儲(chǔ)存儲(chǔ)一行數(shù)據(jù)需要多份主鍵。
3.列式存儲(chǔ)存儲(chǔ)的都是業(yè)務(wù)數(shù)據(jù),而列式存儲(chǔ)除了業(yè)務(wù)數(shù)據(jù)之外,還需要存儲(chǔ)列名。
4.行式存儲(chǔ)更像是一個(gè)Java Bean,所有的字段都提前定義好,且不能改變;列式存儲(chǔ)更像是一個(gè)Map,不提前定義,隨意往里面添加key/value。
"關(guān)于青春的故事,總是在晴朗的天氣里,用最歡快的語(yǔ)氣開(kāi)頭。就好像,講故事的人,真的不知道結(jié)局有多憂(yōu)傷似的。"
總結(jié)
以上是生活随笔為你收集整理的数据库行式存储和列式存储的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HDMI的CEC是如何控制外围互联设备的
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?