2

私はphpとmysqlを使用しています。写真を共有する Web サイトを作成したい場合、写真をアップロードして表示するための最適なデータベース設計を教えてください。これは私が念頭に置いていることです:

domain:
  |_> photos
  |_> user

ログインしたユーザーは [ http://www.domain.com/user/upload.php]に写真をアップロードします

写真はファイルシステムに保存され、写真へのパスはデータベースに保存されます。したがって、私の写真フォルダは次のようになります: photos/userA/subfolders+photos, photos/userB/subfolders+photos, photos/userC/subfolders+photos など

パブリック/他の人は彼の写真を次の場所で見ることができます: [ http://www.domain.com/photos/user/?photoid=123]

ここで、123 はフォト ID です。そこから、データベースからクエリを実行してパスを取得し、画像を表示します。

私の質問:

  1. 写真共有 Web サイト (flickr など) に最適なデータベース設計は何ですか?

  2. 「写真」フォルダーに新しいフォルダーを作成し続けても問題はありませんか。何十万ものユーザーが登録したらどうなるでしょうか? ベストプラクティスは何ですか

  3. どのサイズの写真を保存すればよいですか? 現在、サムネイル (100x100) と (最大) 1600x1200 px の写真のみを保存しています。

  4. 写真共有サイトを開発する際に、他に注意すべき点はありますか?

4

1 に答える 1

8

1 - 少なくともデータベースは以下で構成されている必要があります

users: user_id, user_name, pw_hash, salt
photos: photo_id, user_id, photo_path

必要な追加機能 (タグ、last_seen、photo_upload_date、photo_views など) のためにフィールドが追加されます。

2 - 時期尚早に最適化しないでください。各ユーザーにユーザー/ユーザー名フォルダーを追加し、そこにユーザーの写真をダンプします。

3 - 元のサイズ、サムネイル、およびサイトに適したサイズを維持することをお勧めします。したがって、レイアウトに最大幅 850 ピクセルの写真が含まれている場合は、すべての写真のサイズを最大幅 850 ピクセルに変更します。レイアウトが変更された場合は、元の画像を使用して新しいサイズにサイズ変更できます。

4 - 画像アップロードのセキュリティについて SO のどこかに優れた回答がありますが、見つかりません。探し続けます。

CDN の使用を検討してください: https://stackoverflow.com/questions/72369/whats-the-best-cdn-for-image-hosting-on-a-high-volume-web-site

スケーラビリティについての良い話です。サムネイルのセクションをご覧ください: http://www.youtube.com/watch?v=ZW5_eEKEC28 . このビデオでは、興味のある ext3 ファイルシステムのディレクトリごとのファイル制限について説明しています。

于 2010-05-19T03:22:29.510 に答える