发布于

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);
评论
    test