- 什么是 BLOB?
- 我该如何使用它?
- DBMS 的 BLOB 之间有什么区别。我想使用 BLOB 将数据保存到任何 DBMS 中,然后使用库读取该 BLOB。
7 回答
斑点:
BLOB
(二进制大对象)是数据库系统中的一种大对象数据类型。BLOB
可以存储大量数据、文档类型,甚至是音频或视频文件等媒体文件。BLOB
字段仅在使用字段中的内容时才分配空间。BLOB
以千兆字节分配空间。
BLOB 的用法:
您可以将二进制大对象 ( BLOB
) 作为二进制或字符数据写入数据库,具体取决于数据源中的字段类型。要将BLOB
值写入数据库,请发出适当的INSERT or UPDATE
语句并将BLOB
值作为输入参数传递。如果您BLOB
存储为文本,例如 SQL Server 文本字段,则可以将其BLOB
作为字符串参数传递。如果BLOB
以二进制格式存储,例如 SQL Server 图像字段,则可以将字节类型的数组作为二进制参数传递。
一个有用的链接:在数据库中将文档存储为 BLOB - 有什么缺点吗?
我不会再扩展首字母缩写词......但我会为另一个定义添加一些细微差别:您可以将任何数据存储在 blob 中,而不管它们可能具有的其他字节解释。文本可以存储在一个 blob 中,但如果你有这个选项,你最好使用 CLOB。
从某种意义上说,跨数据库的 BLOBS 之间应该没有区别,因为在您保存和检索数据之后,它没有改变......每个数据库如何实现这一点是一个黑盒,谢天谢地,几乎毫无例外地无关紧要。然而,与 BLOBS 交互的方式可能非常不同,因为 SQL 标准(或规范中的标准?)中没有针对它的规范。通常您必须调用过程/函数来保存检索它们,并且如果不禁止的话,几乎不可能基于 BLOB 的内容来限制任何查询。
在枚举为二进制数据的其他内容中,您还可以存储文本的二进制表示 -> 具有给定编码的字符代码......而无需实际知道或指定使用的编码。
BLOBS 是存储格式的最低公分母。
这似乎是一个愚蠢的问题,但是您实际上想要使用 RDBMS 做什么?
如果您只想存储文件,那么操作系统的文件系统通常就足够了。RDBMS 通常用于结构化数据和(除了像 SQLite 这样的嵌入式数据)处理该数据的并发操作(锁定等)。其他有用的功能是安全性(处理对数据的访问)和备份/恢复。在后者中,与常规文件系统备份相比,主要优势是能够通过应用某种形式的日志文件恢复到备份之间的时间点。
就所涉及的数据库而言,BLOB 是非结构化和不透明的。Oracle 确实为多媒体对象(例如图像)提供了一些特定的 ORDSYS 类型,这些对象还附加了一堆元数据,并具有相关的方法(例如重新缩放或重新着色图像)。
存储在数据库中的任何大的单个数据块,例如图片或声音文件,不包括记录字段,并且不能被数据库的搜索引擎直接搜索。
BLOB 是二进制大对象。它用于在数据库中存储大量二进制数据。
您可以使用它来存储您想要的任何类型的二进制数据,包括图像、视频或您希望存储的任何其他类型的二进制数据。
不同的 DBMS 以不同的方式处理 BLOB;您应该阅读您感兴趣的数据库的文档,以了解它们如何(以及是否)处理 BLOB。
它们是二进制大对象,您可以使用它们来存储二进制数据,例如图像或序列化对象等。
我认为它是一大堆二进制数据。BLOB 的可用性直接来自 DB 接口的有限带宽,它不是由 DB 存储机制决定的。无论您如何存储大量数据,唯一的存储和检索方式是狭窄的数据库接口。数据库是系统的瓶颈。为什么要把它用作一个文件服务器,它可以很容易地分发?通常您不想下载 BLOB。您只希望数据库存储您的 BLOB 网址。将 BLOB 存放在单独的文件服务器上。然后,您可以释放宝贵的数据库连接,并为大型对象提供无限带宽。但是,这会产生一些连贯性问题。