梧桐数据库与GBase建表方式比较
一、前言
不同的数据库建表有各自的特点,以下简单对比梧桐数据库与GBase在建表上的特点与不同。
二、Gbase数据库建表
在GBase数据库中,创建表的语法与标准SQL类似,以下结合具体实例介绍相关语法:
建表示例:
CREATE TABLE prod_sale (
prod_id varchar(10) PRIMARY KEY,
prod_name varchar(10) default null,
sale_date date not null,
sale_cnt int,
sale_time timestamp,
sale_fee decimal(12,2)
) COMPRESS(5,5) ENGINE = EXPRESS
DISTRIBUTED BY('prod_id') DEFAULT CHARSET = utf8 TABLESPACE = 'sys_tablespace'
partition by list(sale_date)
(partition p20241030 values in (20241030));
1、数据类型:
-
varchar()
: 可变长字符串; -
char()
: 定长字符串; -
int
: 整型; -
decimal(10,2)
: 浮点型,10
为数据长度,2
为数值精度,保留小数后两位; -
date
: 日期类型; -
timestamp
: 时间戳类型;
2、建表参数解释:
-
DISTRIBUTED BY
: 设置分布健; -
COMPRESS(5,5)
: 设置压缩存储模式,第一个5
设置压缩算法,此处为快速压缩,第二个5
设置压缩等级,压缩等级取值0-9,其中0为默认级别,1表示压缩比最低、压缩和解压缩速度最快,9表示压缩比最高、压缩和解压缩速度最慢; -
TABLESPACE
: 指定表空间; -
PRIMARY KEY
: 设置表的主键,确保数据的唯一性; -
default
: 设置字段默认值; -
not null
: 设置字段为非空;
3、创建分区表
-
partition by list(sale_date)
: 根据sale_date
字段的值创建list分区; -
partition p20241030 values in (20241030)
: 分区名为p20241030
,指定分区值20241030
;
4、修改表结构
- 添加列:
alter table table_name ADD COLUMN column_name column_type`
- 修改列类型:
ALTER TABLE table_name ALTER COLUMN column_name TYPE new_type;
- 删除列:
ALTER TABLE table_name DROP COLUMN column_name;
- 重命名表名:
ALTER TABLE old_table_name RENAME TO new_table_name;
三、梧桐数据库建表
梧桐数据库建表语法类似于GP数据库,以下同样结合具体实例介绍:
建表示例:
CREATE TABLE prod_sale (
prod_id character varying(10) PRIMARY KEY,
prod_name character varying(10) unique,
sale_date date not null,
sale_cnt int check( sale_cnt > 0 ),
sale_time timestamp,
sale_fee numeric(12,2) default null
) WITH (APPENDONLY = true, ORIENTATION = orc/magma) TABLESPACE dfs_default
partition by values (sale_date);
1、数据类型:
-
character varying()
: 可变长字符串; -
integer
: 整型; -
numeric(10,2)
: 浮点型,10
为数据长度,2
为数值精度,保留小数后两位; -
date
: 日期类型; -
timestamp
: 时间戳类型;
2、建表参数解释:
-
DISTRIBUTED BY
: 设置分布健; -
PRIMARY KEY
: 设置表的主键,等价于唯一约束和非空约束的结合; -
unique
: 设置唯一性约束,确保一列或一组列中包含的数据在表中的所有行中是唯一的; -
default
: 设置字段默认值; -
not null
: 设置字段为非空; -
ORIENTATION
: 设置表存储格式;
注
orc
是基于 HDFS 存储的表格式,其数据文件同样主要以ORC
格式呈现
MAGMA
是梧桐数据库自研的一种存储格式,其底层采用开源的 ORC 格式的行列混合存储,有效地兼顾了分析型任务与交易型任务的需求
3、创建分区表
partition by list(sale_date)
: 根据sale_date
字段的值创建列表分区;
4、修改表结构
- 添加列:
alter table table_name ADD COLUMN column_name column_type`
- 修改列类型:
ALTER TABLE table_name ALTER COLUMN column_name TYPE new_type;
- 删除列:
ALTER TABLE table_name DROP COLUMN column_name;
- 重命名表名:
ALTER TABLE old_table_name RENAME TO new_table_name;
四、总结
通过以上对比梧桐数据库与Gbase数据库的建表及表操作,两者与标准的建表语法基本类似,在创建分区表及设置表存储结构时有些微差异;在存储格式上梧桐数据库较传统的MPP分析型数据库有所不同,底层的存储为HDFS,所以有自己独特存储格式,用来满足分析型任务与交易型任务的需求。