1. 程式人生 > >[原始碼和文件分享]基於C++的資料庫可擴容雜湊

[原始碼和文件分享]基於C++的資料庫可擴容雜湊

一、專案介紹

主要涉及可擴充套件雜湊在資料庫中的應用。

讀入由 tpc-h 生成的 lineitem.tbl,以 L_ORDERKEY 屬性作為鍵值將記錄放入合適的雜湊桶內。讀入測試檔案 testinput.in 內的資料,資料中包含多個需要查詢的鍵值。將通過鍵值查詢得到的所有記錄都輸出到 testoutput.out 檔案中。演算法實現分為兩大部分,第一部分是建立索引,第二部分是查詢。建立索引是將輸入的每一條記錄根據指定的鍵值放入合適的雜湊桶內,當雜湊桶已滿時,需要進行分裂。查詢是根據輸入的鍵值返回具有相同鍵值的記錄,返回的記錄可能有不止一條。

二、專案環境

  • 系統:Windows 8.1 專業版 64 位

  • 處理器:Intel® Core(TM) i3 CPU M 350 @ 2.27GHz 2.27 GHz

  • 記憶體:2 GB 金士頓 DDR3 1333MHZ

  • 硬碟:希捷 ST9320 320GB 7200 轉/分

  • 語言:C++

  • 編輯器:Visual Studio 2013

三、專案架構

本專案共有7 個檔案:

  • main.cpp:主檔案,程式的入口

  • Manager.h (.cpp):主控程式,實現功能的主體

  • Buffer.h (.cpp):快取池,管理記憶體中各快取頁

  • Index.h (.cpp):目錄頁,儲存雜湊值和桶號的對應關係

  • Page.h (.cpp):頁的基本類,實現一個頁的基本功能

  • Function.h (.cpp):專案中要用到的通用函式,如取雜湊值,取鍵值等

  • option.h:程式的如最大使用頁數,雜湊方式等引數的定義檔案

無論最大使用頁數和雜湊方式,專案執行時目錄頁佔用 1 頁,讀寫檔案緩衝用佔用一頁,其他頁都用來儲存記錄桶。

 


參考文件和完整的文件和原始碼下載地址:

https://www.write-bug.com/article/142.html