MongoDB は、静的ファイル (ファイル、ビデオ) を cdn として提供するのに適しています。S3 を置き換えてキャッシュ機能を管理することで、大量のデータ (>+To) を格納する確実な方法を探しています。経験。
ありがとう。
CDN を使用して静的ファイルを保存する場合、静的データ要求からサーバーを解放するため、この質問に対する答えはノーだと思います。しかし、ファイルシステムとmongodbのどちらかを選択する場合、サーバーに十分なRAMがある場合、mongoはすべてのデータをメモリにロードするため、mongodbの方が高速になると思います。
また、選択に役立つリンクをいくつか見つけました: www.markus-gattol.name、groups.google.com
ドキュメントから:
GridFS をいつ使用するか
たくさんのファイル。GridFS は、多くのファイル システムよりも、多数 (数千) のファイルを適切に処理する傾向があります。
ユーザーがファイルをアップロードしました。ユーザーがファイルをアップロードするとき、多くのファイルが存在する傾向があり、それらを複製してバックアップする必要があります。GridFS は、データを管理するのと同じ方法で管理できるため、これらを保存するのに最適な場所です。また、ユーザー、アップロード日などでクエリを実行することもできます。間接レイヤーなしで、ファイル ストアで直接クエリを実行できます。
頻繁に変更されるファイル。頻繁に変更される特定のファイルがある場合、それらを GridFS に保存して、1 か所で変更でき、すべてのクライアントが更新を取得できるようにするのが理にかなっています。また、ソース ツリーに保存するよりも優れているため、ファイルを更新するためにアプリをデプロイする必要がありません。
GridFS を使用しない場合
いくつかの小さな静的ファイル。Web サイト用の小さなファイル (js、css、画像) がいくつかある場合は、おそらくファイル システムを使用する方が簡単です。
バイナリ オブジェクトをアトミックに更新する必要があり、オブジェクトが MongoDB のバージョンのドキュメント サイズ制限 (1.8 の場合は 16MB) を下回っている場合は、オブジェクトを 1 つのドキュメント内に手動で格納することを検討してください。これは、BSON binddata タイプを使用して実現できます。このタイプの使用方法の詳細については、ドライバーのドキュメントを確認してください。
一般的に答えは「はい」です。mongodbを使用してこれを行うことができますが、mongodbにはapache/random-webserverのようにファイルを提供するためのhttpインターフェースがありません。これらのファイルのアプリケーション認証などの機能を追加する必要がある場合は、例として、より理にかなっている場合があります。
変更を複製し、ファイル(nginx-gridfsやその他のgridfs httpコンポーネントなど)を提供するhttpフロントエンドを作成するmongodbの周りにインフラストラクチャを作成できます。ただし、これらを構築/統合し、すべてをテストしてデプロイする必要があります。標準のWebサーバーでファイルシステムを使用してファイルを提供することは、非常によくテストされ、文書化されています。多くのシステムはrsyncを使用して、ファイルを多くのノードに効率的に複製します。
CDNが行うことは非常に多く、再実装する必要があるため、自分ですべてに取り組むのは意味がないかもしれませんが、それは本当に別の質問です。