基於C 的資料庫可擴容雜湊

2021-09-25 06:08:16 字數 911 閱讀 3572

一、專案介紹

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

讀入由 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++

三、專案架構

本專案共有7 個檔案:

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

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

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

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

page.h (.cpp):頁的基本類,實現乙個頁的基本功能

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

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

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

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

一 專案介紹 主要涉及可擴充套件雜湊在資料庫中的應用。讀入由 tpc h 生成的 lineitem.tbl,以 l orderkey 屬性作為鍵值將記錄放入合適的雜湊桶內。讀入測試檔案 testinput.in 內的資料,資料中包含多個需要查詢的鍵值。將通過鍵值查詢得到的所有記錄都輸出到 testo...

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

一 專案介紹 主要涉及可擴充套件雜湊在資料庫中的應用。讀入由 tpc h 生成的 lineitem.tbl,以 l orderkey 屬性作為鍵值將記錄放入合適的雜湊桶內。讀入測試檔案 testinput.in 內的資料,資料中包含多個需要查詢的鍵值。將通過鍵值查詢得到的所有記錄都輸出到 testo...

資料庫知識(主要基於Oracle,Sql可參考)

1.關於union的知識 select 11 from dual union select 11 from dual 和select 11 from dual union all select 11 from dual 有區別,union的作用是合併查詢結果 all保留重複行 2.關於order b...