HAWQ 官方文档创建filespace,tablespace,database,table

时间:2022-04-13 16:10:44

1.创建Filespace

创建Filespace必须是数据库超级用户( You must be a database superuser to create a filespace.)
首先创建一个filespace的配置文件:

[hadoop@hadoop hawq]$ hawq filespace -o hawqfilespace_config  #生成配置文件,只要配置了环境变量命令可以在任何目录下运行
Enter a name for this filespace
> testfs    #输入filespace的名称
Enter replica num for filespace. If 0, default replica num is used (default=3)
>     #设置副本个数

Please specify the DFS location for the filespace (for example: localhost:9000/fs)
location> localhost:9000/testfs #输入创建这个filespace文件在HDFS上的位置,最终会生成目录:localhost:9000/testfs/testfs
20170401:10:23:39:133234 hawqfilespace:hadoop:hadoop-[INFO]:-[created]
20170401:10:23:39:133234 hawqfilespace:hadoop:hadoop-[INFO]:-
To add this filespace to the database please run the command:
   hawqfilespace --config /home/hadoop/note/hawq/hawqfilespace_config

[hadoop@hadoop hawq]$ cat /home/hadoop/note/hawq/hawqfilespace_config    #可以查看下配置文件的内容
filespace:testfs
fsreplica:3
dfs_url::localhost:9000/testfs[hadoop@hadoop hawq]$
[hadoop@hadoop hawq]$ hawq filespace --config /home/hadoop/note/hawq/hawqfilespace_config    #使用命令进行创建
Reading Configuration file: '/home/hadoop/note/hawq/hawqfilespace_config'

CREATE FILESPACE testfs ON hdfs
('localhost:9000/testfs/testfs') WITH (NUMREPLICA = 3);
20170401:10:25:29:133433 hawqfilespace:hadoop:hadoop-[INFO]:-Connecting to database
20170401:10:25:29:133433 hawqfilespace:hadoop:hadoop-[INFO]:-Filespace "testfs" successfully created    #创建成功
[hadoop@hadoop hawq]$

通过浏览器查看我们我们刚才生成的目录:
http://localhost:50070/explorer.html#/testfs/testfs

创建filespace成功,可以使用命令基于配置文件再次创建:
[hadoop@hadoop hawq]$ hawq filespace -c hawqfilespace_config

2.创建表空间
hadoop=# CREATE TABLESPACE testts FILESPACE testfs; #创建表空间并指定文件空间
CREATE TABLESPACE
可以查看刚才创建的表空间
hadoop=# \db
         List of tablespaces
    Name     | Owner  | Filespae Name
-------------+--------+---------------
 dfs_default | hadoop | dfs_system
 pg_default  | hadoop | pg_system
 pg_global   | hadoop | pg_system
 testts      | hadoop | testfs        #创建表空间及对应的文件空间
(4 rows)

可以使用如下命令将表空间的访问权限授予某个用户,前提是该用户已经存在
=# GRANT CREATE ON TABLESPACE fastspace TO admin;

创建一张表并指定表空间
hadoop=# CREATE TABLE foo(i int) TABLESPACE testts;
CREATE TABLE
注意:数据库下的表并不一定与库在同一个表空间。
表空间和表是一对多的关系,一个模式下的表可以分布在多个表空间下;
一个数据库下有可以有多个模式,一个模式只属于一个数据库。模式在GP中也被称为Namespace,不同数据库之间的模式没有关系,可以重名。
一个文件空间可以有多个表空间,一个表空间只属于一个文件空间,文件空间和角色之间没有关系。
除了文件空间之外,其他的权限管理都是通过角色来实现,在这些层次结构中,用户必须对上一层有访问权限才能够访问该层的内容。

如果在创建数据库或表时没有指定表空间,会使用默认的表空间,已可以使用如下命令设置某个表空间为默认表空间:
SET default_tablespace = space1;
CREATE TABLE foo(i int);

查看已经存在的表空间和文件空间:
每个HAWQ系统默认存在的表空间
    pg_global:用于共享系统目录。
    pg_default:默认的表空间,默认的存在的数据库template1和tmplate0使用这个表空间。
这些表空间使用的是系统默认的文件空间 pg_system,数据存放目录是在初始化是创建的。

可以查看表空间的定义信息:
hadoop=# SELECT spcname AS tblspc, fsname AS filespc,
          fsedbid AS seg_dbid, fselocation AS datadir
   FROM   pg_tablespace pgts, pg_filespace pgfs,
          pg_filespace_entry pgfse
   WHERE  pgts.spcfsoid=pgfse.fsefsoid
          AND pgfse.fsefsoid=pgfs.oid
   ORDER BY tblspc, seg_dbid;
