您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何用MYSQL或者ORACLE的方法管理 POSTGRESQL ,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
寫這篇文字的起因是眾多的DB們投入到學習PG數據庫,遇到了一些困難,其實提出這個題目的時候,其實我也在想,每種數據庫都有自己的適合的管理方法,有些是管理方法實則是無奈。最近有人問 POSTGRESQL 使用的方式是更貼近ORACLE 還是 MYSQL。
為什么會提出這樣一個話題,
1 使用PG 前,提出問題的人使用的或管理的數據庫已經深入骨髓,很愿意用原來的管理方法來管理新的數據庫,這是很正常的事情,我們都愿意用已有的經驗去套用在新的事務上,加快對新事物的理解和使用。
2 低估了新事物與原有經驗的之間的沖突,如同比如去了國外做公交車,如果你不按STOP 的按鈕,公交車是到站不停的,而國內這樣的情況是不會出現的,更有意思的是,如果你按錯了按鈕,也是要下車的,因為不好意思,別問我怎么知道的。
所以今天的題目還算有點意思,有點討論性,將三個數據以及使用者的經驗來一個MIX 本來就是挺有意思的話題。
1 ORACLE 中沒有DATABASE 的概念 (類似 MYSQL SQL SERVER),ORACLE 中是有SCHEMA的概念的,在ORACLE 的世界中可以看做一個SCHEMA 就是一個 DATABASE.
2 在MYSQL 中是沒有SCHEMA的概念的,他是通過不同的DATABASE 來分割邏輯,或物理上的數據信息。
3 類似 POSTGRESQL 和 SQL SERVER 這樣的數據庫就屬于比較,怎么都行的,這兩者既有 SCHEMA 的概念,也有DATABASE 的概念。你想用任何的方式來分割都是OK 的。但SQL SERVER 歷史原因,習慣使用DATABASE 來分割的是常見的。
說到這里問題是PG 怎么辦,PG 中的SCHEMA 和 ORACLE 概念無差, 而不幸的是,他的DATABASE 的概念也和 MYSQL 無差。貌似 PG 屬于腳踩兩只船的那位。
那我們在使用PG的時候是更傾向于將所有的表都塞到一個數據庫里面,然后用SCHEMA + 用戶+ 權限的方式來管理好。
還是使用MYSQL 或 SQL SERVER 那種創建多個數據庫在一個INSTANCE 的方式,每個DATABASE 有不同的用戶的方式來管理,更符合PG的性格。
如果我們以ORACLE的方式管理 PG ,在一個DATABASE 里面創建多個SCHEMA ,也就是放棄PG 的多DATABASES 的概念,僅僅使用一個數據庫,我們會遇到另一個問題,autovacuum worker , 根據下面的一段官方的文字
經過推敲清理線程是一個個數據庫來進行清理的,那如果將所有的表都塞入到一個數據庫,那我是否能推斷出,即使設置了多個WORKS 一個數據庫也只能使用一個清理線程(如果這樣理解有誤,請告知謝謝)。
這就引出另一個不同的概念,在ORACLE 有 UNDO LOG 有清理的線程,但PG 的原理是沒有REDO UNDO LOG ,通過表本身來實現,就會有DEAD 的元祖。而不能及時清理死的元祖就會引起一系列的問題。
所以我暫時只能理解,如果你想用ORACLE的方式來管理PG 的數據庫,則最好表不要特別大,并且數量也不要太多。
那換一個思路我用 MYSQL的方式來管理,總能避過上面的擔心,但PG 對其他庫的數據的訪問,并不如MYSQL 簡單,select * from 庫名.表名
,就能跨庫查詢,而是要走dblink的方式來連接在同一個INSTANCE (PG 官方的叫法應該叫 cluster)不同的數據庫。這又是 MYSQL 數據庫管理員所不能理解的,并且也覺得比較麻煩的。
此時就陷入了,PG 不好用的一個思維模式中去了,對比ORALCE ,對比 MYSQL ,SQL SERVER 都有不同。在既定的模式下,都不能理解這個PG 怎么這么怪。站著不行,坐著也不行。
其實我倒是不這么想,學習一個新事物,一定不要抱著原有的思維模式去學,那樣可能每件事都覺得,還不如我的那個方便。但實際上,如果你深入到PG 的學習中,會發現除了這樣的事情以外, PG 的擴展性,多態性,也是其他數據庫無法進行比擬的。
那我們對上面的問題既然有了一定的認知,我們就能避開某些可能會出現問題的地方,例如,我可以使用ORACLE的方式來管理PG ,建立多個SCHEMA, 但如果一組表與另一組都是無關聯的, 那我就在PG的CLUSTER 上新建一個數據庫,將這些無關邏輯的表,放到另外一個DATABASE中,或者有關聯我可以創建跨庫VIEW ,來解決需要 DBLINK 的方式的煩惱,以適合PG的方式來管他,忘記用ORACLE 還是MYSQL的方式來管理PG,因為PG 就是PG 一個不一樣的煙火。
上述就是小編為大家分享的如何用MYSQL或者ORACLE的方法管理 POSTGRESQL 了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。