database - 用于数据库操作的 Windows 文件系统有多快?

标签 database performance serialization filesystems

我遇到了一个疯狂的想法,我想与您分享并询问其可行性,尤其是性能方面:

想法是通过以下方式管理对象数据库操作:

  • 为每个类(class)创建一个以类(class)名称命名的文件夹
  • 为每个以子类名称命名的子类创建一个子文件夹
  • 为每个以其唯一 ID 命名的对象创建一个文件
  • 为每个以索引字段名称命名的索引创建一个子文件夹
  • 为引用原始目标文件的每个索引条目创建一个快捷方式文件
  • 通过非常快速的序列化器/反序列化器读取/写入二进制对象
  • 通过重命名对象和快捷方式文件插入/更新/删除对象和索引条目
  • 使用内存映射文件进行缓存/分页
  • 查询将对排序的文件名使用二进制搜索

更新:感谢大家的回复。我在想这甚至可以通过使用一些压缩/加密库(如 7z)而不是处理操作系统文件系统来改进。否则,到目前为止您所说的所有问题都是有效的。我想知道什么样的底层文件系统,例如Oracle使用

最佳答案

缺点:

  • 在大多数文件系统上,即使是一个 1 字节的文件也需要一个完整的 4kb block 。根据您想在数据库中存储的对象类型,这可能是一个大问题。
  • 大多数文件系统的设计都无法适应包含数百万个文件的目录。
  • 复杂的查询需要打开/读取/反序列化/关闭数百万个文件,因此会非常慢。

关于database - 用于数据库操作的 Windows 文件系统有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4793353/

相关文章:

c# - array 和 List<> 哪个更好?

原始内存流上的 C# 数学性能

java - 我需要同步 writeObject() 吗?

java - 在实例状态下保存自定义对象数组

sql-server - Entity Framework Oracle 和 Sql Server - 如何构建一个独立于数据库的应用程序

ruby-on-rails - 哪种数据模型最适合用户 View 的简单跟踪器?

SQL查询以根据最新日期从单个列中删除重复项

java - 我可以使有关 EulerProblem 的代码更快吗?

c# - 要说自定义异常是可序列化的,最低要求是什么?

java - 实现用户登录,JDBC 交易问题