查询结果:
   tblspc    |  filespc   | seg_dbid |                    datadir                     
-------------+------------+----------+------------------------------------------------
 dfs_default | dfs_system |        0 | hdfs://localhost:9000/hawq_default
 testts      | testfs     |        0 | hdfs://{replica=3}localhost:9000/testfs/testfs
(2 rows)

hadoop=#

移除表空间和文件空间:
    删除表空间:hadoop=# DROP TABLESPACE testts ;
             删除表空间必须是 tablespace owner或者superuser;
             删除表空间间前必须先删除该表空间下的所有对象;
    删除Filespace:hadoop=# DROP FILESPACE testfs;
             只有superuser可以删除文件空间;
             删除文件空间不能有与之关联的表空间;

3.创建和管理数据库(Creating and Managing Databases )

创建数据库:
template1=# CREATE DATABASE testdb WITH TABLESPACE=hawqts; #指定存储表空间为hawqts,如果不指定则使用默认表空噶进
CREATE DATABASE

可以使用客户端程序创建数据库:
$ createdb -h localhost -p 5432 mydatabase #这里的主机名和端口号必须和master节点的主机名和端口对应

可以使用clone的方式根据模板创建数据库:
=# CREATE DATABASE <new_dbname> WITH TEMPLATE template0;

显示所有的databases
可以使用 \l 或使用=# SELECT datname FROM pg_database;
使用第二种方式需要是 superuser

修改数据库
可以使用ALTER DATABASE 修改数据库的owner或name等属性
可以使用ALTER DATABASE 修改数据库默认配置,例如修改search_path
=# ALTER DATABASE mydatabase SET search_path TO myschema, public, pg_catalog;
要修改数据库必须是owner of database or superuser

删除数据库
使用 DROP DATABASE 命令可以删除数据库,即删除数据库的system catalog和删除磁盘上的数据文件。
在删除前需要连接tmplate1或者其他数据库
=# \c template1
=# DROP DATABASE mydatabase;

可以使用客户端程序删除数据库:
$ dropdb -h hmaster -p 5432 mydatabase

注意:删除数据库不能撤销。

4.创建和管理Schema

hadoop=# CREATE SCHEMA myschema;
CREATE SCHEMA

在访问schema中的对象时(Table,View,Index,Sequence,Function),可以前边带上schema名称来做相同对象名称的区分。
例如访问数据表:
=> SELECT * FROM myschema.mytable;

在创建Schema时可以指定所属用户:
hadoop=# CREATE SCHEMA ownby_schema AUTHORIZATION dbuser;
CREATE SCHEMA
hadoop=# \dn
       List of schemas
        Name        | Owner  
--------------------+--------
 hawq_toolkit       | hadoop
 information_schema | hadoop
 myschema           | hadoop
 ownby_schema       | dbuser
 pg_aoseg           | hadoop
 pg_bitmapindex     | hadoop
 pg_catalog         | hadoop
 pg_toast           | hadoop
 public             | hadoop
(9 rows)

在创建具体object(table,views...)时如果没有指定schema,则使用默认schema:public

Schema的查找路径
在访问对象时如果没有指定schema,则会使用默认的查找路径;
可以设置查找路径search_path来修改默认的查找路径,可以同时指定多个schema

hadoop=# ALTER DATABASE postgres SET search_path TO myschema,public,pg_catalog;
ALTER DATABASE
指定后在访问对象时会按照查找路径的配置顺序查找object;

查看当前数据库的Schema
=> SELECT current_schema();

查看当前的查找路径
=> SHOW search_path;

删除Schema
hadoop=# DROP SCHEMA ownby_schema ;
DROP SCHEMA
在删除schema时schema中必须为空才能删除,可以使用CASECADE的方式删除schema同时删除包含的对象:
=> DROP SCHEMA myschema CASCADE;

5.创建和管理Tables

选择合适的列类型:
CHAR,VARCHAR,TEXT都可以应用于string,通常情况使用TEXT,VARCHAR要好于CHAR。

在存储numberic类型数据时,选取的类型越大越浪费空间 BININT > INT > SMALLINT

在使用JOIN 等关联或条件查询时尽量将字段类型保持一致,类型转换会增加不必要的系统负担。

Check Constraints

=> CREATE TABLE products
     ( product_no integer,
       name text,
       price numeric CHECK (price > 0) ); #限制价格大于0

=> CREATE TABLE products
     ( product_no integer NOT NULL,   #非空限制
       name text NOT NULL,
       price numeric );

Foreign Keys

Foreign keys are not supported. You can declare them, but referential integrity is not enforced.

Foreign key constraints specify that the values in a column or a group of columns must match the values appearing in some row of another table to maintain referential integrity between two related tables. Referential integrity checks cannot be enforced between the distributed table segments of a HAWQ database.

