数据库设计共享照片网站?

jav*_*ava 2 php mysql database-design sharing photos

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

domain:
  |_> photos
  |_> user
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

我的问题:

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

  2. 如果我继续在"photos"文件夹中创建新文件夹,是否会有任何问题.如果成千上万的用户注册了怎么办?什么是最佳实践

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

  4. 在开发照片共享网站时,我应该注意哪些其他事项?

Gal*_*len 7

1 - 您的数据库至少应包含

users: user_id, user_name, pw_hash, salt
photos: photo_id, user_id, photo_path
Run Code Online (Sandbox Code Playgroud)

将添加字段以获得您想要的额外功能(标签,last_seen,photo_upload_date,photo_views等...)

2 - 不要过早优化.我会为每个用户添加users/username文件夹并将用户照片转储到那里.

3 - 我建议保留原始大小,缩略图和适合您网站的大小.因此,如果您的布局包含最大宽度为850像素的照片,请将所有照片调整为最大850像素宽.如果您更改了布局,则可以使用原始图片并将其调整为新大小.

4 - 关于图像上传安全性的SO有一个很好的答案,但我找不到它.生病了.

考虑使用CDN:https://stackoverflow.com/questions/72369/whats-the-best-cdn-for-image-hosting-on-a-high-volume-web-site

关于scalabilty的好话,关于缩略图的部分对你来说很有用:http://www.youtube.com/watch?v = ZW5_eEKEC28.此视频讨论了您可能感兴趣的ext3文件系统中的每个目录文件限制.