ファイルのアップロードを中心に展開する単純な Web API を作成しています。ユーザーは、HTTP ベースの API を介してファイルをサービスにアップロードできます。サービスは、ユーザーがアクセスするファイルを生成し、アップロードされたファイルと共にそれらを保存する必要もあります。そのため、多くのファイルが再生されます。
基本的に、これらを CouchDB に保存するか、Amazon の S3 などに保存するかを決定しようとしています。
CouchDB を使用すると、おそらく、ユーザーが最初にアップロードしたファイル用に 1 つのドキュメントを作成し、添付ファイル データを _attachments コレクションにインライン化します。システムによって作成された追加のファイルがそのドキュメントに追加されます。(このサービスはドキュメント変換を行うため、Excel XLS をアップロードすると、システムが PDF、TXT などを生成します。) アップロードされたドキュメント レコードを 1 回削除すると、生成された PDF、TXT、またはその他の添付ファイル。
S3 では、個々のファイル ストレージ専用のホスト型ソリューションを使用していることを知っているので、安心感があります。また、その帯域幅はそれらのファイル専用であり、API Web サーバーからのものではありません。欠点は、API コードに多くの追加ロジックが追加されることです。そのため、多くのリモート ファイルを、ローカルの CouchDB データベースが認識しているものと同期させる必要があります。また、エンドユーザーが S3 から直接ファイルにアクセスできるようにする場合は、リクエストの署名などに対処する必要があります。ドキュメントはすべて個別に保存されるため、ユーザーがアップロードした添付ファイルを CouchDB から削除するには、他のファイルについても S3 に対していくつかの削除クエリを実行する必要があります。
私は S3 に精通しており、現在のプロジェクトで使用していますが、CouchDB は添付ファイルを許可する方法が非常に優れているように見えます。使ってみたいのですが、デメリットやデメリットはありますか?多くのアップロードされたファイルが保存されている上記のシナリオでは、CouchDB の添付ファイルは S3 よりも理にかなっていますか?