Oracle與PostgreSQL比較:PostgreSQL至少在安裝和大小方面擊敗了Oracle - foerster

banq發表於2020-05-31

我成為Oracle DBA已有二十年了(那時從Oracle 8.0.5開始),並且從10.3版開始僅使用PostgreSQL,我感到不得不與兩者分享我的一些經驗。

Oracle有一些好的概念。我喜歡單獨的UNDO和TEMP表空間的概念,而不必關心清理。另外,我喜歡全域性容器/叢集範圍的檢視(例如CDB_TABLES等)的想法,我肯定會非常認真地想念PostgreSQL。

我特別討厭Oracle(當然,儘管需要花費許可費用)是它有如此多的bug,bug甚至更多的bug,而且一整天都在不斷尋找補丁程式,從而導致大量的停機時間。僅使用PSU或RU遠遠不夠。

因此,最重要的是,我認為PostgreSQL至少在安裝和大小方面擊敗了Oracle。

因此,猜想我在使用Oracle 20年後的錯是什麼...

下面是安裝比較:

所有安裝都在同一主機上執行,除了Oracle Data Guard和Patroni帶有etcd,它們都至少需要三個節點,或者分別需要一個奇數(大於2)才能確定主資料庫/主資料庫和副本資料庫/備用資料庫。但是,所有機器都具有相同的硬體和作業系統:

    作業系統:openSUSE Leap 15.1(伺服器設定,而不是桌上型電腦)
    CPU:Intel i7-7700T CPU 
    RAM:32 GB 
    磁碟硬體:SSD

而且,對於所謂的僅64位軟體,Oracle需要安裝161個附加軟體包,其中許多是32位軟體包!這將導致需要150 MB的額外磁碟空間,並用32位軟體包淹沒系統!

PostgreSQL只需要安裝幾個軟體包,這取決於一個選擇用來編譯原始碼的選項。無論如何,這些軟體包都不需要32位版本!

PostgreSQL安裝大小:

    軟體:
        $ du -sh /data/postgres/12.3 /data/oracle/product/19.6 
        62M /data/postgres/12.3 
        8.5G /data/oracle/product/19.6 
    資料庫:
        $ du -sh / data / oradb / * 
        3.3 G / data / oradb / cdb01#具有1個PDB的Oracle容器
        1.8G / data / oradb / sdb01#Oracle獨立資料庫
        $ du -sh / data / pgdb / sdb01 
        659M / data / pgdb / sdb01#PostgreSQL 12.3資料庫叢集

所有資料庫都是乾淨的設定,沒有模式,使用者,表,資料等。只是一個空殼。

Oracle安裝:

 

  Oracle 19c:        〜2h 
        解壓縮到ORACLE_HOME 
        runInstaller 
解壓縮最新的OPatch p6880880_200000_Linux-x86-64 
        應用p30797938_190000_Linux-x86-64(19.6.1)
    從原始碼編譯的PostgreSQL 12.3:〜3m30s 
        bunzip postgresql-12.3.tar.bz2到PGHOME 
        進行安裝-世界

建立資料庫:

    Oracle:
        建立獨立資料庫:〜30m 
        建立容器資料庫(cdb $ root):〜47m 
        建立可插拔資料庫(pdb):〜26s 
        執行資料庫的記憶體相當好:
            獨立資料庫至少1 GB SGA 
            容器資料庫至少4 GB SGA 
    PostgreSQL:
        initdb:<1s 
        建立資料庫:<200ms 
        記憶體:128 MB db_buffers

啟動/停止資料庫:

    Oracle:
        啟動(標準,1 GB SGA):〜15s 
        立即關閉(標準,1 GB SGA):〜21s 
        啟動(容器,4 GB SGA):〜16s 
        立即關閉(容器,4 GB SGA) :〜23s 
    PostgreSQL:
        pg_ctl開始:0.1s 
        pg_ctl停止:0.2s 

    

其他發現/經驗:

    Oracle:
        使用觀察者(3.節點)設定Data Guard(2個節點):〜4h 
        應用PSU或RU通常需要60m的停機時間-90m。
        遷移主要版本通常需要60m-90m的停機時間。
        遷移新的主要版本需要提前很多工作。
        切換Data Guard需要大約1m。
    PostgreSQL:
        使用etcd(3個節點)設定Patroni(2個節點):〜30m 
        應用新的次要版本需要的停機時間少於2s。
        遷移新的主要版本需要的停機時間少於20秒。
        遷移新的主要版本需要幾分鐘的時間。
        切換Patroni大約需要1秒。

回覆:我也曾與Oracle合作20年,主要是作為一名開發人員,但也有一些DBA工作。除非我不知道它們的“附加元件”,否則我不會遇到您似乎遇到的錯誤。堅持使用基本的RDBMS,我發現它非常可靠。但是,我更喜歡Postgres。主要的原因是,使用Oracle,你真的需要選擇一條道路或其他-無論是開發商或者是DBA。在引入DAtaGuard,GoldenGAte等功能後,尤其如此。Oracle 比Postgres 承擔了更多的管理工作,並且掌握了很多知識。

oracle的安裝過程非常糟糕。除了所有的廢話外,您通常還會在指令碼中遇到錯誤。更糟糕的是,其中一些錯誤已經存在了20年,並且只是DBA處理的“已知”問題。他們的文件站點也很糟糕。

作為開發人員,只要您具備基本的資料庫功能(即SQL和PL / SQL),並避免使用它們的擴充套件/附加元件,例如它們的各種pub / sub,規則引擎,PSP或他們通過購買公司並整合獲得的任何東西,'它,非常好。我認為它們是目前最好的鎖定模型之一。它們處理索引和更新的方式也比postgres快得多,並且您不必為效能而擔心查詢的結構。

不過,我更喜歡Postgres。主要原因是,儘管我可能需要考慮如何進一步構造查詢,更新和索引,但總的來說,它會妨礙我的工作並滿足我的要求-提供可靠的資料儲存,供我使用和無需花費大量時間從事DBA任務即可完成工作。更新很容易,基本架構也很容易。

從oracle遷移到postgres時,最大的挑戰是認識到它們是完全不同的,儘管它們都可以提供相容的SQL實現,但相似之處到此為止。如果我在其他人負責所有DBA事務的環境中,那麼Oracle很高興與您合作。但是,只有當您在大型的,通常是官僚的環境中工作時,您才傾向於處於這種情況下,這往往會以其他方式損害整個體驗。如果您很不幸還使用了Oracle的任何“增值”擴充套件,開發框架,應用程式層等,那真是太恐怖了,讓人麻木了。

除此之外,Oracle許可絕對是一場噩夢。除了費用外,其複雜性令人難以置信,幾乎不可能確切地知道您將在12、24個月或更長時間內支付的費用。- 蒂姆·克羅斯

相關文章