c - 在文件系统中存储大量文件

标签 c algorithm data-structures filesystems

我有数百万个音频文件,这些文件是根据 GUId ( http://en.wikipedia.org/wiki/Globally_Unique_Identifier ) 生成的。我如何将这些文件存储在文件系统中,以便我可以在同一文件系统中有效地添加更多文件,并且可以有效地搜索特定文件。此外,它在未来应该是可扩展的。

文件根据 GUId(唯一文件名)命名。

例如:

[1] 63f4c070-0ab2-102d-adcb-0015f22e2e5c

[2] ba7cd610-f268-102c-b5ac-0013d4a7a2d6

[3] d03cf036-0ab2-102d-adcb-0015f22e2e5c

[4] d3655a36-0ab3-102d-adcb-0015f22e2e5c

发表你的看法。

PS:我已经通过了< Storing a large number of images >。我需要特定的数据结构/算法/逻辑,以便将来也可以扩展

EDIT1:文件数量约为 1-2 百万,文件系统为 ext3 (CentOS)。

谢谢,

纳文

最佳答案

这非常简单 - 基于 GUID 值部分构建文件夹树。

例如,创建 256 个文件夹,每个文件夹都以第一个字节命名,并且只存储具有以该字节开头的 GUID 的文件。如果一个文件夹中的文件仍然太多 - 在每个文件夹中为 GUID 的第二个字节执行相同的操作。如果需要,添加更多级别。搜索文件会非常快。

通过选择每个级别使用的字节数,您可以有效地为您的方案选择树结构。

关于c - 在文件系统中存储大量文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576272/

相关文章:

c 指针数组

c - 如何将所有命令行参数连接在一起并打印出结果值?

algorithm - 由矢量构建的多边形 - 找到最大的区域,需要有序的顶点列表

algorithm - 比较二维图像上两组点的位置

c - 使用线性探测的哈希表中没有空条目?

c - 随机播种段故障

C 预处理器指令常见问题解答

algorithm - 计算可能组合的数量以达到与骰子的总和

algorithm - 最小生成树怕负权重吗?

algorithm - 使用内置的 sort() 函数而不是复杂度始终为 nlogn 的合并排序是最佳实践吗