HAWQ 官方文档创建filespace,tablespace,database,table的更多相关文章

  1. hawq创建filespace&comma;tablespace&comma;database&comma;table

    使用HAWQ   在HAWQ的使用上跟Greenplum基本就一样一样的了.比如:   1. 创建表空间 #选创建filespace,生成配置文件 [gpadmin@master ~]$ hawq f ...

  2. Spark SQL 官方文档-中文翻译

    Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...

  3. Google Android官方文档进程与线程&lpar;Processes and Threads&rpar;翻译

    android的多线程在开发中已经有使用过了,想再系统地学习一下,找到了android的官方文档,介绍进程与线程的介绍,试着翻译一下. 原文地址:http://developer.android.co ...

  4. 常用SQL&lowbar;官方文档使用

    SQL语句基础理论 SQL是操作和检索关系型数据库的标准语言,标准SQL语句可用于操作关系型数据库. 5大主要类型: ①DQL(Data Query Language,数据查询语言)语句,主要由于se ...

  5. Sqoop 使用详解(内含对官方文档的解析)

    Sqoop 是 Cloudera 公司创造的一个数据同步工具,现在已经完全开源了. 目前已经是 hadoop 生态环境中数据迁移的首选,另外还有 ali 开发的 DataX 属于同类型工具,由于社区的 ...

  6. Spring Data Commons 官方文档学习

    Spring Data Commons 官方文档学习   -by LarryZeal Version 1.12.6.Release, 2017-07-27 为知笔记版本在这里,带格式. Table o ...

  7. 入门常用SQL及官方文档的使用

    SQL语句基础理论 SQL是操作和检索关系型数据库的标准语言,标准SQL语句可用于操作关系型数据库. 5大主要类型: ①DQL(Data Query Language,数据查询语言)语句,主要由于se ...

  8. &lbrack;翻译&rsqb;PyMongo官方文档

    PyMongo官方文档翻译 周煦辰 2016-06-30 这是本人翻译的PyMongo官方文档.现在网上分(抄)享(袭)的PyMongo博客文章很多,一方面这些文章本就是抄袭的,谈不上什么格式美观,另 ...

  9. 【翻译】Django Channels 官方文档 -- Tutorial

    Django Channels 官方文档 https://channels.readthedocs.io/en/latest/index.html 前言: 最近课程设计需要用到 WebSocket,而 ...

随机推荐

  1. Android中使用dimen定义尺寸&lpar;转&rpar;

    (转自:http://blog.csdn.net/yuzhiboyi/article/details/7696174) 最近,遇到了一种定义尺寸的方法,类似于C里面的宏定义一样,其实以前已经见过了这种 ...

  2. Linux下使用vim的tips

    1.如果用户不能确定vi所处的状态,可以按Esc键两次返回初始状态. 2.Fedora 17下安装与配置ssh:http://blog.csdn.net/ashuai81/article/detail ...

  3. js关闭页面&lpar;兼容浏览器&rpar;

    function closewindow() { window.opener = null; window.open("", "_self"); window. ...

  4. 彷徨中的成长-记一个文科生的IT成长过程

    纠结了许久,要不要写这篇文章,然而最终还是写了.就权当总结与呻吟吧..当然,呻吟最开始还是发在自己的站点的,忍不住手贱,还是想发博客园. 1 剧透 人算不如天算:时隔多年,我竟然搞起了前端. 2 发端 ...

  5. nvarchar and nchar

    Same: 1.store unicode charactor. 2. A charactor is stroed with 2 bytes. Different. 1. nchar  会自动填充数据 ...

  6. 利用mk-table-checksum监测Mysql主从数据一致性操作记录

    前面已经提到了mysql主从环境下数据一致性检查:mysql主从同步(3)-percona-toolkit工具(数据一致性监测.延迟监控)使用梳理今天这里再介绍另一种Mysql数据一致性自动检测工具: ...

  7. &lbrack;HNOI2007&rsqb;紧急疏散

    二分+网络流判定 首先处理出每个人和门间的距离 二分时间,连边时把每个门拆成mid个,一个人能在mid时间内到达,他也可以在这等一会儿,那么这mid个门之间连边 如果可以在x的时间内到达,那么x~mi ...

  8. 获取日k数据

    http://web.ifzq.gtimg.cn/appstock/app/fqkline/get?_var=kline_dayqfq&param=sz002921,day,,,320,qfq ...

  9. Two Sum IV - Input is a BST LT653

    Given a Binary Search Tree and a target number, return true if there exist two elements in the BST s ...

  10. oracle 编码

    select * from nls_database_parameters where parameter ='NLS_CHARACTERSET'; PARAMETER VALUE --------- ...