DBAplus社群 openGauss魔改PG?它能兼容Oracle的数据库表吗?( 四 )


LINE2:PARTITIONBYHASH(deptno)
4、复合分区
对于分区表来说 , 数据倾斜的问题通常是最头疼的 。 为了解决这个问题 , Oracle提供了复合分区的功能 。 复合分区是先使用范围分区 , 然后在每个分区内再使用散列分区/列表分区的一种分区方法 。 不过目前版本openGauss无法支持复合分区 。
postgres=#CREATETABLEt_sub_partition
(dept_nonumber,countryvarchar2(20),sale_datedate)
PARTITIONBYRANGE(sale_date)
SUBPARTITIONBYLIST(country)
(PARTITIONq1_2012VALUESLESSTHAN('2012-Apr-01')
(SUBPARTITIONq1_europeVALUES('FRANCE','ITALY'),
SUBPARTITIONq1_asiaVALUES('INDIA','PAKISTAN'),
SUBPARTITIONq1_americasVALUES('US','CANADA')),
PARTITIONq2_2012VALUESLESSTHAN('2012-Jul-01')
(SUBPARTITIONq2_europeVALUES('FRANCE','ITALY'),
SUBPARTITIONq2_asiaVALUES('INDIA','PAKISTAN'),
SUBPARTITIONq2_americasVALUES('US','CANADA')),
PARTITIONq3_2012VALUESLESSTHAN('2012-Oct-01')
(SUBPARTITIONq3_europeVALUES('FRANCE','ITALY'),
SUBPARTITIONq3_asiaVALUES('INDIA','PAKISTAN'),
SUBPARTITIONq3_americasVALUES('US','CANADA')),
PARTITIONq4_2012VALUESLESSTHAN('2013-Jan-01')
(SUBPARTITIONq4_europeVALUES('FRANCE','ITALY'),
SUBPARTITIONq4_asiaVALUES('INDIA','PAKISTAN'),
SUBPARTITIONq4_americasVALUES('US','CANADA')));
ERROR:syntaxerroratornear"SUBPARTITION"
LINE3:SUBPARTITIONBYLIST(country)七、嵌套表
嵌套表类似C语言中的结构体 , 可以把一个表结构定义为一个类型 , 在创建其他表的时候 , 可以将字段类型指向这个自定义类型 。 openGauss中可以通过createtype进行嵌套表定义 。
postgres=#CREATETYPEt_typeAS(f1int,f2text);
CREATETYPE
postgres=#CREATETABLEt_compfoo(aint,bt_type);
CREATETABLE总结
总体而言 , openGauss兼容Oracle常用表类型 , 索引组织表需要用集群索引方式进行改造 。 对于少数非常用数据类型 , 需要进行少量代码改造 , 可采取下列替代方案进行替换 。
DBAplus社群 openGauss魔改PG?它能兼容Oracle的数据库表吗?
文章图片
openGauss可替代Oracle吗?从字段类型说起……