質問

私が開発しているJava Webアプリにより、ユーザーはファイル(写真とドキュメント)をプロファイルにアップロードし、それらのファイルのアクセスルールを定義できます(他のユーザーがファイルを表示 /ダウンロードできるものを定義します)。アクセス制御 /許可システムはカスタムメイドであり、ルールはユーザーのプロファイルと実際のファイルエントリとともにMongoDBに保存されます。

アプリケーションとストレージを配布する必要があることを知っており、ファイルストレージに最適な戦略であるかを把握するために必要な場合があります。

説明とアクセスルールを含むファイルドキュメントにあるファイルコレクションにMongodb内にファイルを保存する必要がありますか?

または、ファイルをサーバーのファイルシステム内に保存し、MongoDBドキュメントにパスを保持する必要がありますか?ファイルシステムアプローチを使用すると、ユーザー定義のアクセス権限を強制することができますか?最後に、ファイルシステムアプローチでファイルを配布するにはどうすればよいですか?これに専用サーバーを使用する必要がありますか、それともファイルをWebAppサーバーまたはMongoDBサーバーに保存できますか?

すべての洞察をありがとう!あらゆるヘルプやフィードバックが高く評価されています。

アレックス

役に立ちましたか?

解決

いくつかの選択肢があります:

  • ファイルをストレージサービスに入れます(例:S3):簡単で多くのスペースがありますが、悪いパフォーマンス
  • ローカルファイルシステムにファイルを入力:高速ですが、スケーリングしません
  • ファイルをmongodbドキュメントに入れる:簡単で強力でスケーラブルですが、16MBに制限されています
  • Mongodbのgridfsレイヤーを使用します。機能は限られていますが、スケーラビリティのために作られており(シャードのおかげで)、かなり高速です。注ファイル(許可など)に関する情報をファイルのメタデータオブジェクトに入れることができます。

あなたの場合、最後のオプションが最適であるように聞こえます。FSからGRIDFに切り替えたユーザーはかなり多く、それらのために非常にうまく機能しました。留意すべきこと:

  • gridfsシャードは機能しますが、完全ではありません。通常、メタデータではなく、データのみがシャードされます。大したことではありませんが、メタデータのあるシャードは非常に安全でなければなりません。
  • 要件(ストレージ、バックアップなど)は通常異なるため、コアデータから別のMongoDBクラスターでGRIDFを使用することが有益です。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top