我正在使用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,从那里,我将从数据库中查询以获取路径并显示图像。
我的问题:
什么是照片共享网站的最佳数据库设计(如flickr)?
如果我继续在“照片”文件夹中创建新文件夹,是否会有任何问题。如果成千上万的用户注册了怎么办?什么是最佳实践
我应该保留多大尺寸的照片?目前我只存储缩略图(100x100)和(最大)1600x1200像素照片。
在开发照片共享网站时,我应注意哪些其他事项?
答案 0 :(得分:7)
1 - 您的数据库至少应包含
users: user_id, user_name, pw_hash, salt
photos: photo_id, user_id, photo_path
字段将添加您想要的额外功能(标签,last_seen,photo_upload_date,photo_views等...)
2 - 不要过早优化。我会为每个用户添加一个users / username文件夹,并将用户的照片转储到那里。
3 - 我建议保留原始大小,缩略图和适合您网站的尺寸。因此,如果您的布局包含最大宽度为850像素的照片,请将所有照片调整为最大850像素宽。如果您更改了布局,则可以使用原始图片并将其调整为新大小。
4 - 关于图像上传安全性的SO有一个很好的答案,但我找不到它。生病了。
关于scalabilty的好话,关于缩略图的部分对你来说很有用:http://www.youtube.com/watch?v=ZW5_eEKEC28。此视频讨论了您可能感兴趣的ext3文件系统中的每个目录的文件限制。