最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

偶數(shù)社區(qū)投稿丨OushuDB學(xué)習(xí)實(shí)踐系列(一):開一家超市

2023-03-03 18:08 作者:偶數(shù)實(shí)驗(yàn)室  | 我要投稿




大家好,我是鏡鏡呀,也是一名技術(shù)開發(fā)人員。本系列內(nèi)容,也將由技術(shù)點(diǎn)出發(fā),從數(shù)據(jù)庫(kù)的使用、實(shí)踐開始,逐步增加對(duì)整體的認(rèn)知,由點(diǎn)及面,真正理解 OushuDB、數(shù)據(jù)湖倉(cāng)一體在技術(shù)上的變革,以及對(duì)行業(yè)的影響。
為了更方便理解 OushuDB 以及相關(guān)操作,本系列內(nèi)容中,設(shè)計(jì)了一個(gè)場(chǎng)景——開一家超市

啟動(dòng)環(huán)境


最開始,我們還是要先啟動(dòng)整個(gè)環(huán)境。打開 terminal,并執(zhí)行。# 設(shè)置OushuDB的環(huán)境變量,并執(zhí)行(執(zhí)行后沒有任何輸出返回,是正常的)
source /usr/local/oushu/oushudb/oushudb_path.sh

# 啟動(dòng)hdfs
start-dfs.sh

# 啟動(dòng)整個(gè)oushuDB集群,和magma
oushudb start cluster -a --with_magma

# 單獨(dú)啟動(dòng)magma
magma start cluster


開一個(gè)超市


你打算開一個(gè)超市,但是有很多商品,你需要一個(gè)管理商品、進(jìn)貨、交易等的流程。
首先,你想到,需要幾張表格,分別記錄:
  • 商品表:商品的名稱、價(jià)格、數(shù)量等。
  • 交易訂單表:記錄賣出了哪些商品
  • .......

多張表組成的系統(tǒng),我們就稱之為數(shù)據(jù)庫(kù)系統(tǒng)。
  • 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
# 進(jìn)入到數(shù)據(jù)庫(kù)
psql -d postgres

# 創(chuàng)建數(shù)據(jù)庫(kù) (很多輸入是大寫的,大家可以在鍵盤上按“CAPS LOCK”鍵打開大寫輸入,方便書寫,需要小寫時(shí)再切回來(lái))
postgres=# CREATE DATABASE supermarket;
CREATE DATABASE

# 查看有哪些數(shù)據(jù)庫(kù),我們會(huì)看到有了一個(gè)supermarket
postgres=# \l
List of databases
Name | Owner | Encoding | Access privileges
-------------+---------+----------+-------------------
postgres | gpadmin | UTF8 |
supermarket | gpadmin | UTF8 |
template0 | gpadmin | UTF8 |
template1 | gpadmin | UTF8 |
(4rows)


# 查看的另一種方式:檢查系統(tǒng)表pg_database, 查看datname字段(!注意不是dataname)
postgres=# select datname from pg_database;
datname
-------------
template1
template0
postgres
supermarket
(4rows)開了一家超市,你自然就是這個(gè)超市的主人,同樣的,當(dāng)你創(chuàng)建數(shù)據(jù)庫(kù)后,你就自動(dòng)成為了這個(gè)新數(shù)據(jù)庫(kù)的主人(所有者),以后開不開這家超市,是否刪除掉這個(gè)數(shù)據(jù)庫(kù),都是你來(lái)決定。
現(xiàn)在,我們退出數(shù)據(jù)庫(kù),重新進(jìn)入 supermarket 庫(kù)。# 退出posgres數(shù)據(jù)庫(kù) (在unix類系統(tǒng)中,'\'一般表示執(zhí)行,q全稱是quit,一般表示退出)
postgres=# \q
[gpadmin@localhost ~]$

# 進(jìn)入到數(shù)據(jù)庫(kù)supermarket
[gpadmin@localhost ~]$ psql -d supermarket
psql (8.2.15)
Type "help" for help.

supermarket=# 由此,可看出 psql -d 命令,后面跟的是數(shù)據(jù)庫(kù)的名稱


給超市起一個(gè)獨(dú)特的名字


supermarket 這個(gè)名字,太大眾、普通了?,F(xiàn)在我想給我的超市起一個(gè)特別的名字,恰好最近正值春節(jié),闔家歡樂之際,我們所求的不過(guò)是一家人幸福安康,我們就叫"歡樂超市"吧,英文就翻譯為 happymarket 吧!
現(xiàn)在,我們?cè)賱?chuàng)建一個(gè)名為 happymarket 的數(shù)據(jù)庫(kù):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)
好了,現(xiàn)在歡樂超市的庫(kù)也建完了。但是,之前的 supermarket 這個(gè)庫(kù),我們不想要了,需要?jiǎng)h除它。我們可以使用 drop 命令。(drop 譯為停止、放棄)supermarket=# DROP DATABASE supermarket;
ERROR: cannot drop the currently open database我們看到,如果直接刪除 supermarket 會(huì)報(bào)錯(cuò),提示說(shuō)“不能廢棄當(dāng)前打開的數(shù)據(jù)庫(kù)”。我們現(xiàn)在打開并鏈接的數(shù)據(jù)庫(kù)是 supermarket,所以不能刪除。
相信你已經(jīng)有了解決辦法,我們只要切換到別的數(shù)據(jù)庫(kù)上,比如新建的 happymarket 上,就可以刪除 supermarket 庫(kù)了。實(shí)踐一下,果然可行!supermarket=#

# 退出數(shù)據(jù)庫(kù)
supermarket=# \q

# 連接happymarket
[gpadmin@localhost ~]$ psql -d happymarket
psql (8.2.15)
Type "help" for help.

