sql >> データベース >  >> NoSQL >> MongoDB

GridFSは本番環境で十分に高速で信頼性がありますか?

    私は、価格比較Webサイトの一部であるサーバーの1つでgridfsを使用しており、トラフィックの統計情報は良好です(1日あたり約25,000人の訪問者)。サーバーにはRAM、2ギガヘルツはあまりなく、CPUもそれほど高速ではありませんが(Core 2 duo 1.8Ghz)、サーバーには十分なストレージスペースがあります。RAID0構成では10Tb(sata)です。サーバーが実行している作業は非常に単純です:

    価格比較の各製品には画像があり(製品データベースによると約1,000万の製品があります)、サーバーの仕事は画像をダウンロードしてサイズを変更し、gridfsに保存して、訪問者のブラウザーに配信することです。 ..グリッドに存在しない場合...または...すでにグリッドに保存されている場合は、訪問者のブラウザに配信します。したがって、これは「従来のcdnスキーマ」と呼ぶことができます。

    このサーバーは稼働してから、400万枚の画像を保存して処理しました。サイズ変更と保存は単純なphpスクリプトで行われます...しかし確かに、pythonスクリプトやjavaのようなものの方が速いかもしれません。

    現在のデータサイズ:11.23g

    現在のストレージサイズ:12.5g

    インデックス:5

    インデックスサイズ:849.65m

    信頼性について:これは非常に信頼性があります。サーバーが読み込まれず、インデックスサイズに問題がなく、クエリが高速です

    速度について:確かに、ローカルファイルストレージほど高速ではなく、おそらく10%遅くなりますが、画像を処理する必要がある場合でもリアルタイムで使用できるほど高速です。この場合、phpに大きく依存します。メンテナンスと開発の時間も短縮されました。単一または複数のイメージを削除することが非常に簡単になりました。単純な削除コマンドでデータベースにクエリを実行するだけです。もう1つの興味深い点は、ローカルファイルストレージ(数千のフォルダーに数百万のファイル)を使用して古いサーバーを再起動すると、システムがファイルの整合性チェックを実行していたために数時間ハングすることがあります(これには実際に数時間かかりました...)。 gridfsではこの問題はもう発生していません。画像は大きなmongodbチャンク(2GBファイル)に保存されるようになりました

    だから...私の考えでは...はい、gridfsは本番環境で使用するのに十分な速度と信頼性を備えています。



    1. MongoidまたはMongoMapper?

    2. ApacheHBaseのMOBの新しいサポートの内部

    3. 例によるフラスコ–Redisタスクキューの実装

    4. 存在しない場合は挿入する方法、そうでない場合はmongoengineで更新する方法は?