存储方案

2. 偶遇到同事让图片存储到数据库?!

2017-03-04  本文已影响1173人  Shirley_奋进中的虾米

背景:

在填写表单申请时,用户突然提出要求:是否在填写详情时可以支持截图保存到数据库里。

调研:

1. 当前数据库保存「详情」字段是字符串,如果突然变更字段类型,对现有数据会有影响;

2. 数据库是否能很友好地支持存储图片?以前没怎么听说过数据库用来直接存储图片,如果要存的话,也是存图片的一个路径(/相对路径)。直接上网搜了一些资料,这篇博文写得挺好: 关于图片或者文件在数据库的存储方式归纳。 提炼几点如下:

1)当前互联网环境中商品图片、用户上传的头像等图片要存放在数据中,有2种方式:

     a. 图片以二进制形式存储到数据库中(mysql中blob类型,容量64K或MEDIUMBLOB类型,容量16M,LONGBLOB类型,容量4G)。

         优点:备份图片数据和迁移数据方便。

         缺点:

                  # mysql对通信数据大小有限制,一般高清一点的图片大小都有上M,而mysql默认数据通信大小是1M,my.conf的max_allowed_packet字段;如果图片大的话,直接影响与mysql交互时间;

                  # 影响数据库性能。当数据库数据量大时时,大部分时间耗费在php,java等接口等待数据返回的数据;大字段数据加重数据库负担,在高并发情况下严重影响性能;

       b.  图片存储在磁盘上,数据库字段中保存的图片的路径。

2)数据库性能调优,这个后续结合实际多深入研究一下。提到几点:大字段重新拆分到单独一个表中,因为数据库查找数据是扫描数据文件,文件容量越小,速度也就越快。所以,单表容量在几G时得考虑分表了。『分离 瘦身』

3)存储图片路径为何一般都是相对路径,且前面还不加「/」。为以后扩展方便,直接域名加图片相对路径即可。

4)何为cdn(内容分发)服务。本质为了解决距离远而造成的通信速度慢问题,使用就近服务。比如北京用户访问在广州的某通信服务,必然会有南北链路远而带来的通信时延大的问题,如果这时使用cdn服务,即广州的该通信服务在北京部署了服务器(或机房或安放节点),那北京用户就会直接请求距离近的服务完成交互。

上一篇 下一篇

猜你喜欢

热点阅读