📜  大对象的类型 (LOB)

📅  最后修改于: 2021-09-08 16:00:27             🧑  作者: Mango

有不同种类的 LOB 可以存储在数据库或外部文件中。

内部 LOB
数据库中的 LOB 以优化空间并在数据库表空间内提供高效访问的方式存储。
内部 LOB(BLOB、CLOB、NCLOB)还提供数据库服务器的事务支持(提交、回滚等)。

  • BLOB(二进制 LOB)用于存储非结构化二进制(也称为“原始”)数据,例如视频剪辑。
  • CLOB(字符LOB)用于存储来自数据库字符集的大块字符数据。
  • NCLOB(国家字符LOB)用于存储来自国家字符集的大块字符数据。

持久性和临时性 LOB
内部 LOB 可以是持久的或临时的。持久 LOB 是存在于数据库表行中的 LOB 实例。仅在本地应用程序范围内实例化 LOB 时,会创建临时 LOB 实例。

当您将实例插入表行时,临时实例将成为持久实例。

持久性 LOB 使用复制语义方法并参与数据库事务。您还可以在任何事务或系统故障事件中恢复持久性 LOB,并且可以轻松提交或回滚。换句话说,根据与使用数据库对象相关的 ACID 属性与使用持久 LOB 相关。

外部 LOB 和 BFILE 数据类型
外部 LOB 是存储在数据库表空间之外的操作系统文件中的数据对象,没有来自数据库服务器的事务支持。

BFILE 具有只读数据类型。数据库允许对存储在 BFILE 中的数据进行只读字节流访问。您不能从应用程序中写入 BFILE。

数据库对 BFILE 列使用引用语义。存储在 BFILE 类型的表列中的数据在物理上位于操作系统文件中,而不是在数据库表空间中。

BFILEs 基本上用于保存:

  • 二进制数据,在您的应用程序运行时不会更改,例如图形。
  • 加载到其他大型对象类型中的数据,例如可以操作数据的 CLOB 或 BLOB。
  • 适用于字节流访问的数据,例如多媒体。
  • 只读数据比较大,避免占用大量数据库表空间。

操作系统访问的任何存储设备都可以保存 BFILE 数据,包括硬盘驱动器、CD-ROM、CD 和 DVD。如果操作系统支持对操作系统文件的流模式访问,则数据库可以访问 BFILE。

BFILE 的安全性
基本上,目录对象用于访问和使用 BFILE。 DIRECTORY 是包含该文件的服务器文件系统中实际物理目录的别名。仅当在 DIRECTORY 对象上获得授权时,才允许用户访问该文件。

  • DDL(数据定义语言)SQL 语句如 CREATE、REPLACE、ALTER 和 DROP 与 DIRECTORY 数据库对象一起使用。
  • DML(数据管理语言)SQL 语句用于授予和撤销对 DIRECTORY 对象的对象权限。

在一个会话中最多可以同时打开 10 个 BFILES。

Large Objects Datatypes Description
Binary Large Object (BLOB) Stores any kind of data in binary format such as images, audio, and video.
Character Large Object (CLOB) Stores string data in the database having character set format. Used for large set of characters/strings or documents that use the database character.
National Character Large Object (NCLOB) Stores string data in National Character Set format. Used for large set of characters/strings or documents in the National Character Set. Supports characters of varying width format.
External Binary File (BFILE) BFILEs can be accessed from your application on a read-only basis. Use BFILEs to store static data, such as image data, that does not need to be manipulated in applications.