《資料庫系統概念》14 靜態雜湊

2022-06-05 19:12:18 字數 1265 閱讀 8471

順序檔案組織的缺點之一是必須通過訪問索引或使用二分法搜尋來定位資料,這需要較多的i/o操作。基於雜湊技術的檔案組織方式則不需要訪問索引結構,雜湊也提供了一種組織索引的方式。

在雜湊(hash)技術中,用桶(bucket)來表示能儲存一條或多條記錄的儲存單元。如果k代表所有搜尋碼的集合,b代表所有bucket的集合,則雜湊函式h表示乙個從k到b的對映函式。

插入搜尋碼為ki的記錄時,通過雜湊函式計算h(ki)得出bucket的位址,如果這個bucket還有空間,就將資料插入。

查詢ki時,也是先通過h(ki)得出bucket的位址,但bucket中往往有多條記錄,這時就需要進一步根據搜尋碼在bucket內部搜尋。

雜湊可以有兩種用途,在雜湊檔案組織中,通過雜湊函式直接定位記錄所在的磁碟塊;在雜湊索引組織中,把搜尋碼和指標組織成乙個雜湊檔案結構。

a) 雜湊函式

合理地選擇雜湊函式非常重要,否則可能導致記錄被集中對映到少數幾個bucket的情況。要求雜湊函式的分布特性是均勻、隨機的,既每個bucket被分配到的記錄數應該是相等的,而且分配結果與搜尋碼本身的順序無關。

典型的雜湊函式是根據搜尋碼的二進位制值進行計算的,比如可以計算二進位制所有位的和,然後取模。乙個結果良好設計的雜湊函式應不受記錄數量的影響,而具有穩定的搜尋效率。

b) bucket溢位的處理

如果記錄被對映到乙個bucket時bucket以及沒有可用空間,就會發生溢位。溢位的原因可能是因為隨著記錄數的增長,沒有足夠的bucket;也可能是因為雜湊函式設計不合理或者存在太多相同的搜尋碼,導致記錄被集中對映到某些bucket,而乙個bucket能容納的記錄是有限的,這種情況稱為桶偏斜(bucket

skew)。

為了應對bucket溢位,可以在確定bucket數量時留一定的餘量,但這會造成空間浪費;也可以使用溢位桶(overflow

bucket)來接收溢位記錄:一旦發生溢位,就新增乙個溢位桶,以接收溢位記錄,溢位桶與原始桶構成鍊錶(overflow

chaining),於是查詢資料時,要增加對是否存在溢位桶的探查,如果存在,則進一步在溢位桶中搜尋。

這種靜態雜湊的缺點在於必須在設計階段確定好bucket的數量,隨著記錄的數的增加或收縮,bucket數無法跟隨變化,會造成溢位或空間浪費。

c) 雜湊索引

除了雜湊檔案組織,還可以用雜湊的方式組織索引。將雜湊函式作用於搜尋碼以確定對應的桶,然後將此搜尋碼以及相應的指標存入。

學習資料:database system concepts, by abraham silberschatz, henry f.korth, s.sudarshan

資料庫系統概念 回顧

資料抽象一般分三層 最底層 物理層physical level 描述資料實際上是怎樣儲存的 中間層 邏輯層logic level 描述資料庫中儲存什麼資料及這些資料間存在什麼關係 最頂層 檢視層view level 只描述整個資料庫的某個部分 關係模型 relational model logic ...

SQLServer資料庫系統概念

資料模型是一種抽象模型,現實世界中的客觀事物是彼此相互聯絡的 1 資料模型是一組整合的概念,使用者描述和操作組織內的資料,資料間的聯絡以及對資料的約束,它包含了資料結構,資料操作和完整性約束 2 概念模型又被稱為實體 聯絡 e r 模型,主要用於描述資訊世界中實體的聯絡 在概念模型中用於描述其資料的...

資料庫系統概念 第14章 事務 知識總結

資料庫系統概念 第14章知識點總結 事務 事務是訪問並可能更新各種資料項的乙個程式執行單元。事務通常由高階資料操作語言或程式語言通過jdbc或 odbc 嵌入式資料庫訪問書寫的使用者程式的執行所引起。事務用形如 begin transaction 和end transaction 語句來界定。事務的...