2

我正在使用 php 和 mysql。如果我想做一个分享照片的网站,上传和显示照片的最佳数据库设计是什么。这就是我的想法:

domain:
  |_> photos
  |_> user

登录用户将上传照片到 [ http://www.domain.com/user/upload.php]

照片存储在文件系统中,照片的路径存储在数据库中。所以,在我的照片文件夹中会像:照片/用户A/子文件夹+照片、照片/用户B/子文件夹+照片、照片/用户C/子文件夹+照片等

公众/其他人可以在以下位置查看他的照片:[ http://www.domain.com/photos/user/?photoid=123]

其中 123 是 photoid,从那里,我将从数据库中查询以获取路径并显示图像。

我的问题:

  1. 照片共享网站(如 flickr)的最佳数据库设计是什么?

  2. 如果我继续在“照片”文件夹中创建新文件夹,会有任何问题吗?如果数十万用户注册怎么办?什么是最佳实践

  3. 我应该保留多大尺寸的照片?目前我只存储缩略图(100x100)和(最大)1600x1200 像素的照片。

  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 - 关于图像上传安全的某处有一个很好的答案,但我找不到它。生病继续找。

考虑使用 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 回答