據說各大數據庫都是以哈希表為基礎的,但是哈希表不是不能直接尋址嗎,存取效率應該比二進制低不少,為什麼要選用哈希表而不是直接二進制?
哈希表是一種折衷。當然,直接尋址是好,問題是,你需要一種數據結構,還能不斷添加、刪除、修改吧。
再說,尋址是文件的角度來說的,和哈希表沒有關系。
數據庫用哈希表,當然不全用哈希表,同時數據庫也是用的二進制文件。這不矛盾。我說的二進制是相對文本文件來說的。確切地說法,不是二進制,而是隨機文件。
所謂隨機文件,就是你可以隨機定位和訪問的文件。文本文件不是隨機文件,比如說讀取文本第100行,你沒辦法知道第100行的地址,或者說相對文件頭,它中間隔了多少字符,你只能從頭讀取一次,這樣效率很低。
所有的數據庫,都使用二進制文件(當然,二進制文件也有不能隨機訪問的),或者進一步說,是隨機文件作為基本的文件格式。
在此之上,用什麼算法,比如哈希表、索引、簇等等,那是另一回事了。