可能重复: 存储上传的照片和文档.文件系统与数据库blob
我开始开发一个web应用程序,其主要目的是显示照片。用户也可以上传照片。
提出的第一个问题是把照片存放在哪里:在文件系统或数据库上。
我将使用一个Windows框来托管这个站点。数据库为MySQL,后端代码为C#,利用ASP.NET MVC。
发布于 2009-10-09 23:21:37
当然,文件系统,除非您的目标是关于日报的故事。最简单的方法是让照片由您可以从文件本身派生的属性组织,比如它的SHA-1散列。然后只需将散列存储在数据库中,附加到照片的主键和其他属性(谁上传了它、上传日期等)。
分配文件系统上的照片也是个好主意,这样您就不会在一个目录中得到数百万个文件。所以你会得到这样的东西:
storage/00/e4/f56c0de1c61fdb926e79e8a0a65bd12930c9.jpg
storage/25/9a/ec1c55bfb660548a6770238668c4b117d92f.jpg
storage/5d/d5/4b01d98f17a9ad9dd1526b49ba39b5aa37a1.jpg
storage/63/49/6f740b6c284ce6685dc17d473a7360ace249.jpg
storage/b1/75/066d178188dde110149a8422ab651b0ee615.jpg
storage/b1/20/a2b7d02b7b0c43530677ab06235382a37e20.jpg
storage/da/39/a3ee5e6b4b0d3255bfef95601890afd80709.jpg这也是很容易移植,如果您曾经移动到切分存储。
发布于 2009-10-09 23:36:54
如果你正在建立一个网站,围绕照片,然后忘记数据库。如果它将成为流行,你的数据库将受到沉重打击,它的大部分时间将花在交付照片。此外,数据库的规模也不是很好。将它们保存在文件系统中有更多的好处。而且您可以很好地扩展,有静态的内容服务器,使用服务进行内容传递。
而且,亚马逊S3或其他云提供商也有自己的优势。例如,S3 + Amazon将提供良好的性能。CloudFront将您的文件缓存在世界各地的服务器上,这样就可以在任何地方轻松/快速地访问它们。但如果我们谈论的图片和网站变得流行,你的账单可能会相当高。
对于S3,每个存储和每个传输到/出云中的亚马逊收费。为了CloudFront /传输。
发布于 2009-10-09 23:48:22
如果您使用的是Server 2008,则有一个Filestream数据类型,它可以处理所提到的有关DB越来越大的大多数问题。它处理文件系统和表之间同步的所有烦人的细节。
在这里寻找关于主题:将任何数据存储在Server 2008 (Katmai)中的博客文章
https://stackoverflow.com/questions/1546485
复制相似问题