如何存储大量小文件

时间:2016-02-29 12:12:00

标签: java filesystems

我有数百万个文件,大小不超过1MB。我需要将它们存储在文件系统上,并能够从我的Java应用程序中读取它们。我有点担心额外元数据,iNode和性能的成本。

我不想为此运行外部服务,并希望嵌入到JVM中的内容。

在重新发明轮子之前,这个问题已经解决了吗?

我想象某个地方会有一个FileSystem实现,它会在一个文件中存储多个文件 - 但我所有的谷歌搜索结果都是Googles内存实现。因为我的其他服务都是异步的,所以增加任何奖励......

2 个答案:

答案 0 :(得分:1)

我不得不多次存储数百万个文件,而且我总是在文件夹层次结构下存储文件。

名为abcdefghijk0123.extension的文件将存储在文件夹结构ab/cd/ef/gh/ij/abcdefghijk0123.extension中。这样做可以存储大量文件,但不能将它们全部存储在同一文件夹中。设置文件夹结构可帮助您处理文件夹的最大文件数。

答案 1 :(得分:0)

您可以使用像H2这样的嵌入式关系数据库,并将文件内容存储为Blob。

我不确定是否存在面向文档的NoSQL数据库,它可以嵌入到Java应用程序中。如果是这样,这可能是一个很好的解决方案。您可以查看this article以查找适合您要求的数据库系统。

另一种解决方案是将文件存储在文件系统中并使用缓存框架,该文件将文件保存在内存中以提高性能。