溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何用MYSQL或者ORACLE的方法管理 POSTGRESQL

發(fā)布時間:2021-10-25 09:30:32 來源:億速云 閱讀:130 作者:柒染 欄目:大數(shù)據(jù)

這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)如何用MYSQL或者ORACLE的方法管理 POSTGRESQL  ,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

寫這篇文字的起因是眾多的DB們投入到學習PG數(shù)據(jù)庫,遇到了一些困難,其實提出這個題目的時候,其實我也在想,每種數(shù)據(jù)庫都有自己的適合的管理方法,有些是管理方法實則是無奈。最近有人問 POSTGRESQL 使用的方式是更貼近ORACLE  還是 MYSQL。

為什么會提出這樣一個話題,

1 使用PG 前,提出問題的人使用的或管理的數(shù)據(jù)庫已經(jīng)深入骨髓,很愿意用原來的管理方法來管理新的數(shù)據(jù)庫,這是很正常的事情,我們都愿意用已有的經(jīng)驗去套用在新的事務(wù)上,加快對新事物的理解和使用。

2 低估了新事物與原有經(jīng)驗的之間的沖突,如同比如去了國外做公交車,如果你不按STOP 的按鈕,公交車是到站不停的,而國內(nèi)這樣的情況是不會出現(xiàn)的,更有意思的是,如果你按錯了按鈕,也是要下車的,因為不好意思,別問我怎么知道的。

所以今天的題目還算有點意思,有點討論性,將三個數(shù)據(jù)以及使用者的經(jīng)驗來一個MIX 本來就是挺有意思的話題。

1  ORACLE 中沒有DATABASE 的概念 (類似 MYSQL SQL SERVER),ORACLE 中是有SCHEMA的概念的,在ORACLE 的世界中可以看做一個SCHEMA 就是一個 DATABASE.

2  在MYSQL 中是沒有SCHEMA的概念的,他是通過不同的DATABASE 來分割邏輯,或物理上的數(shù)據(jù)信息。

3  類似 POSTGRESQL 和 SQL SERVER 這樣的數(shù)據(jù)庫就屬于比較,怎么都行的,這兩者既有 SCHEMA 的概念,也有DATABASE 的概念。你想用任何的方式來分割都是OK 的。但SQL SERVER 歷史原因,習慣使用DATABASE 來分割的是常見的。

說到這里問題是PG 怎么辦,PG 中的SCHEMA 和 ORACLE 概念無差, 而不幸的是,他的DATABASE 的概念也和 MYSQL 無差。貌似 PG 屬于腳踩兩只船的那位。

那我們在使用PG的時候是更傾向于將所有的表都塞到一個數(shù)據(jù)庫里面,然后用SCHEMA + 用戶+ 權(quán)限的方式來管理好。

還是使用MYSQL 或 SQL SERVER 那種創(chuàng)建多個數(shù)據(jù)庫在一個INSTANCE 的方式,每個DATABASE 有不同的用戶的方式來管理,更符合PG的性格。

如果我們以O(shè)RACLE的方式管理 PG ,在一個DATABASE 里面創(chuàng)建多個SCHEMA ,也就是放棄PG 的多DATABASES 的概念,僅僅使用一個數(shù)據(jù)庫,我們會遇到另一個問題,autovacuum worker , 根據(jù)下面的一段官方的文字

經(jīng)過推敲清理線程是一個個數(shù)據(jù)庫來進行清理的,那如果將所有的表都塞入到一個數(shù)據(jù)庫,那我是否能推斷出,即使設(shè)置了多個WORKS 一個數(shù)據(jù)庫也只能使用一個清理線程(如果這樣理解有誤,請告知謝謝)。

如何用MYSQL或者ORACLE的方法管理 POSTGRESQL

這就引出另一個不同的概念,在ORACLE 有 UNDO LOG  有清理的線程,但PG 的原理是沒有REDO UNDO LOG ,通過表本身來實現(xiàn),就會有DEAD 的元祖。而不能及時清理死的元祖就會引起一系列的問題。

所以我暫時只能理解,如果你想用ORACLE的方式來管理PG 的數(shù)據(jù)庫,則最好表不要特別大,并且數(shù)量也不要太多。

那換一個思路我用 MYSQL的方式來管理,總能避過上面的擔心,但PG 對其他庫的數(shù)據(jù)的訪問,并不如MYSQL 簡單,select  * from 庫名.表名

,就能跨庫查詢,而是要走dblink的方式來連接在同一個INSTANCE (PG 官方的叫法應(yīng)該叫 cluster)不同的數(shù)據(jù)庫。這又是 MYSQL 數(shù)據(jù)庫管理員所不能理解的,并且也覺得比較麻煩的。

如何用MYSQL或者ORACLE的方法管理 POSTGRESQL

此時就陷入了,PG 不好用的一個思維模式中去了,對比ORALCE ,對比 MYSQL ,SQL SERVER 都有不同。在既定的模式下,都不能理解這個PG 怎么這么怪。站著不行,坐著也不行。

其實我倒是不這么想,學習一個新事物,一定不要抱著原有的思維模式去學,那樣可能每件事都覺得,還不如我的那個方便。但實際上,如果你深入到PG 的學習中,會發(fā)現(xiàn)除了這樣的事情以外, PG 的擴展性,多態(tài)性,也是其他數(shù)據(jù)庫無法進行比擬的。

那我們對上面的問題既然有了一定的認知,我們就能避開某些可能會出現(xiàn)問題的地方,例如,我可以使用ORACLE的方式來管理PG ,建立多個SCHEMA, 但如果一組表與另一組都是無關(guān)聯(lián)的, 那我就在PG的CLUSTER 上新建一個數(shù)據(jù)庫,將這些無關(guān)邏輯的表,放到另外一個DATABASE中,或者有關(guān)聯(lián)我可以創(chuàng)建跨庫VIEW ,來解決需要 DBLINK 的方式的煩惱,以適合PG的方式來管他,忘記用ORACLE 還是MYSQL的方式來管理PG,因為PG 就是PG 一個不一樣的煙火。

如何用MYSQL或者ORACLE的方法管理 POSTGRESQL

上述就是小編為大家分享的如何用MYSQL或者ORACLE的方法管理 POSTGRESQL  了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI