哈喽,大家好,我是镜镜呀,自身也是一名技术开发人员。本系列内容,也将由技术点登程,从数据库的应用、实际开始,逐渐减少对整体的认知,由点及面,真正了解偶数 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 小课堂