Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
水滴';存储视频文件的SQL中的_Sql_Oracle_Blob - Fatal编程技术网

水滴';存储视频文件的SQL中的

水滴';存储视频文件的SQL中的,sql,oracle,blob,Sql,Oracle,Blob,我希望有人能解释如何使用水滴。我发现blob可以用来存储视频文件。我的问题是,为什么一个人要将视频文件存储在SQL数据库中的BLOB中?与存储指向视频文件位置的指针相比,有哪些优点和缺点?有几个不同的原因 如果将指向文件的指针存储在磁盘上(可能使用BFILE数据类型),则必须确保在磁盘上移动、重命名或删除文件时更新数据库。当您像这样存储数据时,随着时间的推移,数据库与文件系统失去同步,最终导致链接断开和内容孤立,这是比较常见的 如果将指向文件的指针存储在磁盘上,则在处理多媒体时不能使用事务语义。

我希望有人能解释如何使用水滴。我发现blob可以用来存储视频文件。我的问题是,为什么一个人要将视频文件存储在SQL数据库中的BLOB中?与存储指向视频文件位置的指针相比,有哪些优点和缺点?

有几个不同的原因

如果将指向文件的指针存储在磁盘上(可能使用
BFILE
数据类型),则必须确保在磁盘上移动、重命名或删除文件时更新数据库。当您像这样存储数据时,随着时间的推移,数据库与文件系统失去同步,最终导致链接断开和内容孤立,这是比较常见的

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

对于许多应用程序来说,让数据库提供数据是向用户提供数据的最简单方法。如果您希望避免向用户提供指向您的文件的直接FTP URL,因为用户可以使用该URL绕过某些应用程序级别的安全性,最简单的选择是让数据库支持的应用程序在其中检索数据,则数据库读取它从文件系统中读取数据,然后返回到中间层,中间层再将数据发送到客户端。如果每次检索数据时都要将数据读入数据库,通常更明智的做法是直接将数据存储在数据库中,并在用户请求时让数据库从其数据文件中读取数据

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

读一读: (显然这是一个有偏见的观点,但确实有一些缺点(现在11g的出现已经解决了这些缺点)