j******n 发帖数: 108 | 1 自己要写一个 inverted list index
先只考虑一个很简单的二级结构
Hash 表(keyword:offset)保存在内存里
offset是指向 index 文件内, 该 keyword 的位置
(如果 index 分为多个文件,还需要一个值指向文件的磁盘位置)
暂时只考虑 index 的读操作的性能,因为读磁盘操作较多
当然希望尽量减少磁盘开销。
关于 linux 的文件系统,有个问题
Linux FS 会尽量把一个文件放在连续的 block 上面
有的 linux 文件大小有上限(2G?),除此之外,
index 单个文件就是越大越好么?
从概念上,文件的 metadata 在 inode 里,打开一个大文件或是
一个小文件,似乎差别不大。而通过 feek 定位到具体位置,和
当前磁头位置有关:a) 磁头需要先移动文件头,b) 再移动 offset
的位置读取 list。(还是磁头直接移动到 offset 对应的位置?这点
不是很清楚 linux FS系统如何操作) 如果文件大了,b)步似乎就要要慢一些。
不知道有没有人有类似经验或实验,index 单个文件设置成多 | m******t 发帖数: 2416 | 2
What "linux file system"? There are lots of them.
Different ones have different characteristics.
【在 j******n 的大作中提到】 : 自己要写一个 inverted list index : 先只考虑一个很简单的二级结构 : Hash 表(keyword:offset)保存在内存里 : offset是指向 index 文件内, 该 keyword 的位置 : (如果 index 分为多个文件,还需要一个值指向文件的磁盘位置) : 暂时只考虑 index 的读操作的性能,因为读磁盘操作较多 : 当然希望尽量减少磁盘开销。 : 关于 linux 的文件系统,有个问题 : Linux FS 会尽量把一个文件放在连续的 block 上面 : 有的 linux 文件大小有上限(2G?),除此之外,
|
|