我找不到一个好的问题标题,这就是我想做的:
- 这是一个.NET应用程序。
- 我需要存储多达200000个对象(大小在3KB-500KB之间)
- 我需要从多个线程每秒存储大约10个对象
- 我在存储之前使用二进制序列化
- 我需要通过整数唯一ID稍后访问它们
最好的方法是什么?
- 我不能将它们保存在内存中,因为我会得到outofmemory异常
- 当我将它们作为单独的文件存储在磁盘上时,可能会出现哪些性能问题?这会显著降低总体性能吗?
- 是否应该实现某种缓存,例如将100个对象组合起来,一次写入一个文件。然后稍后解析它们。或类似的东西?
- 是否应该使用数据库?(访问时间不重要,不会进行搜索,我只会通过已知唯一ID进行几次访问)。理论上我不需要数据库,我不想把它复杂化。
更新:
- 我认为数据库比文件系统慢,如果你有这方面的问题,请证明我错了。所以这就是我也倾向于文件系统的原因。但我真正担心的是将200KB * 10每秒写入HDD(它可以是任何HDD,我无法控制硬件,它是一个将部署在不同系统中的桌面工具)。
- 如果我使用文件系统,我将将文件存储在单独的文件夹中,以避免与文件系统相关的问题(因此您可以忽略该限制)