gpt4 book ai didi

c# - 哪一个是用于管理图像文件的更具可扩展性的解决方案

转载 作者:可可西里 更新时间:2023-11-01 10:25:42 25 4
gpt4 key购买 nike

我需要能够支持用户图片上传和下载/查看图片。

这是我的选择。

1) 将图片存储在sql数据库中。

我已经看到这项工作适用于小型设置。随着大小的增加,数据库成本会更高。备份会更容易。无法利用缓存或 CDN。

2) 在文件系统中存储图像。我已经看到这个选项在比小型设置稍大的情况下很麻烦。难以管理包含大量文件的目录。将不得不想出一些哈希算法来确保目录中有一些图像并且目录只包含几个目录。不知道windows是否有创建深层目录结构的限制。可以使用缓存。

3) 在 nosql 数据库中存储图像。只是把这个扔在那里。我对 NoSql 不太熟悉。

4) Windows Azure 存储/Amazon 存储。

几件事。1)钱是一个重要因素。2) windows 是首选环境,但 linux/apache 解决方案也可以。

还有一件事。 Facebook 会做什么?或做。再次感谢。

最佳答案

您应该采用混合解决方案。

将实际的二进制图像存储在文件系统中,但使用数据库存储图像元数据。这为您提供了一种更简单的媒体来提供文件 - 允许可扩展性和潜在的服务速度,同时还具有数据库的搜索、过滤等速度。

我已经看到了多种实现方式.. 但通常它们是主键 + mime 类型 + 与文件名/文件夹相关联的目录。例如,/simon-whitehead/albums/stackoverflow/ 目录中文件名为 1013.jpg 的照片在数据库中的表中可能是这样的:

Id - 1013
Name - example.jpg
AlbumId - (Stackoverflow album id)
UserId - (my user id)
Lat - 37.81
Long - 144.96
Date - 7/10/2013
Mime type - image/jpeg

您甚至可能有一个将标签连接到图像(用于搜索)的联结表。然后,您基本上可以像这样构建响应:

file = getuser(userId).name / getalbum(albumId).name / getimage(imageid).name

编辑:我看到您现在已经添加了 Azure。我要说的是,我工作过的一家公司使用了 Azure,他们拥有非常棒的体验。然而,我没有太多机会看一看......所以我不能就此提供任何建议。

关于c# - 哪一个是用于管理图像文件的更具可扩展性的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19214411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com