梧桐數(shù)據(jù)庫(kù)與GBase建表方式比較

一、前言

??不同的數(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ù)的需求。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容