這里簡單介紹數據庫行式存儲和列式存儲的概念和它們之間的區別。
行式存儲
傳統的數據庫是關系型的,按行來存儲(二維表)數據,如下圖:
其中,只有張三把一行數據填滿了,李四王五趙六都沒有填滿。因為這里的行結構是固定的,每一行都一樣,即使你不用,也必須要空到哪里,而不能沒有。
列式存儲
為了與傳統數據庫做區分,新型的數據庫被叫做非關系型數據庫,按列來存儲數據,如下圖:
原來張三的一列(單元格)數據對應現在張三的一行數據,原來張三的六列數據對應現在張三的六行數據。原來的六列數據是在一行,所以共用一個主鍵(即張三)。現在變成了六行數據,每行數據都需要一個主鍵(不然不知道這行數據是誰的),所以原來的主鍵(即張三的唯一標識)重復了六次。
由於原來的列變成了現在的行,有需要就加一行,沒需要就不加,這樣就不會造成空間的浪費。
行式存儲和列式存儲的區別
1.行式存儲傾向於結構固定,列式存儲傾向於結構弱化。
2.行式存儲存儲一行數據僅需要一個主鍵,列式存儲存儲一行數據需要多份主鍵。
3.列式存儲存儲的都是業務數據,而列式存儲除了業務數據之外,還需要存儲列名。
4.行式存儲更像是一個Java Bean,所有的字段都提前定義好,且不能改變;列式存儲更像是一個Map,不提前定義,隨意往里面添加key/value。
"關於青春的故事,總是在晴朗的天氣里,用最歡快的語氣開頭。就好像,講故事的人,真的不知道結局有多憂傷似的。"