質問

新しい Web サイトを開発しており、すべてのユーザーのアップロード用のストレージとして GridFS を使用したいと考えています。これは、GridFS には通常のファイルシステム ストレージと比較して多くの利点があるためです。

nginx が提供する GridFS のベンチマークは、nginx が提供する通常のファイルシステムほど高速ではないことを示しています。

nginxによるベンチマーク

すでに運用環境で GridFS を使用している人、または新しいプロジェクトに使用する人はいますか?

役に立ちましたか?

解決

私は立派なトラフィックの統計(一日あたり25Kの訪問者をarroundの)との価格比較ウェブサイトの一部であり、私たちのサーバーのいずれかに仕事でgridfsを使用しています。 RAID 0構成で10TB(SATA):サーバーはあまりないラム、2gigs、さらにはCPUが本当に速い(Core 2 Duoプロセッサの1.8GHzの)ではありませんが、サーバーがたくさん収納スペースがありますがあります。サーバがやっている仕事は非常に簡単です。

は、当社の価格比較演算上の各製品は、(当社の製品DBに応じて周り千万製品がある)イメージを持っている、とサーバージョブは、画像をダウンロードしてサイズを変更、gridfsにそれを格納し、それを提供することです訪問者のブラウザ...それがグリッドに存在しないのです...か...それはすでにグリッドに保存されている場合、訪問者のブラウザに配信場合。だから、これは「伝統的なCDNのスキーマ」と呼ばれることができます。

は我々は保存され、それが稼働中なので、このサーバー上400万画像を処理しています。リサイズや店舗のものは、単純なPHPスクリプトによって行われている...しかし、確かに、Pythonスクリプト、またはJavaのようなものが速くなる可能性があります。

現在のデータサイズ:11.23グラム

現在のストレージサイズ:12.5グラム

インデックス:5

インデックスのサイズ:849.65メートル

信頼性について

:これは非常に信頼性が高いです。サーバーは、クエリが高速である、インデックスのサイズはokです、ロードされません。

スピードについて

:確かに、それは多分10%遅く、ローカルファイルストレージとして、高速ではありませんが、我々の場合であり、画像のニーズが処理されるべきであっても、リアルタイムで使用することが十分に速く、非常に依存PHP 。メンテナンスと開発時間も短縮されています:それは、単一または複数の画像を削除するには、簡単なようになりました。単純な削除コマンドでDBを照会します。もう一つの興味深い事:私たちは、それが時々時間のハングアップシステムは、ファイルの整合性チェックを実行していた原因(フォルダの何千ものファイルの万人に)ローカルファイルストレージと私たちの古いサーバーを再起動したときに(これは本当に...時間かかりました)。私たちは、より多くのgridfsで、私たちのイメージは今すぐMongoDBのチャンクに格納されている任意のこのような問題を持っていない(2ギガバイトのファイル)

だから... ...私の心に...はい、gridfsは、生産に使用されるのに十分に高速で信頼性の高いです。

他のヒント

前述したように、通常のファイルシステムほど高速ではないかもしれませんが、それよりも優れた利点があります。 通常のファイルシステム そのためには速度を少し犠牲にする価値があると思います。

ただし、シャーディングを使用すると、最終的には、通常のファイル システムと単一ノードではなく、GridFS ストレージが実際に高速なオプションになる点に到達する可能性があります。

mdirolfのnginxの-gridfsモジュールは素晴らしいし、セットアップを得ることは非常に簡単です。私たちは、絵画のすべてを提供するために paint.ly まで生産でそれを使用していて、これまでのところ何も問題がなかったです。

しかし、より大きなDBのための修理に

ヘッドアップ - 。我々が開発している新しいシステムは、モンゴがきれいに出て、それが130時間を取るよう7TB GridFSのルックスを修復しませんでした。

このため、私はOpenStackのスウィフトやセファロへの切り替えを見てみましょうと思います。 それでも、それまでは良かったです。そして、nginxの-gridfsモジュールが甘いです。

自分が何をしているのかよくわかっていない限り、gridfs を使用することはお勧めしません。GridFS は、ファイルをチャンクに分割し、ファイルを 2 つのコレクションに保存する単なる抽象化レイヤーです。ファイルが増えるとオーバーヘッドも増加します。ファイルのサイズがほぼ同じで、32M 程度を超えないことが予想される場合、それは正しい方法です。大きなファイルを Gridfs に保存しないでください。なぜ?

  1. 異なる言語のドライバーはファイル全体を読み取る可能性があります。(例:チャンク)ファイルの小さな部分を読み取るとき。
  2. ファイルを変更すると、すべてのチャンクに影響を与え、ファイルシステムが成長している場合、データベースの負荷を増やす可能性があります。Gridfsを破棄することを決定する必要があります。気をつけて!シャーディングの初期化中は一貫性が保証されません。

ロードされたプロジェクトの読み取りについて考えている場合は、ファイルをドキュメントに直接ロードするか (サイズが 16M 以下の場合)、別のクラスターを選択して、ファイル名/inode をロジックにリンクすることを検討してください。

お役に立てれば。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top