需要存储大量文本,图片,视频等数据,可以选用TiDB作为数据库吗?

需要存储大量文本,图片,视频等数据,可以选用TiDB作为数据库吗?

图片、视频千万别存数据库。。。

没啥不可以。但是图片视频文件不要直接往数据库里扔

分布式文件系统应该是最好的,数据库存的是文件路径。
但是也没有谁规定,数据库不能存,以前也做过一个系统,将文件序列化以后存数据库。不过是小文件,证件照

可以存,但这并非数据库的擅长项

我们都是存oss上,数据库中存个链接。

非常感谢!我还想请教一个问题,传来一个文件,分布式数据库怎么知道该存到哪个文件夹下呢?分布式数据库怎么知道文件路径是什么呢?

如果是要将文件存储到数据库里的话,首先接收文件肯定是应用程序,应用程序应该有自己的逻辑的。
分为两种情况:
第一种:
落盘:接收的文件应该是有固定存储路径的,先通过sftp或者其他传输工具,已经将文件存储到本地,然后通知程序,应用程序读取文件,序列化后存储到数据库里。
第二种:
不落盘:应用程序接收文件传输请求后,直接将传输过来得到文件流存储到数据库里。

当然,其实不建议这么搞,应该有NFS/OSS这种共享存储或者分布式存储系统的,将文件存储路径存到数据库就可以了。

1 个赞

是不是需要先搞清楚这个文件是怎么传上来的,前端程序还是什么

感谢您的回复!看完大家的解答,我不准备把数据直接存数据库里。现在令我困惑的是,从一台服务器上拿到的文件数据,怎么才能存到磁盘上(需要自己写应用程序,固定存储路径,接收文件是吗?),然后分布式数据库怎么拿到这个文件路径的呢?

可以理解为从一台服务器上拿文件,怎么存到多台空闲服务器上,用分布式数据库来管理这些数据。

NFS/OSS这种共享存储是最简单的处理方式。
没有共享存储,那就只能另一种了,就是sftp,这个要自己写sftp实现类,对端服务器开通22端口,开放用户名,密码给你,你自己调用实现类,在对端服务端上读取,写入数据了。

我觉得这中间就是差一个程序,这个程序应该就是产生你说的“拿”这个动作的。要不就自己写,要不就只能看看有没有第三方的软件。

对象和NAS都比较合适呀。数据库做索引。

存储图片,视频可以在数据库中存地址,不用直接存在数据库里面

数据库里一般是存的文件的路径,我们的环境里图片、视频都是放对象存储里的。表里有个url字段。

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。