在一个目录中查找一个文件名与20000个项目一样高效在数据库中查找一行?

我试图决定在Linux文件系统中唯一标识的文件path下还是在数据库表中的文本列中存储一些XML数据。 所有其他的事情是相同的,访问时间给定一个项目标识符(要么合并到文件path或数据库唯一列)大致相等?

我预计可能有20,000件物品。

20,000对于数据库来说没有任何意义,但是对于文件系统来说,如果它们全都在一个文件夹中,那么这个数据库就很重要

如果将它们拆分成单独的文件夹(可能使用GUID的前两个或四个字母),这将有所帮助。

这也取决于你的工作量。 如果您在表上进行了大量的阻塞/locking查询,请使用文件系统。

如果你想存储元数据的文件,并从第三方访问它们,使用数据库。

如果你想滚动自己的身份validation接口的文件,使用数据库。

如果您希望能够轻松修改记事本中的文件,请使用文件系统。

如果它们很大,请使用文件系统。 如果可以避免的话,你不需要20GB的文件。

文件系统数据库。 他们只是为了完成一个特定的任务而优化 – 把相当大的对象保存在一个层次结构中。

当您决定是否需要数据库或文件系统时,需要考虑很多因素:

  • 性能 – 对于那些是基准。
  • 可pipe理性 – 这取决于谁来做维护。
  • 可扩展性 – 这取决于数据库当前的规模,几年的预期规模,增长速度以及在您的环境中添加新服务器的容易程度。
  • 规范化 – 你将如何存储对象 – 像BLOB,或者像一个parsing结构?
  • 对象多久更换一次? 被search和以何种方式。

如果您打算将它们用作BLOB,则文件系统会更快。 他们越好越好作为文件。

如果您需要结构化数据,数据库中的parsingXML更快。

看到: