或许接下来的文章没有明显的帮到你解决存储问题,但花点时间耐心的往下读一读,在思路上或许对你可以有点帮助!
直接存储在数据库中
当我们使用数据库存储信息时,一般的属性我们都可以直接存储在数据库中,比如:某person的id,name,age等等,当然图片等文件也是可以直接存储在数据库中,但这一点就不会像普通字段直接存储在数据库中,我们一般都是采取流的机制把某图片文件的二进制数据存储在数据库中,这样就解决了图片等文件存储在数据库中的问题。但这种方法它可取吗?接下来就分析它存在什么问题!
这样做有什么问题
首先,我们来分析下以上所说的方法有什么问题。一般来说,图片和文件相对于其它存入的信息来说,大的不止一点两点,我们也不得不承认,数据库对于图片文件的存入和读取性能并不咋的!数据库服务器并不善于做文件处理,假设当并发量大的时候,有很多用户同时连上了这台数据库服务器,这样的话问题就出来了,数据库服务器将要达到了瓶颈,变成了一个文件服务器了,可能会时不时卡顿,并且当这个文件不存在时,我们做流的操作时,可能还会发生“假死”现象!那有何解决办法呢?
另寻方法
由于以上的方法存在比较严重的问题,所以得寻找更优的方法。此时为了解决以上的问题,我们可以再专门开辟一台服务器——文件服务器,专门用来保存相关图片文件等。此时,当我们再存入信息时,分两步操作,普通信息直接存入数据库,图片等真实信息存入文件服务器,而文件服务器给我们返回一个地址,这个地址就如同普通信息一样存入在数据库中。
图解如下:
希望可以对你起到帮助,如有更好的方法可以一起分享!!!