大对象数据类型
大对象数据类型已定义表与大对象存储分开大对象是逻辑存储在表列中但物理存储与列无关的数据对象。大对象是独立于表存储的,因为它们通常存储大量的数据。将此数据与表分开可提高性能。
大对象分为简单大对象和智能大对象,简单大对象又分为BYTE和TEXT,智能大对象又分为BLOB和CLOB
只有GBase 8s支特BLOB和CLOB数据类型。
1.简单大对象
简单大对象是具有理论大小限制2^31个字节和磁盘容量确定的实际限制的大对象类别。GBase 8s支持以下简单大对象数据类型:
1.1 BYTE
存储二进制数据,BYTE数据类型以无差别字节流的形式存储任何种类的二进制数据。二进制数据通常由数字化的信息(如电子表格、程序装入模块和数字化声音模式等等)组成。
BYTE数据类型不具有最大大小。BYTE列具有2^31个字节的理论限制和磁盘容量确定的实际限制。可以存储、检索、更新或刪除BYTE列的内容。但是,不能在算术或字符串运算中使用BYTE操作数,也不能使用UPDATE 语句的SET子句将文字指定给BYTE列。也不能通过以下任何方法使用BYTE项:
- 使用聚集函数。
- 使用IN子句。
- 使用MATCHES或LIKE子句
- 使用GROUP BY子句
- 使用ORDER BY子句
1.2 TEXT
存储文本数据。TEXT数据类型存储所有类型的文本数据。它可以同时包含语言坏境支持的单字节字符和多字节字符。术语简单大对象指的是TEXT和BYTE数据类型。
TEXT列具有2^31个字节(两千兆字节)的理论限制和可用磁盘存储器确定的实际限制。可以将相同表的不超过195列声明为TEXT数据类型。同一限制还适用于BYTE数据类型。可以存储、检索、更新或删除TEXT列中的值。
仅当正在使用IS NULL或 IS NOT NULL运算符测试NULL值时,才能在布尔表达式中使用TEXT操作数。
您可以使用以下可装入行或更新字段的方法来插入TEXT 数据:
- 使用dbload或onload实用程序,
- 使用LOAD 语句(DB-Access)
- 从TEXT主变量 (ESQL)
- 存在内置强制转型将TEXT对象转换为CLOB对象
可以将相同表的不超过195列声明为BYTE或TEXT数据类型。与智能大对象不同,简单大对象不支特随机存取数据。在客户机应用程序和数据库服务器之间传输简单大对象时,您必须传输完整的BYTE或TEXT值。如果数据不适合于内存,那么必须将数据值存储在操作系统文件中,然后从该文件中检索数据值。
2.智能大对象
智能大对象是支持对数据进行随机访向并且通常可恢复的一类大对象。随机存取功能允许您查找和读取智能大对象,就好像它是操作系统文件一样。
智能大对象对于具有大量存储器需求的不透明数据类型也很有用。它们具有2^42个字节的理论大小限制和磁盘容量确定的实际限制。
CBase 8s支持下列智能大对象数据类型:
2.1 BLOB
存储二进制数据。BLOB 数据类型以随机存取块(称为智能大对象空间)的形式存储任何种类的二进制数据。二进制数据通常由已保存的电子表格、程序装入模块和数字化声音模式等等组成。数据库服务器不会对 BLOB 列的内容进行解释。
BLOB列最长可为4太字节(4^29个字节),不过系统资源可能会强加较低的实际限值。分配给智能大对象数据类型的最小磁盘空间量为512字节。
木语智能大对象指的是BLOB和CLOB数据类型。将CLOB数据类型用于随机访问文本数据。
您可以使用以下SQL函数对BLOB列执行操作:
- FILETOBLOB将文件复制到BLOB列。
- LOTOFILE将BLOB(或CLOB)值复制到操作系统文件中。
- LOCOPY将现有智能大对象复制至新的智能大对象。
可以通过下列方法将数据插入到BLOB列:
- 使用dbload或onload实用程序。
- 使用LOAD 语句(DB-Access)
- 使用FILETOBLOB函数
- 从BLOB(ifx_lo_t)主变量(GBase 8s ESQL /C)
2.2 CLOB
存储文本数据。CLOB数据类型以随机存取块(称为智能大对象空间)的形式存储任何种类的文本数据。如果此信息也是文本的 (例加。PostScript、“超文本标记语言”(HTML)、“标准图形标记语言”(SGML)或“可扩展标记语言(XML)数据),那么文本数据可包括文本格式的信息。
木语智能大对象指的是CLOB和BLOB数据类型。CLOB数据类型支持对不适合 BLOB值的字符串进行特殊运算。CLOB值最长可为4太字节(4*2^40个字节)。分配给智能大对象数据类型的最小磁盘空间量为 512字节。
将BLOB数据类型用于随机访问二进制数据,以下SQL函数可以对CLOB列执行操作:
- FILETOCLOB将文件复制到CLOB列。
- LOTOFILE将CLOB(或BLOB)值复制到文件中。
- LOCOPY 将CLOB(或BLOB)值复制到新的智能大对象。
- ENCRYPT_DES 或ENCRYPT TDES 从纯文本CLOB参数创建一个加密的BLOB值。
- DECRYPT BINAR或DECRYPT CHAR从加密的BLOB 参数返回未加密的BLOB值(该ENCRYPT DES或ENCRYPT TDES从纯文本CLOB值中创建)
CLOB数据没有任何强制转型。因此,除非使用这些加密和解密函数返回一个BLOB,否则数据库服务器无法将CLOB类型的数据转换为任何其他数据类型。在SQL中,只能对CLOB数据执行等于(=)比较运算。要执行其他运算。必须从客户机应用程序中使用某种应用程序编程接口。
CLOB类型的多字节字符可以通过下列方法将数据插入到CLOB列:
- 使用dbload或onload实用程序
- 使用 LOAD语句(DB-Access)
- 从CLOB(ifx_lo_t主变量(ESOL/C)
对于GLS,以下规则适用:
- 必须在数据库语言环境中定义多字节CLOB字符。
- 用代码集顺序整理CLOB数据类型。
- 数据库服务器处理CLOB数据的代码集转换。
GBase 8s将智能大对象存储在智能大对象空间中。智能大对象空间是包含只存储BLOB和CLOB数据的—个或多个块的逻辑存储器区域。