我应该在哪里存储照片?文件系统还是数据库?

Ang*_*ker 9 architecture photos

可能重复:
存储上传的照片和文档 - 文件系统与数据库blob

我开始开发一个网络应用程序,其主要目的是显示照片.用户也可以上传照片.

提出的第一个问题是在哪里存储照片:在文件系统或数据库上.

我将使用Windows框来托管该网站.数据库是MySQL,后端代码使用ASP.NET MVC在C#中.

Joh*_*kin 28

文件系统,当然,除非你的目标是关于thedailywtf的故事.最简单的方法是让照片按照您可以从文件本身派生的属性进行组织,例如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
Run Code Online (Sandbox Code Playgroud)

如果您转移到分片存储,这也很容易移植.

  • 但删除呢?示例:2个用户上传了同一个文件.因此,只存在一个文件,因为哈希(路径)是相同的.当其中一个删除照片时,第二个用户也将丢失它.我对吗? (2认同)