一、前言
??不同的數(shù)據(jù)庫建表有各自的特點(diǎn),以下簡單對比梧桐數(shù)據(jù)庫與GBase在建表上的特點(diǎn)與不同照宝。
二呻顽、Gbase數(shù)據(jù)庫建表
??在GBase數(shù)據(jù)庫中雹顺,創(chuàng)建表的語法與標(biāo)準(zhǔn)SQL類似,以下結(jié)合具體實(shí)例介紹相關(guān)語法:
建表示例:
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()
: 可變長字符串嬉愧;char()
: 定長字符串;int
: 整型喉前;decimal(10,2)
: 浮點(diǎn)型没酣,10
為數(shù)據(jù)長度,2
為數(shù)值精度卵迂,保留小數(shù)后兩位裕便;date
: 日期類型;timestamp
: 時(shí)間戳類型见咒;
2偿衰、建表參數(shù)解釋:
DISTRIBUTED BY
: 設(shè)置分布健改览;COMPRESS(5,5)
: 設(shè)置壓縮存儲(chǔ)模式下翎,第一個(gè)5
設(shè)置壓縮算法,此處為快速壓縮宝当,第二個(gè)5
設(shè)置壓縮等級漏设,壓縮等級取值0-9,其中0為默認(rèn)級別今妄,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ù)庫建表
??梧桐數(shù)據(jù)庫建表語法類似于GP數(shù)據(jù)庫杆怕,以下同樣結(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()
: 可變長字符串;integer
: 整型陵珍;numeric(10,2)
: 浮點(diǎn)型寝杖,10
為數(shù)據(jù)長度,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ù)庫自研的一種存儲(chǔ)格式扯键,其底層采用開源的 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é)
??通過以上對比梧桐數(shù)據(jù)庫與Gbase數(shù)據(jù)庫的建表及表操作厉亏,兩者與標(biāo)準(zhǔn)的建表語法基本類似董习,在創(chuàng)建分區(qū)表及設(shè)置表存儲(chǔ)結(jié)構(gòu)時(shí)有些微差異;在存儲(chǔ)格式上梧桐數(shù)據(jù)庫較傳統(tǒng)的MPP分析型數(shù)據(jù)庫有所不同爱只,底層的存儲(chǔ)為HDFS皿淋,所以有自己獨(dú)特存儲(chǔ)格式,用來滿足分析型任務(wù)與交易型任務(wù)的需求恬试。