乐趣区

关于oushudb-hawq:偶数社区投稿丨OushuDB学习实践系列一开一家超市

哈喽,大家好,我是镜镜呀,自身也是一名技术开发人员。本系列内容,也将由技术点登程,从数据库的应用、实际开始,逐渐减少对整体的认知,由点及面,真正了解偶数 DB、数据湖仓一体在技术上的改革,以及对行业的影响。

为了更不便了解 OushuDB,以及相干操作,在这本系列内容中,设计了一个场景。但最开始,咱们还是要先启动整个环境。

启动环境
关上 terminal,并执行

设置 OushuDB 的环境变量,并执行(执行后没有任何输入返回,是失常的)

source /usr/local/hawq/greenplum_path.sh

启动 hdfs

start-dfs.sh

启动整个 oushuDB 集群,和 magma

hawq start cluster -a –with_magma

独自启动 magma

magma start cluster
开一个超市
你打算开一个超市,然而有很多商品,你须要一个治理商品、进货、交易等的流程。

首先,你想到,须要几张表格,别离记录:

商品表:商品的名称、价格、数量等。
交易订单表:记录卖出了哪些商品
…….
多张表组成的零碎,咱们就称之为数据库。

创立一个数据库

进入到数据库

psql -d postgres

创立数据库(很多输出是大写的,大家能够在键盘上按“CAPS LOCK”键关上大写输出,不便书写,须要小写时再切回来)

postgres=# CREATE DATABASE supermarket;
CREATE DATABASE

查看有哪些数据库,咱们会看到有了一个 supermarket

postgres=# \l

              List of databases
Name     |  Owner  | Encoding | Access privileges 
postgres gpadmin UTF8
supermarket gpadmin UTF8
template0 gpadmin UTF8
template1 gpadmin UTF8

(4rows)

查看的另一种形式:查看零碎表 pg_database, 查看 datname 字段(!留神不是 dataname)

postgres=# select datname from pg_database;

datname

template1
template0
postgres
supermarket
(4rows)

当你开了一家超市,你天然就是这个超市的客人,同样的,当你创立数据库后,你就主动成为了这个新数据库的客人(所有者),当前开不开这家超市,是否删除掉这个数据库,都是你来决定。

当初,咱们退出数据库,从新进入 supermarket 库。

退出 posgres 数据库 (在 unix 类零碎中,’\’ 个别示意执行,q 全称是 quit,个别示意退出)

postgres=# \q
[gpadmin@localhost ~]$

进入到数据库 supermarket

[gpadmin@localhost ~]$ psql -d supermarket
psql (8.2.15)
Type “help” for help.

supermarket=#

由此,可看出 psql -d 命令,前面跟的是数据库的名称

给超市起一个独特的名字
supermarket 这个名字,太大众化、一般化了。当初我想给我的超市,起一个特地的名字,恰好最近正值春节,阖家欢乐之际,咱们所求的不过是一家人幸福健康,咱们就叫 ” 欢畅超市 ” 吧!英文就翻译为 happymarket 吧!

当初,咱们再创立一个名为 happymarket 的数据库:

supermarket=# CREATE DATABASE happymarket;
CREATE DATABASE
supermarket=# \l

              List of databases
Name     |  Owner  | Encoding | Access privileges 
happymarket gpadmin UTF8
postgres gpadmin UTF8
supermarket gpadmin UTF8
template0 gpadmin UTF8
template1 gpadmin UTF8

(5 rows)

好了,当初欢畅超市的库也建完了。然而,之前的 supermarket 这个库,咱们不想要了,须要删除它。咱们能够应用 drop 命令。(drop 译为进行、放弃)

supermarket=# DROP DATABASE supermarket;
ERROR: cannot drop the currently open database
咱们看到,如果间接删除 supermarket 会报错,提醒说“不能废除以后关上的数据库”。咱们当初关上并链接的数据库是 supermarket,所以不能删除。

置信你曾经有了解决办法,咱们只有切换到别的数据库上,比方新建的 happymarket 上,就能够删除 supermarket 库了。实际一下,果然可行!

