我有数百万个文件,大小不超过1MB。我需要将它们存储在文件系统上,并能够从我的Java应用程序中读取它们。我有点担心额外元数据,iNode和性能的成本。
我不想为此运行外部服务,并希望嵌入到JVM中的内容。
在重新发明轮子之前,这个问题已经解决了吗?
我想象某个地方会有一个FileSystem
实现,它会在一个文件中存储多个文件 - 但我所有的谷歌搜索结果都是Googles内存实现。因为我的其他服务都是异步的,所以增加任何奖励......
答案 0 :(得分:1)
我不得不多次存储数百万个文件,而且我总是在文件夹层次结构下存储文件。
名为abcdefghijk0123.extension
的文件将存储在文件夹结构ab/cd/ef/gh/ij/abcdefghijk0123.extension
中。这样做可以存储大量文件,但不能将它们全部存储在同一文件夹中。设置文件夹结构可帮助您处理文件夹的最大文件数。
答案 1 :(得分:0)
您可以使用像H2这样的嵌入式关系数据库,并将文件内容存储为Blob。
我不确定是否存在面向文档的NoSQL数据库,它可以嵌入到Java应用程序中。如果是这样,这可能是一个很好的解决方案。您可以查看this article以查找适合您要求的数据库系统。
另一种解决方案是将文件存储在文件系统中并使用缓存框架,该文件将文件保存在内存中以提高性能。