在包含 20,000 个项目的目录中查找文件名是否与在数据库中查找一行一样有效?

在包含 20,000 个项目的目录中查找文件名是否与在数据库中查找一行一样有效?

我正在尝试决定是将一些 XML 数据存储在 Linux 文件系统上唯一标识的文件路径下,还是存储在数据库表中的文本列中。在其他所有条件相同的情况下,给定项目标识符(合并到文件路径或数据库唯一列中)的访问时间是否大致相等?

我预计大概有 20,000 件。

答案1

对于数据库来说,20,000 不算什么,但如果它们都放在一个文件夹中,那么对于文件系统来说,这可是一大笔钱。

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

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

如果您想将元数据存储在文件中并从第三方访问它们,请使用 db。

如果您想要使用自己的身份验证来与文件交互,请使用数据库。

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

如果文件很大,请使用文件系统。如果可以避免,您不会希望表中有 20GB 的文件。

答案2

文件系统数据库。它们只是针对特定任务进行了优化 - 以层次结构保存相当大的对象。

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

  • 性能——这些是基准。
  • 可管理性——这取决于谁来做维护。
  • 可扩展性-这取决于数据库的当前大小、几年后的预期大小、增长率以及在您的环境中添加新服务器的难易程度。
  • 规范化——如何存储对象——像 BLOB,还是像解析结构?
  • 对象多久会改变一次?以何种方式进行搜索。

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

如果您需要结构化数据,则数据库中解析的 XML 会更快。

看:

相关内容