存储视频文件的SQL中的BLOB

我希望有人可以解释如何使用BLOB.我看到BLOB可以用来存储视频文件.我的问题是为什么一个人将视频文件存储在sql数据库的BLOB中?与将指针存储到视频文件的位置相比有哪些优缺点?

解决方法

几个不同的原因.

如果存储指向磁盘上文件的指针(可能使用BFILE数据类型),则必须确保在磁盘上移动,重命名删除文件时更新数据库.当您存储这样的数据时,相对常见的是,随着时间的推移,您的数据库文件系统不同步,并且您最终会断开链接和孤立内容.

如果在磁盘上存储指向文件的指针,则在处理多媒体时不能使用事务语义.由于您无法执行类似于对文件系统进行回滚的操作,因此您必须处理以下事实:您将遇到文件系统上的数据与数据库中的数据不匹配的情况(即有人将视频上传文件系统但是在数据库中创建作者和标题的事务失败,反之亦然)或者您必须在文件上载中添加其他步骤以模拟事务语义(即上传第二个<> _done .txt文件只包含上传的实际文件中的字节数.这很麻烦且容易出错,可能会产生可用性问题.

对于许多应用程序,让数据库提供数据是向用户提供数据的最简单方法.如果您想避免向用户提供文件的直接FTP URL,因为他们可以使用它来绕过某些应用程序级安全性,最简单的选择是让数据库支持的应用程序在哪里检索数据,数据库从中读取数据文件系统然后将其返回到中间层,然后中间层将数据发送到客户端.如果每次检索数据时都必须将数据读入数据库,那么将数据直接存储在数据库中并让数据库用户询问时从数据文件中读取数据通常更有意义.为了它.

最后,像Oracle这样的数据库提供了额外的工具来处理数据库中的多媒体数据.例如,Oracle interMedia提供了一组丰富的对象来与存储在数据库中的视频数据进行交互 – 您可以轻松标记场景开始或结束的位置,标记讨论各种主题的位置,录制视频的时间,录制的人等等并且您可以将搜索功能与针对所有关系数据的搜索集成在一起.当然,您可以在数据库之上编写一个应用程序来执行所有这些操作,但是您要么在应用程序中编写大量代码或使用其他框架.利用数据库功能通常要容易得多.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...