返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

Efficient Transparent Compression
Efficient and transparent compression technology can automatically select the
optimal compression algorithm based on data type and distribution, minimizing the
storage
space
required,
reducing
I/O
consumption,
and
improving
query
performance. It supports compression options at the library, table, and column levels,
balancing performance and compression ratio flexibly, and the compression and
decompression process is transparent to users.
From the perspective of saving I/O resources, for analysis systems where I/O is the
main bottleneck, efficient and transparent compression technology can bring about a
performance improvement of about an order of magnitude compared to traditional
row-based databases.

GBase 8a MPP Cluster Technical White Paper
General Data Technology Co., Ltd.
- 11 -
Figure 3-2. Adaptive Transparent Compression Diagram.
1)
Compression ratio can reach 1:2 to 1:20 or even better, much higher than
row storage;
2)
Save 50% to 95% of storage space, greatly reducing data processing
energy consumption;
3)
Built-in
dozens
of
different
levels
of
compression
algorithms,
automatically select the best compression algorithm according to data
characteristics;
4)
The I/O requirements are greatly reduced in the compressed state, and data
loading and query performance are significantly improved.

当使用 UDTManager 和 UDRManager 类在数据库中创建不透明类型和 Java™ UDR 时,驱
动程序映射 Java 方法参数并根据本节中的表返回类型的 SQL数据类型。不支持未在这些
表中显示的任何数据类型。
如果 Java™ 方法具有以下任何 Java 类型的参数,则参数和返回类型将映射到服务器中的
SQL 类型,如下表所示。该表显示每个 Java 数据类型映射到的 GBase 8s 数据类型。
Java 数据类型
SQL 数据类型
boolean, java.lang.Boolean
BOOLEAN
char
CHAR(1)

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

Java 数据类型
SQL 数据类型
byte
CHAR(1)
short, java.lang.Short
SMALLINT
int, java.lang.Integer
INT
long, java.lang.Long
INT8
float, java.lang.Float
SMALLFLOAT
double, java.lang.Double
FLOAT1
java.lang.String
LVARCHAR
java.math.BigDecimal
DECIMAL
缺省精度由服务器设置:ANSI 数据库为
DECIMAL(16,0) ;非 ANSI 数据库为 decimal (16,255)
java.sql.Date
DATE
java.sql.Time
DATETIME HOUR TO SECOND
java.sql.Timestamp
DATETIME YEAR TO FRACTION(5)
com.gbasedbt.lang.IntervalY
M
INTERVAL YEAR TO MONTH
com.gbasedbt.lang.IntervalD
F
INTERVAL DAY TO FRACTION(5)
java.sql.Blob
BLOB
java.sql.Clob
CLOB
1 此映射是 JDBC 兼容的。通过将 IFX_GET_SMFLOAT_AS_FLOAT 环境变量设置为 1,
可以将 Java double 数据类型(通过 JDBC FLOAT 数据类型)映射到 GBase
8s SMALLFLOAT 数据类型以实现向后兼容。
映射转换类型
下表显示了在 UDTMetaData.setXXXCast() 方法中为 ifxtype 参数定义的类型与服务器中的
SQL 数据类型之间支持的映射。
来自 com.gbasedbt.lang.IfxTypes 的 ifxtype 参数类

GBase 8s 数据类

IFX_TYPE_CHAR
CHAR
IFX_TYPE_SMALLINT
SMALLINT

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

来自 com.gbasedbt.lang.IfxTypes 的 ifxtype 参数类

GBase 8s 数据类

