行式儲存資料庫和列式儲存資料庫,隨著業務深入,技能增長,經常會碰到,今天來理解一下。
列式儲存(clolumn-based)和行式儲存(row-based)都是相對於對方的,他們的區別是在磁碟的儲存方式不同,所以在讀寫資料時,方式不同,以至於他們的適用場景也都不同。
列式儲存資料庫主要包括:hbase,clickhouse,druid,hp vertica(也支援行式儲存)
行式儲存資料庫主要包括傳統關係型資料庫:mysql,oracle,db2,sqlserver,postgresql
序號位址
腰圍長相姓名1
陽谷縣30
6潘金蓮
2鄆城縣406
閻惜嬌3
薊州50
6潘巧雲4京城
308李師師西門大官人沒有excel,只有紙和筆記錄,所以他先寫成如下這種行式儲存的方式。在什麼地方找誰,找什麼樣的,奶茶喝膩了,換換口味,一目了然。
這樣,現在要找薊州的紅顏,就把所有的掃瞄檢視一遍,找到薊州的紅顏。想找6分的紅顏,就再掃瞄一遍,想找什麼就掃瞄一遍。
這就是乙個標準的行式儲存,資料按照一行一行的儲存,有什麼特點呢:
資料按行儲存,直觀檢視一條資料的全部資訊,修改方便(oltp)
查詢需要一條一條的檢視(全表掃瞄),費事,費時
建立索引、物化檢視消耗時間,資源。
後來,大官人要記錄管理的物件越來越多是,這個又不能交給別人去記錄,只能親力親為,問題出現了,大官人的資料已經記錄成一本書了,每次癮發作了,先看一本書,檢視位址,是不是體驗特別不好?這沒有難道他,他又想到了一種記錄方式
將序號和行號寫到特定的幾張紙上,將位址和行號寫在特定的幾張紙上,將腰圍和行號寫在特定的幾張紙上,將姓名和行號寫在指定的幾張紙上。
這樣,想查詢腰圍30的,只需要查詢腰圍的那幾張紙,找到行號,再查詢記錄位址的幾張紙,檢視位址就可以去哈皮了。體驗似乎好起來了。
這樣儲存有什麼特點呢:
列式儲存。
只查詢需要的字段,快速。(olap)
3,查詢某一條資料的全部資訊要查詢所有的紙再拼接起來,不方便,修改一條資料,要修改多張紙,不方便。
資料是按行儲存的
沒有索引時,查詢使用大量i/o,大資料量是表現不佳。
建立索引和物化檢視可以優化,但是需要花費大量時間和資源。
面對查詢的需求,資料庫必須被大量膨脹才能滿足效能需求。
資料按列儲存–每一列單獨存放 。
資料即是索引。
只訪問查詢涉及的列–大量降低系統io 。
每一列由乙個線索來處理–查詢的併發處理。
資料型別一致,資料特徵相似–高效壓縮。
行式儲存適用於oltp,而列式儲存適用於大資料場景下的olap。實際生產活動中,按照使用場景,進選擇合適的儲存引擎,發揮元件的最大優勢。
(完)(^_^)
行式儲存與列式儲存
行式儲存與列式儲存 行式儲存 資料儲存以行為單位,儲存完一行就會跳到第二行 row based store。維護大量的索引,儲存成本比較高,不能做到線性擴充套件,對於隨機讀的效率高。最大的特點就是對事務的處理能力支援的非常好。行式儲存最大的優點是關係之間的解決方案,行式儲存實現了關係型資料庫,如果表...
列式儲存和行式儲存的區別
列式儲存 columnar or column based 是相對於傳統關係型資料庫的行式儲存 row basedstorage 來說的。簡單來說兩者的區別就是如何組織表 翻譯不好,直接抄原文了 row based storage stores atable in a sequence of row...
列式儲存和行式儲存的理解詳解
叮嘟!這裡是小啊嗚的學習課程資料整理。好記性不如爛筆頭,今天也是努力進步的一天。一起加油高階吧!列式儲存是指一列中的資料在儲存介質中是連續儲存的 行式儲存是指一行中的資料在儲存介質中是連續儲存的。簡單的說,你可以把列式資料庫認為是每一列都是乙個表,這個表只有一列,如果只在該列進行條件查詢,速度就很快...