新しいWebサイトを開発し、通常のファイルシステムストレージと比較して多くの利点があるため、すべてのユーザーアップロードのストレージとしてGridFSを使用したいと思います。
nginxが提供するGridFSのベンチマークは、nginxが提供する通常のファイルシステムほど高速ではないことを示しています。
すでに実稼働環境でGridFSを使用している人、または新しいプロジェクトに使用する人はいますか?
新しいWebサイトを開発し、通常のファイルシステムストレージと比較して多くの利点があるため、すべてのユーザーアップロードのストレージとしてGridFSを使用したいと思います。
nginxが提供するGridFSのベンチマークは、nginxが提供する通常のファイルシステムほど高速ではないことを示しています。
すでに実稼働環境でGridFSを使用している人、または新しいプロジェクトに使用する人はいますか?
回答:
私は、価格比較Webサイトの一部であるサーバーの1つでgridfsを使用しており、トラフィックの統計情報は良好です(1日あたり約25,000人の訪問者)。サーバーにはRAM、2ギガがあまりなく、CPUもそれほど高速ではありませんが(Core 2 duo 1.8Ghz)、サーバーには十分なストレージスペースがあります:RAID 0構成で10Tb(sata)。サーバーが実行しているジョブは非常に単純です。
価格比較の各製品には画像があり(製品データベースによると約1,000万の製品があります)、サーバーの仕事は画像をダウンロードしてサイズを変更し、gridfsに保存して、訪問者のブラウザーに配信することです。 ..グリッドに存在しない場合...または...すでにグリッドに保存されている場合は、訪問者のブラウザに配信します。したがって、これは「従来のcdnスキーマ」と呼ぶことができます。
このサーバーが稼働して以来、400万枚の画像を保存して処理しました。サイズ変更と保存は単純なphpスクリプトで行われます...しかし確かに、pythonスクリプトやjavaのようなものの方が速いかもしれません。
現在のデータサイズ:11.23g
現在のストレージサイズ:12.5g
インデックス:5
インデックスサイズ:849.65m
信頼性について:これは非常に信頼性があります。サーバーが読み込まれず、インデックスサイズに問題がなく、クエリが高速です
速度について:確かに、ローカルファイルストレージほど高速ではなく、おそらく10%遅くなりますが、画像を処理する必要がある場合でもリアルタイムで使用できるほど高速です。この場合、これはphpに大きく依存します。メンテナンスと開発の時間も短縮されました。単一または複数のイメージを削除することが非常に簡単になりました。単純な削除コマンドでデータベースにクエリを実行するだけです。もう1つの興味深い点は、ローカルファイルストレージ(数千のフォルダーに数百万のファイル)がある古いサーバーを再起動すると、システムがファイルの整合性チェックを実行していたために数時間ハングすることがあります(これには実際に数時間かかりました...)。gridfsではこの問題はもう発生していません。画像は大きなmongodbチャンク(2GBファイル)に保存されるようになりました。
だから...私の考えでは...はい、gridfsは本番環境で使用するのに十分な速度と信頼性を備えています。
前述のように、それは普通のファイルシステムほど高速ではないかもしれませんが、それは上であなたに男の利点を与える通常のファイルシステム、私はのためのビット速度をあきらめる価値があると思います。
最終的には、シャーディングを使用すると、通常のファイルシステムや単一ノードとは対照的に、GridFSストレージが実際に高速なオプションになるポイントに到達する可能性があります。
何をしているのかわからない限り、gridfsの使用はお勧めしません。GridFSは、ファイルをチャンクに分割し、ファイルを2つのコレクションに格納する単なる抽象化レイヤーです。より多くのファイル-より多くのオーバーヘッド。ファイルのサイズがほぼ同じで、32M程度を超えないことが予想される場合は、正しい方法です。大きなファイルをgridfsに保存しようとしないでください。どうして?
ロードされたプロジェクトの読み取りについて考える場合は、ファイルをドキュメントに直接ロードするか(16M以下のサイズの場合)、別のclusterfsを選択して、filename / inodeをロジックにリンクすることを検討してください。
お役に立てれば。