虽然TimesTen在数据类型上和Oracle数据库基本兼容,但由于毕竟是两个不同的产品,在TimesTen中存在着一些自己独有的数据类型,比如以 TT_ 开头的一些数据类型,如TT_TINYINT,TT_DATE等。拿TT_INTEGER来说,可以在TT中定义为TT_INTEGER,也可以定义为INT,还可以定义为Number(*),这几种定义方式可能都适合具体的需求,那么哪一种才是最好的选择呢?
在TimesTen中,独有的数据类型且区别比较大的有如下几种以及相对应的oracle数据类型:
TimesTen类型 | 所占空间[Byte] | 对应的Oracle类型 | 所占空间[Byte] |
TT_TINYINT | 1 | INT | 38 |
TT_SMALLINT | 2 | INT | 38 |
TT_INT[EGER] | 4 | INT | 38 |
TT_BIGINT | 8 | INT | 38 |
NUMBER | 5~22 | NUMBER | 5~22 |
上面几种单独列出来的原因是,以TT_开头的几种数据类型比传统的Oracle数据类型空间上更紧凑,性能上更好。所以如果可能的话,从空间,以及性能上考虑,建议选择以TT_开头的上述几种类型。但要注意选择好对应的TT_类型,而不要因为选择不当导致长度不够,从而引起数据的丢失。比如说,如果原来的表中某个字段定义为Number(15),那么对应过来,只能选择TT_BIGINT。
但对其它的,比如TT_DATE,TT_TIMESTAMP,TT_TIMESTAMP,TT_DECIMAL,TT_NVARCHAR,TT_VARCHAR,TT_CHAR等则无所谓,定义为TimesTen的或者Oracle的都可以。