据说各大数据库都是以哈希表为基础的,但是哈希表不是不能直接寻址吗,存取效率应该比二进制低不少,为什么要选用哈希表而不是直接二进制?
5条回答
- threenewbee 2015-06-10 03:20关注
哈希表是一种折衷。当然,直接寻址是好,问题是,你需要一种数据结构,还能不断添加、删除、修改吧。
再说,寻址是文件的角度来说的,和哈希表没有关系。
数据库用哈希表,当然不全用哈希表,同时数据库也是用的二进制文件。这不矛盾。我说的二进制是相对文本文件来说的。确切地说法,不是二进制,而是随机文件。
所谓随机文件,就是你可以随机定位和访问的文件。文本文件不是随机文件,比如说读取文本第100行,你没办法知道第100行的地址,或者说相对文件头,它中间隔了多少字符,你只能从头读取一次,这样效率很低。
所有的数据库,都使用二进制文件(当然,二进制文件也有不能随机访问的),或者进一步说,是随机文件作为基本的文件格式。
在此之上,用什么算法,比如哈希表、索引、簇等等,那是另一回事了。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog