返回首页

gbase数据、南大通用产品文档:GBase8s类定义

更新日期:2024年09月11日

以下示例中的 charattrUDT 是 C 不透明类型的类,它必须实现 SQLData 接口:
import java.sql.*;
import com.gbasedbt.jdbc.*;
/*
* C struct of charattr_udt:
*
* typedef struct charattr_type
* {
* char chr1[4+1];
* mi_boolean bold; // mi_boolean (1 byte)
* mi_smallint fontsize; // mi_smallint (2 bytes)
* }
* charattr;
*
* typedef charattr charattr_udt;
*
*/
public class charattrUDT implements SQLData
{
private String sql_type = "charattr_udt";
// an ASCII character/a multibyte character, and is null-terminated.
public String chr1;
// Is the character in boldface?

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 188 -

public boolean bold;
// font size of the character
public short fontsize;

public charattrUDT() { }

public charattrUDT(String chr1, boolean bold, short fontsize)
{
this.chr1 = chr1;
this.bold = bold;
this.fontsize = fontsize;
}

public String getSQLTypeName()
{
return sql_type;
}
// reads a stream of data values and builds a Java object
public void readSQL(SQLInput stream, String type) throws SQLException
{
sql_type = type;
chr1 = ((IfmxUDTSQLInput)stream).readString(5);
bold = stream.readBoolean();
fontsize = stream.readShort();
}
// writes a sequence of values from a Java object to a stream
public void writeSQL(SQLOutput stream) throws SQLException
{
((IfmxUDTSQLOutput)stream).writeString(chr1, 5);
stream.writeBoolean(bold);
stream.writeShort(fontsize);
}
// overides Object.equals()
public boolean equals(Object b)
{
return (chr1.equals(((charattrUDT)b).chr1) &&
bold == ((charattrUDT)b).bold &&

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 189 -

fontsize == ((charattrUDT)b).fontsize);
}

public String toString()
{
return "chr1=" + chr1 + " bold=" + bold + " fontsize=" + fontsize;
}
}
在 JDBC 应用程序中,自定义类型映射必须将 SQL 类型名 charattr_udt 映射
到 charattrUDT 类:
java.util.Map customtypemap = conn.getTypeMap();
if (customtypemap == null)
{
System.out.println("\n***ERROR: typemap is null!");
return;
}
customtypemap.put("charattr_udt", Class.forName("charattrUDT"));

Object is null
传递的对象为空。请检查您的程序逻辑,确保引用的对象是有效的。

配置磁盘以便在数据集市和数据仓库中获得最佳性能。对于 SQL 操作,磁盘 I/O 所占的
响应时间最长。数据库服务器提供对计算机上的多个磁盘的并行访问权。分配磁盘空间之
前,请了解操作系统管理指南中关于磁盘空间的信息并参阅块的磁盘分配。
使用大块
缺省情况下,对于 2
KB 页,数据库空间的块大小是 4 太字节。块可以位于 64 位地址空
间中的任何位置。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 8 -
在 UNIX 上创建块文件
在 UNIX™ 上,可以将数据存储在使用未缓冲(原始)磁盘或操作系统文件(又称为已缓冲
或熟文件)的块中。
原始或未缓冲的磁盘存取
UNIX 使用字符专用设备(又称为原始磁盘设备)提供未缓冲的磁盘存取。要在 UNIX 上创
建原始磁盘设备,请遵循操作系统中提供的指示信息。
数据库服务器使用原始磁盘存取以提高磁盘 I/O 操作的速度和可靠性。
原始磁盘存取绕过
操作系统提供的文件缓冲机制。数据库服务器本身将管理磁盘和内存之间的数据传送。数
据库服务器通过保证连续存储行来优化表的访问。
重要: 虽然必须在 UNIX 上使用原始磁盘设备来获得更好的性能,但是在用于熟写入的 I/O
高速缓存方面的最新进步也可以提供相似的性能(即使不是最好的性能)。要确定最佳设备性
能,请在同时带有数据库空间和表布局两类设备的系统上执行基准测试。
要为数据库服务器分配磁盘,请执行以下操作:
1. 为每个磁盘配置原始磁盘设备。
2. 创建标准的设备名或文件名。
3. 为每个原始磁盘设备设置权限、所有权和组。
熟文件
如果不要求最佳性能,那么可以将数据库服务器配置为在熟文件中存储数据。熟文件比原
始磁盘设备更容易设置。
设置许可权、所有权和组
数据库服务器使用的文件或原始磁盘设备必须有适当的所有权和权限。
仅限 UNIX: 在 UNIX™ 上,所有者和组必须是 gbasedbt,并且这些权限必须设置为允
许用户和组(但不包括其他)进行读写。
如果希望非 Gbasedbt 或 root 的用户运行 ON-Bar 命令,请创 bargroup 组。只有
bargroup 的成员可以运行 ON-Bar 命令。bargroup 组不会在数据库服务器安装期间自动
创建。有关创建组的指示信息,请参阅《GBase 8s for UNIX, Linux™, and Mac OS X 安
装指南》或 UNIX 文档。
创建标准设备名 (UNIX)
使用符号链接为每个原始磁盘设备指定缩写的标准设备名。如果拥有符号链接,那么可以
使用新磁盘通过为该新磁盘指定符号名来替换发生故障的磁盘。
要在字符专用设备名和另一个文件名之间创建链接,
请使用 UNIX™ 链接命令
(通常为 ln)


在设备目录上运行 UNIX 命令 ls -l 以便验证这些设备和链接都已存在。
以下示例显示到原
始设备的链接。如果您的操作系统不支持符号链接,那么可以使用硬链接。

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 9 -
ls -l
crw-rw--- /dev/rxy0h
crw-rw--- /dev/rxy0a
lrwxrwxrwx /dev/my_root@->/dev/rxy0h
lrwxrwxrwx /dev/raw_dev2@->/dev/rxy0a