supermarket=#

退出数据库

supermarket=# \q

连贯 happymarket

[gpadmin@localhost ~]$ psql -d happymarket
psql (8.2.15)
Type “help” for help.

删除 supermarket,没有报错

happymarket=# DROP DATABASE supermarket;
DROP DATABASE

查看当初有哪些库

happymarket=# \l

              List of databases
Name     |  Owner  | Encoding | Access privileges 
happymarket gpadmin UTF8
postgres gpadmin UTF8
template0 gpadmin UTF8
template1 gpadmin UTF8

(4 rows)

探讨和优化
Nice!当初曾经删除原来的 supermarket 了。然而,大家想一想,这样删除是不是比拟麻烦,还要切换到另一个库中。回顾一下,咱们的整个流程,从产品的角度来思考下问题,这样会有很多纳闷。

整个流程的逻辑是这样的:

如果要创立数据库,须要先进入的 postgres 库
如果要删除的话,须要先切换到另一库上
带来的问题:

问题 1:创立时,如果没有事后设置好的 postgres 库,要怎么创立呢?
问题 2:既然须要先进入再创立库,那么 postgres 库是哪里来的呢?
问题 3:能不能间接创立,或是删除库?
咱们来一个一个的摸索!

当初,咱们来从理论的角度来思考问题。

你为什么开超市?

你过后抉择开超市,是看到他人开超市赚钱了,有利可图,你才开始做这件事的,并且有了一个比拟成熟的市场标准,那么,第一个开超市的人是谁?

我也不晓得是哪位前辈祖宗,然而咱们能够想到,第一个开超市的人,肯定明确了替换的价值,他开超市胜利了,并且摸索出了一套根本的标准,前人依据这样的标准,开了相似的场合、店铺,而后逐步有了市场、有了行业。

同样地,当咱们创立数据库的时候,也是遵循了某个“前辈”摸索出的根本标准,按照这样的标准,搞一个差不多的库。

第一个数据库是如何创立的?

这位“前辈”叫做 initdb 命令,译过去就是初始化数据库的命令。

“前辈”开的超市,叫做“postgres”,所以咱们前人每次开超市时,其实就是与前辈的一次时空的对话,与文化的传承。

第一个数据库,由 initdb 命令,在初始化数据存储区的时候,创立的,这个数据库叫做 postgres。因而,要创立第一个用户数据库时,须要先与 postgres 连贯。

间接创立、删除数据库

既然有须要,那么产品设计人早已为咱们想好了。为了不便,咱们能够间接在 shell 中,用 createdb 程序,来创立新数据库。

咱们还是以创立 supermarket 数据库为例:

退出数据库连贯,回到 shell 环境

postgres=# \q
[gpadmin@localhost ~]$

在 shell 中,间接应用 createdb 来创立数据库

[gpadmin@localhost ~]$ createdb supermarket

连贯数据库,查看是否曾经创立好

[gpadmin@localhost ~]$ psql -d supermarket
psql (8.2.15)
Type “help” for help.

supermarket=# \l

              List of databases
Name     |  Owner  | Encoding | Access privileges 
happymarket gpadmin UTF8
postgres gpadmin UTF8
supermarket gpadmin UTF8
template0 gpadmin UTF8
template1 gpadmin UTF8

(5 rows)

已创立好,没什么问题

退出连贯

supermarket=# \q

在 shell 环境中,间接应用 dropdb 命令删除数据库

[gpadmin@localhost ~]$ dropdb supermarket

连贯数据库,看看是否已删除

[gpadmin@localhost ~]$ psql -d postgres
psql (8.2.15)
Type “help” for help.

postgres=# \l

              List of databases
Name     |  Owner  | Encoding | Access privileges 
happymarket gpadmin UTF8
postgres gpadmin UTF8
template0 gpadmin UTF8
template1 gpadmin UTF8

(4 rows)

已删除没有问题

总结
好了,当初咱们曾经给超市立了一个牌子,还学会了如何创立、删除数据库,当初咱们来总结一下这些命令。

更多内容关注 OushuDB 小课堂

退出移动版