2011-07-16 6 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からすべてのメタデータファイルを読み込んで手動で処理する必要があることを意味します。索引付けはありません。これは、SQLデータベースのフル・テーブル・スキャンとほぼ同じです(しかし、それはさらに遅くなります)。

一般にFSにデータを格納するには、いくつかの欠点があります。耐久性(ディスクがなくなってもファイルを失わないように)とサイトがポップアップの場合は、スケーラビリティの両方で複製する必要があります。しかし、すでにファイルをディスクに保存しているので、とにかくこの問題を解決する必要があります。

+0

検索機能とは別に、すでにドキュメントにファイルシステムを使用している場合、メタデータを格納するためのデータベースとファイルシステムのアプローチに無関心であるようです。私の認識は正確ですか? –

+0

また、データベースとファイルシステムの2つのアクセス権セットを管理し、それらのアクセスを多かれ少なかれ同期させなければなりません。 –

+1

私は間違いなく 'mongoDB'を使って' json'を保存します。余分な情報をすべてのノードに検索または追加する必要がある場合は、FSに保管しないでください。膨大な数のファイルを保管している場合や大きなトラフィックがある場合は、再度FSに保管しないでください。 –

関連する問題