2011-07-16 84 views
0

我想将具有元数据的文档存储在Web应用程序中,以便人员可以在层次结构中查看它们。何时将元数据存储在文件系统而不是数据库中?

我收集到一个典型的方法是为每个文档创建一个数据库条目,将元数据存储在数据库中并将文件存储在文件系统中。

在文件系统上存储文档和元数据似乎更简单快捷。所以一个目录可能看起来像这样

$ ls subdirectory 
.json 
Subsubdirectory 
bar.pdf 
bar.json 
foo.tex 
foo.json 

然后我可以从json文件(或任何我使用的格式)获取元数据。我可以根据子目录/ foo.json的内容呈现子目录/ foo.html。我可以根据子目录/ .json的内容和其他子json文件的内容呈现subdirectory.html。

我想到的主要缺点是根据元数据文件的内容进行搜索可能会比较困难(尽管我可以基于文件系统级元数据进行搜索)。还有什么其他的缺点?如果人们使用这种方法,为什么我听不到呢?

编辑:我真的不太在意搜索;如果我建立某种搜索,它可能会在一个单一的,小的目录。

回答

0

“我可以基于文件系统级元数据进行搜索” - 您可以这样做,但这意味着每次搜索时必须从FS读取所有metdata文件,然后您必须手动处理它。没有索引,这大致相当于SQL数据库中的全表扫描(但它甚至更慢)。

一般来说,在FS上存储数据还有其他一些缺点,为了持久性,您必须进行复制(因此,如果磁盘死亡,您不会丢失文件),并且如果您的站点是popupar,则可扩展。但是由于您已经将文件存储在磁盘上,因此无论如何您都必须解决此问题。

+0

除了搜索功能,如果我已经在使用文件系统的文件系统,您似乎对存储元数据的数据库和文件系统方法漠不关心。我的看法是否准确? –

+0

您还必须管理两组权限 - 一个在数据库中,另一个在文件系统中 - 并保持或多或少同步。 –

+1

我肯定会使用'mongoDB'来存储'json'。如果您必须搜索或向所有节点添加额外信息,请勿将其存储在FS上。如果您存储了大量文件或者流量很大,那么请不要将它存储在FS上。 –

相关问题