1、二进制列
很多关系数据库都支持二进制类型的列,可以把图片转换成二进制,然后存放起来。
2、文件路径
把图片的相对路径,一般是相对网站根目录的路径存在数据库中,把文件存在在本地文件系统。
3、图片服务器
单独的服务器用来存放图片,单独的域名空间,使用某些特殊的文件系统。
图片有很多类型,小图片,大图片,有些图片是有关联系,通常一起使用,有的是产品图,有的是系统图片,有的是用户上传的,有的是平台管理的。
针对不同类型的图片,需要不同的文件系统,有些文件因为显示的时候都是一起显示的,可能需要存放在一起,减少寻道时间,加快IO速度,提高读取效率。
4、分布式,路径无关
MongoDB GridFS
001001001
产品图片
图片越来越多,请求越来越多,提高可用性,提高并行执行,会需要分布式文件系统,实现分布式图片服务,而且图片服务对外应该是存储无关的,路径无关。
外界只是需要存储图片,图片的类型,大小,图片之间的关联,使用频率,是否需要生成缩略图等等业务相关的需求。
图片服务负责具体的存储,存储的类型,位置,路径,返回外界一个唯一的编号就可以了。
当然编号可以设计成有含义的,3位一个含义,比如说:所属子系统,所属类型,相关性,权限,是否允许外链等等。