OushuDB学习笔记
OushuDB 存储格式:
AO ORC Magma
行存储 行列混合存储 行列混合存储
不支持 UPDATE/DELETE 支持 支持
不支持 INDEX 不支持 支持
默认创建的是 AO 表
CREATE TABLE rank1 (id int, rank int, year smallint,gender char(1), count int );
和上面的创建的表一样,显式指定存储格式类型
CREATE TABLE rank2 (id int, rank int, year smallint,gender char(1), count int ) with (appendonly =true, orientation =row);
创建一个 snappy 压缩的 AO 表
CREATE TABLE rank3 (id int, rank int, year smallint,gender char(1), count int ) with (appendonly =true, orientation =row, compresstype = snappy);
创建一个 snappy 压缩的 Parquet 表,如果不指定压缩类型的话,默认不压缩。
CREATE TABLE rank3 (id int, rank int, year smallint,gender char(1), count int ) with (appendonly =true, orientation =parquet, compresstype = snappy);
创建一个不压缩的 ORC 表,如果不指定压缩类型的话,默认不压缩。
CREATE TABLE rank3 (id int, rank int, year smallint,gender char(1), count int ) with (appendonly =true, orientation =orc);
创建一个带压缩的 ORC 表,需指定压缩类型。
CREATE TABLE rank3 (id int, rank int, year smallint,gender char(1), count int ) with (appendonly =true, orientation =orc, compresstype = lz4);
创建一个压缩的 magma 表, magma 内部自动实现了压缩。
CREATE TABLE rank3 (id int, rank int, year smallint,gender char(1), count int ) format 'magmaap';
创建一个有 primary key 的 magma 表, magma 内部自动实现了压缩。
CREATE TABLE rank3 (id int, rank int, year smallint,gender char(1), count int,primary key(id) ) format 'magmaap';
启动 HDFS:start-dfs.sh
启动 OushuDB 集群:hawq start cluster -a --with_magma
查看现有数据库集合:\l(psql 程序)
SELECT datname FROM pg-database;
创建数据库:CREATE DATABASE name;(当前角色自动成为此新数据库的所有者)
createdb dbname;(shell 中)
为他人创建数据库(数据库的超级用户才有权力):CREATE DATABASE dbname OWNER rolename;
createdb -O rolename dbname;
删除数据库:DROP DATABASE name;(只有超级用户或此数据库所有者才能删除,且删除数据库里全部对象,操作不可逆)
dropdb dbname;
创建表:CREATE TABLE products (
product_no integer,
name text,
price numeric
);
删除表:DROP TABLE products;
插入数据:INSERT INTO tname VALUES (value1,value2,...);
INSERT INTO tname (name1,name2,...) VALUES (value1,value2,...);
INSERT INTO products (product_no, name, price) VALUES
(1, 'Cheese', 9.99),
(2, 'Bread', 1.99),
(3, 'Milk', 2.99);
更新数据:UPDATE products SET price = 10 WHERE price = 5;
UPDATE mytable SET a = 5, b = 3, c = 1 WHERE a > 0;
删除数据:DELETE FROM products WHERE price = 10;
DELETE FROM products;
缺省值(MAGMA 格式的表不支持):CREATE TABLE products (
product_no integer,
name text,
price numeric DEFAULT 9.99
);
列约束与表约束(MAGMA 格式的表不支持列约束):CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0),
discounted_price numeric,
CHECK (discounted_price > 0 AND price > discounted_price)
);
命名约束:CREATE TABLE products (
product_no integer,
name text,
price numeric CONSTRAINT positive_price CHECK (price > 0)
);
非空约束(MAGMA 格式的表不支持非空约束):CREATE TABLE products (
product_no integer NOT NULL,
name text NOT NULL,
price numeric
);
主键约束(只有 MAGMA 表支持主键约束):CREATE TABLE products (
product_no integer,
name text,
price numeric,
PRIMARY KEY (product_no)
) FORMAT 'MAGMAAP';
增加列(仅 AO 格式支持,AO 格式的表在添加新列时必须设置缺省值):ALTER TABLE products ADD COLUMN description text DEFAULT value;
删除列(仅 AO 格式支持):ALTER TABLE products DROP COLUMN description;
增加表约束(AO/ORC 格式支持):ALTER TABLE products ADD CHECK (name <> '');
增加列约束(AO/ORC 格式支持):ALTER TABLE products ALTER COLUMN product_no SET NOT NULL;
删除约束(AO/ORC 格式支持):ALTER TABLE products DROP CONSTRAINT some_name;
ALTER TABLE products ALTER COLUMN product_no DROP NOT NULL;
改变列的缺省值(仅 AO 格式的表支持):ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;
ALTER TABLE products ALTER COLUMN price DROP DEFAULT;
改变列的数据类型(仅 AO 格式的表支持):ALTER TABLE products ALTER COLUMN price TYPE numeric(10,2);
重命名列(仅 AO 格式的表支持):ALTER TABLE products RENAME COLUMN product_no TO product-number;
重命名表(AO/ORC 格式支持):ALTER TABLE products RENAME TO items;
继承(都支持):CREATE TABLE cities (
name text,
population float,
altitude int -- in feet
);
CREATE TABLE capitals (
state char(2)
) INHERITS (cities);