Java-一个有10亿条记录的文本文件,已经按照关键字排序存储,设计算法快速的从文件中查找指定的关键字记录

发布于 2016-10-31 11:28:42 字数 53 浏览 1529 评论 1

个人感觉用二分法最完美的,需要操作系统支持随机读取指定一行的数据,貌似现在还不行,江湖救急呀

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想挽留 2017-02-21 19:01:08

想一下数据库索引怎么做的? 参考b树的实现.

对这题来说, 10亿在 G量级, 分成100份, 为10M量级, 基本上放入内存无压力了.

在这10亿记录中, 均分为100份, 把每份的 第一条记录关键字和 此记录对应的文件偏移量先 扫入内存(类似索引?), 这里需要 磁盘随机io 100次.

这样可以马上定位出 指定关键字所在的记录块, 把相应的记录块拿到内存, 二分查找即可.

更新

数据库定位, 上面的这一点点还差很多啊...

数据库一般:
1). 全表扫描, 没啥好说的;
2). b树索引, 拿oracle来说, 索引的叶节点 存的有 (记录的索引键值, 记录的rowid)
rowid为10个bytes, 存有 segment,file, block, row in the block. 这样可以通过rowid直接找到此记录的物理地址.
详见:
http://www.dbms-notes.com/2010/12/oracle-data-storage-rowids.html

更多索引知识, 参见:
http://www.orafaq.com/node/1403

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文