一、前言
??不同的數(shù)據(jù)庫(kù)建表有各自的特點(diǎn),以下簡(jiǎn)單對(duì)比梧桐數(shù)據(jù)庫(kù)與GBase在建表上的特點(diǎn)與不同。
二、Gbase數(shù)據(jù)庫(kù)建表
??在GBase數(shù)據(jù)庫(kù)中,創(chuàng)建表的語(yǔ)法與標(biāo)準(zhǔn)SQL類似,以下結(jié)合具體實(shí)例介紹相關(guān)語(yǔ)法:
建表示例:
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、數(shù)據(jù)類型:
varchar(): 可變長(zhǎng)字符串;char(): 定長(zhǎng)字符串;int: 整型;decimal(10,2): 浮點(diǎn)型,10為數(shù)據(jù)長(zhǎng)度,2為數(shù)值精度,保留小數(shù)后兩位;date: 日期類型;timestamp: 時(shí)間戳類型;
2、建表參數(shù)解釋:
DISTRIBUTED BY: 設(shè)置分布??;COMPRESS(5,5): 設(shè)置壓縮存儲(chǔ)模式,第一個(gè)5設(shè)置壓縮算法,此處為快速壓縮,第二個(gè)5設(shè)置壓縮等級(jí),壓縮等級(jí)取值0-9,其中0為默認(rèn)級(jí)別,1表示壓縮比最低、壓縮和解壓縮速度最快,9表示壓縮比最高、壓縮和解壓縮速度最慢;TABLESPACE: 指定表空間;PRIMARY KEY: 設(shè)置表的主鍵,確保數(shù)據(jù)的唯一性;default: 設(shè)置字段默認(rèn)值;not null: 設(shè)置字段為非空;
3、創(chuàng)建分區(qū)表
partition by list(sale_date): 根據(jù)sale_date字段的值創(chuàng)建list分區(qū);partition p20241030 values in (20241030): 分區(qū)名為p20241030,指定分區(qū)值20241030;
4、修改表結(jié)構(gòu)
- 添加列:
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;
三、梧桐數(shù)據(jù)庫(kù)建表
??梧桐數(shù)據(jù)庫(kù)建表語(yǔ)法類似于GP數(shù)據(jù)庫(kù),以下同樣結(jié)合具體實(shí)例介紹:
建表示例:
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、數(shù)據(jù)類型:
character varying(): 可變長(zhǎng)字符串;integer: 整型;numeric(10,2): 浮點(diǎn)型,10為數(shù)據(jù)長(zhǎng)度,2為數(shù)值精度,保留小數(shù)后兩位;date: 日期類型;timestamp: 時(shí)間戳類型;
2、建表參數(shù)解釋:
DISTRIBUTED BY: 設(shè)置分布??;PRIMARY KEY: 設(shè)置表的主鍵,等價(jià)于唯一約束和非空約束的結(jié)合;unique: 設(shè)置唯一性約束,確保一列或一組列中包含的數(shù)據(jù)在表中的所有行中是唯一的;default: 設(shè)置字段默認(rèn)值;not null: 設(shè)置字段為非空;ORIENTATION: 設(shè)置表存儲(chǔ)格式;
注
orc是基于 HDFS 存儲(chǔ)的表格式,其數(shù)據(jù)文件同樣主要以ORC格式呈現(xiàn)
MAGMA是梧桐數(shù)據(jù)庫(kù)自研的一種存儲(chǔ)格式,其底層采用開(kāi)源的 ORC 格式的行列混合存儲(chǔ),有效地兼顧了分析型任務(wù)與交易型任務(wù)的需求
3、創(chuàng)建分區(qū)表
-
partition by list(sale_date): 根據(jù)sale_date字段的值創(chuàng)建列表分區(qū);
4、修改表結(jié)構(gòu)
- 添加列:
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;
四、總結(jié)
??通過(guò)以上對(duì)比梧桐數(shù)據(jù)庫(kù)與Gbase數(shù)據(jù)庫(kù)的建表及表操作,兩者與標(biāo)準(zhǔn)的建表語(yǔ)法基本類似,在創(chuàng)建分區(qū)表及設(shè)置表存儲(chǔ)結(jié)構(gòu)時(shí)有些微差異;在存儲(chǔ)格式上梧桐數(shù)據(jù)庫(kù)較傳統(tǒng)的MPP分析型數(shù)據(jù)庫(kù)有所不同,底層的存儲(chǔ)為HDFS,所以有自己獨(dú)特存儲(chǔ)格式,用來(lái)滿足分析型任務(wù)與交易型任務(wù)的需求。