图片,视频,文件等非结构化数据存储建议

最近想了解下图片等非结构化数据是存储 在哪里更适合。

参考链接如下:

https://baike.baidu.com/item/%E9%9D%9E%E7%BB%93%E6%9E%84%E5%8C%96%E6%95%B0%E6%8D%AE/309808?fr=aladdin

非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。包括所有格式的办公文档、文本、图片、XML, HTML、各类报表、图像和音频/视频信息等等。

传统关系数据库主要面向事务处理和数据分析应用领域,擅长解决结构化数据管理问题,在管理非结构化数据方面存在某些先天不足之处,尤其在处理海量非结构化信息时更是面临巨大挑战。为了应对非结构化数据管理的挑战,出现了各种非结构化数据管理系统,例如基于传统关系数据库系统扩展的非结构化数据管理系统,基于NoSQL的非结构化数据管理系统等。

非结构化查询处理过程中除了结构化数据查询处理所包含的操作外,还有两个重要的操作相似性检索和相似性连接。相似性检索是指给定一个元素,在由该种类元素组成的集合中寻找与之相似的元素。例如论文查重系统用到文本的相似性检索,谷歌的以图搜图的功能用到图像的相似性检索,手机上根据哼唱匹配音乐是音频的相似性检索等。相似性连接是数据库连接操作在非结构化数据上的一种扩展,它寻找两个元素种类相同的集合之间满足相似性约束的元素对,在数据清洗、数据查重、抄袭检测等领域有着重要的作用。非结构化查询处理框架要针对这两种非结构化数据特有的查询操作对结构化查询处理框架进行改进。

 

https://blog.csdn.net/zht666/article/details/34825743

数据库尽量不要存储较大的二进制数据,如图片、视频、文件等

后来对项目做修改,将照片存储在文件中,数据库只保存照片路径,结果速度立马上去了,恢复到了之前的1秒以内响应。

因此,我暂时得出这样的经验结论:(但是不知道是否正确,因为没有大量的项目经验论证)

数据库表中添加二进制字段后,即使二进制字段为NULL,即使查询的时候不查询二进制字段,查询速度仍然会下降很多,SQL语句怎么优化都无济于事。因此建议,如果要存储图片、文件、视频等大文件对象,还是存成文件吧,不要直接存储到数据库中,不然会严重影响查询速度。

 

 

如果网站有大量的图片,是存在数据库好?还是存文件?

https://blog.csdn.net/mituan1234567/article/details/11652873

数据库的好处是便于批量查询和返回结果,适用于查询方面的需求。
文件的好处是便于直接访问,适用于直接显示方面的需求。

如果你是想作为像百度图片和google图片一样的一个图片搜索系统,那么当然是数据库优先啦,不过需要注意的是,并不是把图片存入数据库,而是在数据库中存储从图片中提取的特征,便于查询,图片作为最终数据需要存储在另外一个数据库中,当然,特征数据库图片实体数据库之间可以通过图片的编号来进行一一对应。

存文件,而且最好用单独的服务器,原因如下:
1、图片内容一般不会做搜索,没必要放数据库
2、图片传送比较占用带宽,如果数据库和应用分离(即不再同一台服务器),那么去得一个图片需要从客户端到应用端取数据,应用又需要从数据库去取,这样会占用大量的带宽,同时这也会在数据库服务器和应用服务器两处IO上形成瓶颈。
如果图片单独放在服务器上,取图片的时候,则只需要客户端通过HTTP协议去图片服务器上取,减少带宽占用。并且,这里的IO瓶颈只存在图片服务器上,会快很多。

 

 

 

 

 

 

 

你可能感兴趣的:(存储)