DBMS 上下文中的 BLOB 到底是什么

问题描述 投票:0回答:7
  • BLOB是什么?
  • 我该如何使用它?
  • DBMS 的 BLOB 之间有什么区别?我想使用 BLOB 将数据保存到任何 DBMS 中,然后使用库读取该 BLOB。
sql oracle blob database blobstore
7个回答
99
投票

斑点:

BLOB
Binary Large Object)是数据库系统中的大对象数据类型。
BLOB
可以存储大量数据、文档类型甚至媒体文件(例如音频或视频文件)。
BLOB
字段仅在使用字段中的内容时才分配空间。
BLOB
分配千兆字节的空间。

BLOB 的使用

(来源:Ziyad Mohammad 的代码项目文章

您可以将二进制大对象 (

BLOB
) 写入数据库,如下所示 二进制或字符数据,具体取决于数据的字段类型 来源。要将
BLOB
值写入数据库,请发出 适当的
INSERT or UPDATE
语句并将
BLOB
值传递为 一个输入参数。如果您的
BLOB
存储为文本,例如 SQL 服务器文本字段,您可以将
BLOB
作为字符串参数传递。如果
BLOB
以二进制格式存储,例如 SQL Server 图像 字段,您可以将字节类型的数组作为二进制参数传递。

一个有用的链接:在数据库中将文档存储为 BLOB - 有什么缺点吗?


13
投票

我不会再次扩展这个缩写词...但我会在其他定义中添加一些细微差别:您可以将任何数据存储在 blob 中,而不管它们可能具有其他字节解释。文本可以存储在 blob 中,但如果有这个选项,最好使用 CLOB。

跨数据库的 BLOBS 之间不应该存在差异,因为在保存和检索数据后,它不会发生变化……每个数据库如何实现这一点都是一个黑匣子,值得庆幸的是几乎无一例外都是无关紧要的。然而,与 BLOBS 交互的方式可能非常不同,因为 SQL 标准中没有相应的规范(或者规范中的标准?)。通常,您必须调用过程/函数来保存和检索它们,并且如果不禁止的话,限制基于 BLOB 内容的任何查询几乎是不可能的。

在枚举为二进制数据的其他内容中,您还可以使用给定的编码存储文本 -> 字符代码的二进制表示...而无需实际知道或指定所使用的编码。

BLOBS 是存储格式的最小公分母。


10
投票

这似乎是一个愚蠢的问题,但您实际上想使用 RDBMS 做什么?

如果你只是想存储文件,那么操作系统的文件系统通常就足够了。 RDBMS 通常用于结构化数据和(除了 SQLite 等嵌入式数据)处理该数据的并发操作(锁定等)。其他有用的功能包括安全性(处理数据访问)和备份/恢复。在后者中,相对于常规文件系统备份的主要优点是能够通过应用某种形式的日志文件来恢复到备份之间的某个时间点。

就数据库而言,BLOB 是非结构化且不透明的。 Oracle确实有一些针对多媒体对象(例如图像)的特定ORDSYS类型,这些对象还附加了一堆元数据,并且具有关联的方法(例如重新缩放图像或重新着色图像)。


9
投票

数据库中存储的任何大的单个数据块,例如图片或声音文件,不包含记录字段,并且不能被数据库的搜索引擎直接搜索到。


4
投票

BLOB 是二进制大对象。它用于在数据库中存储大量二进制数据。

您可以使用它来存储您想要的任何类型的二进制数据,包括图像、视频或您希望存储的任何其他类型的二进制数据。

不同的 DBMS 以不同的方式处理 BLOB;您应该阅读您感兴趣的数据库的文档,了解它们如何(以及是否)处理 BLOB。


4
投票

它们是二进制大对象,您可以使用它们来存储二进制数据,例如图像或序列化对象等。


3
投票

我将其视为一个大型二进制数据数组。 BLOB 的可用性直接取决于 DB 接口的有限带宽,而不是由 DB 存储机制决定。无论您如何存储大量数据,存储和检索的唯一方法是狭窄的数据库接口。数据库是系统的瓶颈。为什么要用它作为一个易于分布式的文件服务器呢?通常您不想下载 BLOB。您只希望数据库存储您的 BLOB url。将 BLOB 存放在单独的文件服务器上。然后,您可以释放宝贵的数据库连接,并为大型对象提供无限的带宽。但这会产生一些一致性问题。

© www.soinside.com 2019 - 2024. All rights reserved.