IFX_TYPE_INT
INT
IFX_TYPE_FLOAT
FLOAT
IFX_TYPE_SMFLOAT
SMALLFLOAT
IFX_TYPE_DECIMAL
DECIMAL
IFX_TYPE_SERIAL
SERIAL
IFX_TYPE_DATE
DATE
IFX_TYPE_MONEY
MONEY
IFX_TYPE_DATETIME
DATETIME
IFX_TYPE_BYTE
BYTE
IFX_TYPE_TEXT
TEXT
IFX_TYPE_VARCHAR
VARCHAR
IFX_TYPE_INTERVAL
INTERVAL
IFX_TYPE_NCHAR
NCHAR
IFX_TYPE_NVARCHAR
NVARCHAR
IFX_TYPE_INT8
INT8
IFX_TYPE_SERIAL8
SERIAL8
IFX_TYPE_LVARCHAR
LVARCHAR
IFX_TYPE_SENDRECV
SENDRECV
IFX_TYPE_BOOL
BOOLEAN
IFX_TYPE_IMPEXP
IMPEXP
IFX_TYPE_IMPEXPBIN
IMPEXPBIN
IFX_TYPE_CLOB
CLOB
IFX_TYPE_BLOB
BLOB
映射字段类型
下表显示了在 UDTMetaData.setFieldType() 方法中为 ifxtype 参数定义的类型与在 Java™ 类
文件中出现的 Java 数据类型之间支持的映射。
未在此表中显示的数据类型在不透明类型中
不支持。

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

来自
com.gbasedbt.lang.IfxTypes 的
ifxtype 参数类型
Java 数据类型
IFX_TYPE_BIGINT
long
IFX_TYPE_BIGSERIAL
long
IFX_TYPE_CHAR
java.lang.String
IFX_TYPE_SMALLINT
short
IFX_TYPE_INT
int
IFX_TYPE_FLOAT
double
IFX_TYPE_SMFLOAT
float1
IFX_TYPE_DECIMAL
java.lang.BigDecimal
IFX_TYPE_SERIAL
int
IFX_TYPE_DATE
Date
IFX_TYPE_MONEY
java.lang.BigDecimal
IFX_TYPE_DATETIME
如果起始限定符为年、月或日,则为
java.lang.Timestamp ;
否则为 java.lang.Time
(请
参阅 字段长度和 DATETIME 数据)。
IFX_TYPE_INTERVAL
如果起始限定符为年、月或日,则为
com.gbasedbt.lang.IfxIntervalYM;否则为
com.gbasedbt.lang.IfxIntervalDF (请参阅 字段
长度和 DATETIME 数据)。
IFX_TYPE_NCHAR
java.lang.String
IFX_TYPE_INT8
long
IFX_TYPE_SERIAL8
long
IFX_TYPE_BOOL
boolean
IFX_TYPE_CLOB
java.sql.Clob
IFX_TYPE_BLOB
java.sql.Blob
1 此映射是 JDBC 兼容的。通过将 IFX_GET_SMFLOAT_AS_FLOAT 环境变量设置为 1,
将 IFX_TYPE_SMFLOAT 数据类型(通过 JDBC FLOAT 数据类型)映射到 Java double
数据类型以实现向后兼容。
字段长度和 DATETIME 数据

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

当通过调
用 setFieldType(IFX_TYPE_DATETIME) 或 setFieldType(IFX_TYPE_INTERVAL) 将字段类
型设置为 date-time 或 interval 数据类型时,驱动程序会将 date-time 字段映射
为 java.sql.Timestamp 或 java.sql.Time,这取决于调用 setFieldLength() 时设置的编码长度。
例如,给出一个 date-time 字段的标准格式为 YYYY-MM-DD HH:MM:SS,驱动程序会使
用以下映射算法:

如果编码长度具有 hour 或更小的起始码,则会映射为 java.sql.Time。

如果编码长度具有 year 或更小的起始码,则会映射为 java.sql.TimeStamp。
对于 interval,标准为 YYYY-MM 或 DD HH:MM:SS.frac。其映射如下:

如果编码长度具有 day 或更小的起始码,则它映射
为 com.gbasedbt.jdbc.IfxIntervalDF。

如果编码长度具有 year 或更小的起始码,则它映射
为 com.gbasedbt.jdbc.IfxIntervalYM。


GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
62