我遇到了一个疯狂的想法,我想与您分享并询问其可行性,尤其是性能方面:
想法是通过以下方式管理对象数据库操作:
- 为每个类(class)创建一个以类(class)名称命名的文件夹
- 为每个以子类名称命名的子类创建一个子文件夹
- 为每个以其唯一 ID 命名的对象创建一个文件
- 为每个以索引字段名称命名的索引创建一个子文件夹
- 为引用原始目标文件的每个索引条目创建一个快捷方式文件
- 通过非常快速的序列化器/反序列化器读取/写入二进制对象
- 通过重命名对象和快捷方式文件插入/更新/删除对象和索引条目
- 使用内存映射文件进行缓存/分页
- 查询将对排序的文件名使用二进制搜索
更新:感谢大家的回复。我在想这甚至可以通过使用一些压缩/加密库(如 7z)而不是处理操作系统文件系统来改进。否则,到目前为止您所说的所有问题都是有效的。我想知道什么样的底层文件系统,例如Oracle使用
最佳答案
缺点:
- 在大多数文件系统上,即使是一个 1 字节的文件也需要一个完整的 4kb block 。根据您想在数据库中存储的对象类型,这可能是一个大问题。
- 大多数文件系统的设计都无法适应包含数百万个文件的目录。
- 复杂的查询需要打开/读取/反序列化/关闭数百万个文件,因此会非常慢。
关于database - 用于数据库操作的 Windows 文件系统有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793353/