資料庫儲存技術基礎 一 字典編碼

2022-09-04 04:27:09 字數 1354 閱讀 1978

說到資料庫儲存技術的基礎,就要了解企業應用的資料特性以及面臨的瓶頸。

1.企業應用的資料特性

以快遞追蹤為例,資訊讀取過程包括當前讀取操作的地點、時間戳、當前所處的業務流程(如收件、打包、運送)以及其他詳細資訊。

當然,對網路遊戲活動資料的分析就更為複雜。每個

事件資料的資料集較小(byte/kb)而每個實體可產生多個事件。

2.資料庫的瓶頸

現代的企業偏向「資料導向」。企業要處理人與機器時時刻刻產生的大量資料來支撐決策,為此要

將不同資料來源的資料整合;企業要進行互動式決策,為此要對資料實時分析。

資料傳輸的效率受限於cpu匯流排,而通過並行處理可超越匯流排速率。磁碟用於資料的備份和歸檔,不是線上服務效能的關注點。因此,記憶體的訪問成為資料庫的新瓶頸。

3.瓶頸的改善方法

當然,分庫可以改善記憶體瓶頸,但改善瓶頸的本質是減少對記憶體的訪問。我們應該盡可能減少資料的表示位數,這樣既能減少記憶體占用又能減少記憶體的訪問。同時,在執行訪問時也要精打細算,只訪問被用到的列。

減少資料表示位數的最基本思路就是字典編碼,既簡單又好用,也是編碼列壓縮技術的基礎。

4.字典編碼

字典編碼以列為單元進行操作,通過簡單的轉換將不同的值替換為不同的整數值(短整數優先),將長文字值壓縮為短整數值,因此並沒有改變表的規模。通常情況下,企業資料的熵較低,即資料的重複度大,因此壓縮效果較為理想。以性別列壓縮為例:性別列僅包含兩個值,若通過"m", "f"表示,那麼需要1byte.假設全世界有70億人口,那麼需要70億*1byte約為6.52gb. 如果使用字典壓縮,1位足夠表達相同資訊,需要70億)1bit=0.81gb, 其中字典需要2*1位元組=2位元組。壓縮比例=未壓縮大小/壓縮大小約為8.

通常情況下,姓名、國家、生日等文字資料均可通過字典編碼獲得10~20倍的壓縮比例。

5.排序字典

上述字典編碼的全量掃瞄時間為o(n), 如過將字典加以排序,利用二分法的字典檢索時間僅為o(lon(n)). 一般情況下,我們希望字典既精煉又冗餘,因為這樣的優化要付出代價:新字的加入導致字典重排序,若新字不在字典末尾,資料表也要更新,即新字後面的字所對應的值均要向後位移。因此,對於國家、生日等「可數可列」(可窮舉)的列採用字典編碼即可獲得更好的查詢速度,又幾乎不會擔心字典產生變動。

參考書籍

[1]. a course in in-memory data management: the inner mechanics of in-memory databases. hasso plattner. 2012

OTL資料庫儲存技術

otl 是 oracle,odbcand db2 cli template library 的縮寫,是乙個c 編譯中操控關聯式資料庫的模板庫,它目前幾乎支援當前所有的各種主流資料庫,例如oracle,ms sql server,sybase,informix,mysql,db2,interbase ...

資料庫儲存過程基礎

1.建立簡單的儲存過程 create proc proc name as select from syscolumns where object name id crm customer 2 執行儲存過程 exec proc name 3 刪除儲存過程 drop proc proc name 4.帶...

VC 資料庫技術系列 一 資料庫基礎知識

我們知道程式界有乙個著名公式是 程式 資料 演算法。這充分說明了資料在程式設計中的重要地位。而當資料規模達到一定程度的時候,為了達到資料的快速儲存和快速訪問,就必須使用資料庫 database 來進行資料的儲存。因為資料庫是按照資料結構來組織 儲存和管理資料的倉庫,利用資料庫進行儲存具有儲存訪問快速...