openGauss魔改PG?它能兼容Oracle的数据库表吗?( 四 )
LINE 6: PARTITION BY LIST (state)
3、散列分区
散列(HASH)分区通过在分区键值上执行一个散列函数来说决定数据的物理位置 。 散列分区把记录分布在比范围分区更多的分区上 , 这减少了I/O争用的可能性 。 openGauss当前版本无法支持散列(HASH)分区 。
postgres=# CREATE TABLE t_hash_partition
(deptno NUMBER, deptname VARCHAR(32))
PARTITION BY HASH(deptno)
(PARTITION p1 TABLESPACE pg_default, PARTITION p2 TABLESPACE pg_default,
PARTITION p3 TABLESPACE pg_default, PARTITION p4 TABLESPACE pg_default);
ERROR: syntax error at or near "HASH"
LINE 2: PARTITION BY HASH(deptno)
4、复合分区
对于分区表来说 , 数据倾斜的问题通常是最头疼的 。 为了解决这个问题 , Oracle提供了复合分区的功能 。 复合分区是先使用范围分区 , 然后在每个分区内再使用散列分区/列表分区的一种分区方法 。 不过目前版本openGauss无法支持复合分区 。
postgres=# CREATE TABLE t_sub_partition
( dept_no number, country varchar2(20), sale_date date)
PARTITION BY RANGE(sale_date)
SUBPARTITION BY LIST(country)
( PARTITION q1_2012 VALUES LESS THAN('2012-Apr-01')
( SUBPARTITION q1_europe VALUES ('FRANCE', 'ITALY'),
SUBPARTITION q1_asia VALUES ('INDIA', 'PAKISTAN'),
SUBPARTITION q1_americas VALUES ('US', 'CANADA') ),
PARTITION q2_2012 VALUES LESS THAN('2012-Jul-01')
( SUBPARTITION q2_europe VALUES ('FRANCE', 'ITALY'),
SUBPARTITION q2_asia VALUES ('INDIA', 'PAKISTAN'),
SUBPARTITION q2_americas VALUES ('US', 'CANADA') ),
PARTITION q3_2012 VALUES LESS THAN('2012-Oct-01')
( SUBPARTITION q3_europe VALUES ('FRANCE', 'ITALY'),
SUBPARTITION q3_asia VALUES ('INDIA', 'PAKISTAN'),
SUBPARTITION q3_americas VALUES ('US', 'CANADA') ),
PARTITION q4_2012 VALUES LESS THAN('2013-Jan-01')
( SUBPARTITION q4_europe VALUES ('FRANCE', 'ITALY'),
SUBPARTITION q4_asia VALUES ('INDIA', 'PAKISTAN'),
SUBPARTITION q4_americas VALUES ('US', 'CANADA') ) );
ERROR: syntax error at or near "SUBPARTITION"
LINE 3: SUBPARTITION BY LIST(country)
七、嵌套表
嵌套表类似C语言中的结构体 , 可以把一个表结构定义为一个类型 , 在创建其他表的时候 , 可以将字段类型指向这个自定义类型 。 openGauss中可以通过create type进行嵌套表定义 。
postgres=# CREATE TYPE t_type AS (f1 int, f2 text);
CREATE TYPE
postgres=# CREATE TABLE t_compfoo(a int, b t_type);
CREATE TABLE
总结
总体而言 , openGauss兼容Oracle常用表类型 , 索引组织表需要用集群索引方式进行改造 。 对于少数非常用数据类型 , 需要进行少量代码改造 , 可采取下列替代方案进行替换 。
表类型
是否兼容
备注
堆表
全部兼容
临时表
全部兼容
表压缩
部分兼容
支持普通压缩模式 , 有DELTA、PREFIX、DICTIONARY、NUMSTR四种压缩算法供选择
索引组织表
不兼容
不支持
簇表
不兼容
不支持 , 部分情况可以考虑用partial cluster key替代
分区表
部分兼容
只支持范围分区
嵌套表
功能兼容 , 但语法有部分改变
相关阅读:
- openGauss可替代Oracle吗?从字段类型说起……
推荐阅读
- 难怪卫星锅被禁用,都看看它能看到什么内容?真是大开眼界
- 矿渣魔改齐上阵,一台低价黑果机是怎样练成的
- 为什么“卫星锅”被我国限制安装,它能看到什么?都是为了我们好
- 为何女机器人很受到人们的欢迎,它能做什么?原因其实很简单
- iPhone 12来了,它能否成功引爆5G?
- 华强北“iPhone 11魔改iPhone 12”来了
- 旧手机的第二春!魔改+刷机帮你变废为宝,安卓党的福音
- 关系型数据库管理系统openGauss 1.0.1版本发布
- |认识它能与蛇共眠,果实酷似樱桃,真神奇的植物
- 卫星|为何禁止“卫星锅”使用,它能看到什么?原来为了我们着想!