列資料庫的檔案結構設計(筆記)

來源:互聯網
上載者:User

  之前的畢業設計做了一個關於列資料庫檔案設計的課題,最近抽空回頭看了一下那論文,當時覺得浪費了時間,現在想來這課題還是蠻有意義的。最終也通過代碼實現了資料的列式儲存,雖然大部分代碼不是我寫的,但至少把他弄懂了。以下內容僅用作學習筆記,可以看做是自己的功課溫習,嘿嘿。

----------------------------------------------------------------------------------------------------

(1)列資料檔案總體結構

  列資料庫的資料一般以檔案的形式儲存在磁碟中,每個表的每個欄位的記錄會存在不同的檔案中,在進行資料的增刪查改操作時需要進行檔案的IO操作。在列資料庫儲存資料時,關係表中的資料將會按欄位來分別儲存,同一欄位的資料區段被存在同一個檔案中,不同欄位的資料區段被存在不同檔案中,如所示。

  這樣的儲存方式的一個好處是: 由於每個資料檔案中的資料都是同一個表中的同一個欄位,那麼在進行向量化資料查改操作時只需要開啟相關的資料檔案進行資料讀取,這樣的話可以避免開啟整個表的遍曆,相對的減少了IO操作(IO操作在海量複雜資料中限制了查詢效率的提升)。而傳統關聯式資料庫的查詢則牽涉到開啟整個表的操作,因此在進行海量資料的查詢時IO消耗的時間將會相當明顯,這也是抑制了資料查詢效能的一個重要因素。

(2)列資料檔案頭結構

  資料檔案主要是以4K為單位進行分頁,檔案頭佔據了開頭的一頁,在頁號一項中記錄為0。也就是檔案頭是佔據了4K空間的資料區塊,如所示是檔案頭的主要內容項布局。

   對於定長欄位和不定長欄位,各自的儲存方式是不一樣的。對於定長欄位,記錄是按先後插入的順序在資料頁中有序往後儲存;程式可以讀取檔案頭中的欄位實際大小,儲存空間大小,資料項目數量等資訊來快速查詢資料。而對於不定長欄位,資料頁中多了一個關於欄位的位移地址資訊;程式將需要通過檔案頭的資訊和位移地址來有序讀取資料頁中的資料。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.