# 刪除supermarket,沒有報(bào)錯(cuò)
happymarket=# DROP DATABASE supermarket;
DROP DATABASE

# 查看現(xiàn)在有哪些庫(kù)
happymarket=# \l
List of databases
Name | Owner | Encoding | Access privileges
-------------+---------+----------+-------------------
happymarket | gpadmin | UTF8 |
postgres | gpadmin | UTF8 |
template0 | gpadmin | UTF8 |
template1 | gpadmin | UTF8 |
(4 rows)


討論和優(yōu)化


Nice!現(xiàn)在已經(jīng)刪除原來(lái)的 supermarket 了。但是,大家想一想,這樣刪除是不是比較麻煩,還要切換到另一個(gè)庫(kù)中。回顧一下,我們的整個(gè)流程,從產(chǎn)品的角度來(lái)考慮下問(wèn)題,這樣會(huì)有很多疑惑。
整個(gè)流程的邏輯是這樣的:
  • 如果要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù),需要先進(jìn)入的 postgres 庫(kù)
  • 如果要?jiǎng)h除的話,需要先切換到另一庫(kù)上

帶來(lái)的問(wèn)題:
  • 問(wèn)題 1:創(chuàng)建時(shí),如果沒有預(yù)先設(shè)置好的 postgres 庫(kù),要怎么創(chuàng)建呢?
  • 問(wèn)題 2:既然需要先進(jìn)入再創(chuàng)建庫(kù),那么 postgres 庫(kù)是哪里來(lái)的呢?
  • 問(wèn)題 3:能不能直接創(chuàng)建,或是刪除庫(kù)?

我們來(lái)一個(gè)一個(gè)的探索!現(xiàn)在,我們來(lái)從實(shí)際的角度來(lái)考慮問(wèn)題。
你為什么開超市?

你當(dāng)時(shí)選擇開超市,是看到別人開超市賺錢了,有利可圖,你才開始做這件事的,并且有了一個(gè)比較成熟的市場(chǎng)規(guī)范,那么,第一個(gè)開超市的人是誰(shuí)?
我也不知道是哪位前輩祖先,但是我們可以想到,第一個(gè)開超市的人一定明白了交換的價(jià)值,他開超市成功了,并且摸索出了一套基本的規(guī)范,后人根據(jù)這樣的規(guī)范,開了類似的場(chǎng)所、店鋪,而后逐漸有了市場(chǎng)、有了行業(yè)。
同樣地,當(dāng)我們創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候,也是遵循了某個(gè)“前輩”摸索出的基本規(guī)范,依照這樣的規(guī)范,搞一個(gè)差不多的庫(kù)。
第一個(gè)數(shù)據(jù)庫(kù)是如何創(chuàng)建的?

這位“前輩”叫做 initdb 命令,譯過(guò)來(lái)就是初始化數(shù)據(jù)庫(kù)的命令。
“前輩”開的超市,叫做“postgres”,所以我們后人每次開超市時(shí),其實(shí)就是與前輩的一次時(shí)空的對(duì)話,與文化的傳承。
第一個(gè)數(shù)據(jù)庫(kù),由 initdb 命令,在初始化數(shù)據(jù)存儲(chǔ)區(qū)的時(shí)候,創(chuàng)建的,這個(gè)數(shù)據(jù)庫(kù)叫做 postgres。因此,要?jiǎng)?chuàng)建第一個(gè)用戶數(shù)據(jù)庫(kù)時(shí),需要先與 postgres 連接。
直接創(chuàng)建、刪除數(shù)據(jù)庫(kù)

既然有需要,那么產(chǎn)品設(shè)計(jì)人早已為我們想好了。為了方便,我們可以直接在 shell 中,用 createdb 程序,來(lái)創(chuàng)建新數(shù)據(jù)庫(kù)。
我們還是以創(chuàng)建 supermarket 數(shù)據(jù)庫(kù)為例:# 退出數(shù)據(jù)庫(kù)連接,回到shell環(huán)境
postgres=# \q
[gpadmin@localhost ~]$

# 在shell中,直接使用createdb來(lái)創(chuàng)建數(shù)據(jù)庫(kù)
[gpadmin@localhost ~]$ createdb supermarket

# 連接數(shù)據(jù)庫(kù),查看是否已經(jīng)創(chuàng)建好
[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)

# 已創(chuàng)建好,沒什么問(wèn)題
# 退出連接
supermarket=# \q

# 在shell環(huán)境中,直接使用dropdb命令刪除數(shù)據(jù)庫(kù)
[gpadmin@localhost ~]$ dropdb supermarket

# 連接數(shù)據(jù)庫(kù),看看是否已刪除
[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)

# 已刪除沒有問(wèn)題


總結(jié)


好了,現(xiàn)在我們已經(jīng)給超市立了一個(gè)牌子,還學(xué)會(huì)了如何創(chuàng)建、刪除數(shù)據(jù)庫(kù),現(xiàn)在我們來(lái)總結(jié)一下這些命令。




偶數(shù)社區(qū)投稿丨OushuDB學(xué)習(xí)實(shí)踐系列(一):開一家超市的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
临猗县| 石屏县| 建湖县| 安宁市| 鹤壁市| 天峻县| 白水县| 金川县| 台湾省| 延庆县| 喀什市| 获嘉县| 和田县| 惠州市| 新田县| 同德县| SHOW| 凭祥市| 延川县| 彰武县| 贡嘎县| 肃北| 奎屯市| 大城县| 赫章县| 信宜市| 十堰市| 湛江市| 田阳县| 荆门市| 临海市| 洛隆县| 微博| 宁都县| 和田县| 乌兰县| 汉阴县| 茂名市| 长葛市| 北安市| 宜都市|