私は現在、ある種の画像ストレージも提供する必要がある Web ベースのアプリケーションのアーキテクチャを設計しています。ユーザーは、サービスの重要な機能の 1 つとして写真をアップロードできます。また、これらの画像を表示することも (Web 経由で) 主な用途の 1 つになります。
ただし、このようなスケーラブルなイメージ ストレージ コンポーネントをアプリケーションで実現する方法がわかりません。私はすでに別の解決策を考えましたが、経験が不足しているため、あなたの提案を聞くのを楽しみにしています. 画像とは別に、メタデータも保存する必要があります。ここに私の最初の考えがあります:
HDFS のような (分散) ファイルシステムを使用し、アップロードされた画像とサービス要求を保存するために、専用の Web サーバーを「ファイルシステム クライアント」として準備します。画像のメタデータは、各画像のファイルパス情報を含む追加のデータベースに保存されます。
HDFS の上に HBase のような BigTable 指向のシステムを使用し、画像とメタ データを一緒に保存します。繰り返しますが、ウェブサーバーは画像のアップロードとリクエストを橋渡しします。
画像とメタデータの両方を格納するために、CouchDB のような完全にスキーマレスなデータベースを使用します。さらに、HTTP ベースの RESTful API を使用して、データベース自体をアップロードおよび配信に使用します。(追加の質問: CouchDB は Base64 経由で blob を保存しますが、画像/jpeg などの形式でデータを返すことはできますか?)