首页 > 数据库 > 国内数据库 > YashanDB大对象型数据
LOB大对象型用于在数据库中存储较大二进制或较大文本的可变长度数据。
YashanDB的LOB类型包括BLOB、CLOB和NCLOB。
| 类型 | 字节长度 |
|---|---|
| BLOB | 1~4G*DB_BLOCK_SIZE |
| CLOB | 1~4G*DB_BLOCK_SIZE |
| NCLOB | 行存:
1~4G*DB_BLOCK_SIZE 列存: 无此类型 |
定义格式:
| 类型 | 格式 | 规则 |
|---|---|---|
| BLOB | BLOB | 变长二进制串,无需指定size |
| CLOB | CLOB | 变长字符串,无需指定size |
| NCLOB | NCLOB | 支持UNICODE的变长字符串,无需指定size |
YashanDB对大对象类型的存储包含行内存储和行外存储两种方式:
Note:
数据在存储时会产生一些内部元信息,行存HEAP表字节限制包括这部分元数据所占空间,但列存表(TAC和LSC表)字节限制不包括元数据所占空间。
以DB_BLOCK_SIZE = 8K为例,LOB类型数据在行存表中的最大字节长度为
4G*8K=32T。
YashanDB对于LOB型的使用限制如下:
BLOB表示二进制大对象,例如照片、视频、音频等文件,对于这类文件的存储,可采用在数据库中只存储文件地址,读取时通过链接获取文件的方式,也可采用直接将其二进制数据作为BLOB字段存储到数据库表中的方式。
由于BLOB内容为二进制数据,除 与RAW类型的隐式数据转换外,该数据类型在SQL中不参与其他任何类型转换及运算,但可以通过 DBMS_LOB.COMPARE实现与BLOB/RAW类型数据的比较,该高级包同时提供了对BLOB类型的一些运算方法。
列存表中,BLOB在函数需要转成字符串时做UTF-8字符集合法校验。
示例
本示例运用YashanDB JDBC驱动客户端程序对customer_img插入一条包含图片的记录,该示例引用到了在 YashanDB JDBC驱动使用示例程序中的getConnection方法。
CLOB表示可变长度文本,与VARCHAR类型类似,而VARCHAR类型的最大存储规格为32000字节,对于预计可能会存储超过该规格数据的字段,可将其设为CLOB类型。
所有CLOB类型的数据在发送到客户端时会做字符集校验,检验失败将返回错误。
CLOB类型支持大部分字符型函数,也可以在执行数据转换后参与运算,具体见每个函数的描述。
可以通过 DBMS_LOB.COMPARE实现CLOB与CLOB/CHAR/VARCHAR类型数据的比较,该高级包同时提供了对CLOB类型的一些运算方法。
示例
NCLOB存储UNICODE可变长度数据,与CLOB类型功能类似,最大支持存储1~4G*DB_BLOCK_SIZE数据。
NCLOB类型仅适用于HEAP表。
示例(HEAP表)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3079242/ ,如需转载,请注明出处,否则将追究法律责任。