日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

列式存储数据库

發布時間:2024/1/3 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 列式存储数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關系型數據庫系統以二維表的形式呈現數據,比如下面的員工表

RowId EmpId Lastname Firstname Salary
001 10 Smith Joe 40000
002 12 Jones Mary 50000
003 11 Johnson Cathy 44000
004 22 Jones Bob 55000

上面的格式僅僅存在于理論和邏輯中,事實上存儲設備要求數據序列化為某種形式。

我們知道對于硬盤來說,最昂貴的操作是查找。為了提高最終性能,所需要的相關數據應該以某種方式去存儲從而使“查找”操作盡可能少。硬盤由一系列規定大小的塊(block)組成, 通常足以容納數據表的幾行。通過把相關的行存儲在塊中,僅僅一定數量的塊需要被讀取從而最小化了查找的數量。

行式存儲

傳統的存儲方案是按行序列化數據,如下所示

001:10,Smith,Joe,40000;002:12,Jones,Mary,50000;003:11,Johnson,Cathy,44000;004:22,Jones,Bob,55000;

行式存儲系統被設計為以很少的操作就可以返回整行或整條記錄。當我們需要獲取關于某個特定對象的信息的時候,比如某個用戶的聯系信息或某件商品信息,這種設計就相當適用。

但是行式存儲不適用于對整個數據集的操作。比如,找出工資在40000到50000之間的記錄,行式存儲系統可能得找遍這個數據集才能找出匹配的所有記錄。當數據量相當大時,這些記錄存儲于分散的不同的磁盤塊中,這樣相當多的磁盤操作就變得不可避免了。

為了提高這種類型操作的性能,大多數DBMS數據庫系統使用索引技術。它把列的值存儲在一起,同時與記錄ID關聯。如下所示

001:40000;002:50000;003:44000;004:55000;

我們可以看到,這里僅僅存儲整個數據集的一部分,一般來說索引比整個主表要小很多。掃描小的數據集所需要的磁盤操作當然減少了。然而,當有新的數據寫入數據庫時,索引需要維護,這個對系統增加了額外的開銷。

有些行式存儲數據庫被設計為完全運行于內存中,及內存數據庫。這樣的系統不依賴于磁盤操作,對于整個數據庫的任何數據訪問具有同等時間. (equal-time access) 這樣的系統可能會很簡單有效,然而它們管理的數據僅限于存儲在內存中。

列式存儲

列式存儲系統將某一列的所有值序列化在一起,然后是另一列的所有值。對于我們的例表,數據存儲結構如下

10:001,12:002,11:003,22:004;Smith:001,Jones:002,Johnson:003,Jones:004;Joe:001,Mary:002,Cathy:003,Bob:004;40000:001,
50000:002,44000:003,55000:004;

這樣的結構看起來與行式存儲中的索引結構看起來很像,對吧。是的,沒錯,看起來很接近。

只是,它們之間有顯著的區別。行式存儲中,主鍵是rowid(它關聯到索引數據);列式存儲中,主鍵是數據本身(關聯回rowid),即“數據即索引”。對于常見的查詢,如“所有名字叫Jones的人”,僅僅需要一個操作答案將被找到;另外,像一些聚合運算,基于這樣的存儲結構其性能能得以大幅提高。

Refer to: http://en.wikipedia.org/wiki/Column-oriented_DBMS

總結

以上是生活随笔為你收集整理的列式存储数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。