歡迎您光臨本站 註冊首頁

碩果僅存的真正開源資料庫Postgresql

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  最近在做一些開源的資料庫項目,到現在也有快兩年了,當初做選擇時還是在mysql與Postgresql 之間比較了下,當時感覺兩者都差不多,各有優缺點,一句話也難說清,由於當時有現有的上線系統在使用postgresql db 所以最後也就選擇了後者。

     一開始找資料時真是難呀!首先也是先來ITPUB來找的,找半天終於算是找到了一些關於postgresql 的初步介紹,連個完整安裝也沒找到,不過感覺有的自己想要的還是沒有,比如replication,cluster 等等,後來只好硬著頭皮去postgresql 的官方網站看英文的原檔了,(http://www.postgresql.org/),好在自己以前有點資料庫的概念,(以前做過oracle 的管理)感覺postgresql 的架構有很多方面和oracle 的都一樣,比如歸檔備份這一塊,都是產生archive file 來進行備份的,當時看到這個就感覺很親切,心想這開源的還挺厲害的,連oarcle 的一些應用技術它都有,後來想想開源還是有開源的好處的,發展快,更新快,新技術應用的快,不像商業的資料庫,它要從很多方面考慮商業贏利的運作,從而在技術更新方面有時侯就顯得落後了一點兒,不過各有所長吧。

    總之當時就是覺得postgresql 的這方面的資料太少了,自己也只是共享一下學習到的一點微薄知識,也算是共同學習探討一下,也希望本土的一些小型企業如果想從降低IT成本來考慮的話,我感覺postgresql 的確是一個不錯的選擇,感覺它的速度還是挺快的,如果你說mysql也不錯,是的很不錯,有個朋友是在藤訊做的,聽說他們那裡有很多系統就是建立在mysql上的,而且數據量還是挺 大的,不過大家要注意mysql 現在已被甲骨文收購了,可見其前途已是渺茫(只是個人之見),其它先不多說了,下面我就先從postgresql 的最基礎寫起,首先是安裝了,其次是一個簡單的操作,然後說說自己拿postgresql 與mssql做的一個性能比較,再談談postgresql 的備份與恢復,最後是性能調優方面,我想這些應該是學習一個資料庫最基礎的了,也是大家都想要了解的了,如果大家還有興趣的話可以看看我們做的一個專案:mssql 向postgresql 的移轉。

    序列:

    I.           Postgresql的安裝
    II.          Postgresql 的簡單操作
    III.         Postgresql 與 Mssql 性能比較
    IV.        Postgresql 的備份與恢復
    V.         Postgresql 性能調優
    VI.        基於Mssql 的資料庫向Postgresql 的轉移

    I. Postgresql的安裝

    1.  建立系統平台,我的是 Centos 5.2 (Linux version 2.6.18-92.el5 (mockbuild@builder16.centos.org) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-42)) #1 SMP Tue Jun 10 18:49:47 EDT 2008)我大致查了下只要是在linux 上安裝的都著不多,只要區分好32位與64位就好了,我都是採用源碼編譯安裝,感覺這樣安裝的話db 會更穩定些,只是個人感覺了,你也可以下載RPM包進行安裝,這裡只介紹源碼編譯的安裝了。

    1.1  首先下載postgresql db 安裝文件從下面網站:http://www.postgresql.org/ftp/source/v8.4.2/   選擇文件postgresql-8.4.2.tar.gz進行下載;

    1.2  解壓下載文件 

       # tar -zxvf postgresql-8.4.2.tar.gz
 

    2. 安裝編譯DB源文件所需的OS軟體包gcc,  你可以把yum 設好,只需要yum install gcc 就可以了 (安裝這個主要是為了可以compile)

    3. 創建postgres 用戶(由於postgresql db 是基於postgres 這個os 用戶的,所以必需先創建)

    # useradd postgres

    4. 授權給postgres 讀取postgresql-8.4.2/的許可權

    # chown -R postgres.postgres postgresql-8.4.2/

    5. 切換用戶到postgres

    # su -l postgres

    6. 設置DB安裝的環境變數

    $ export PGDATA=/usr/local/

    $ export LD_LIBRARY_PATH=/usr/local/pgsql/lib

    7. 進入到解壓文件所在的目錄

    $ cd postgresql-8.4.2/

    8. 編譯安裝

    $ ./configure --enable-thread-safety --without-zlib --without-readline --with-perl  

    這裡稍微介紹下,首先要注意/configure 前面有個點的,後面的所帶的參數大家可以在官方網站查到各個參數的作用,我主要說一個with-perl 這個主要是為了使DB在安裝完以後支持perl 語言的使用,你可以在DB里創建用 Perl 寫的存儲過程等等,它還可以支持功能強大的pl/perlu,pl/tcl 等等。

    9. $ make

    10. 這一步要注意切換到root 下來做

    $ su root

    # make install

    11.切換到目錄 /usr/local/pgsql  創建資料夾data,用於存放初始化的資料庫,

    # cd /usr/local/pgsql

    # mkdir data

    12. 授權給postgres 讀取data資料夾的許可權

    # chown -R postgres /usr/local/pgsql/data

    13. 切換用戶到postgres (注意從此以後只要是操作DB的就在postgres 用戶下)

    # su -l postgres

    14. 初始化資料庫

    $ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

    到此資料庫就算是安裝完成了,這個寫的有點詳細,也許有點羅了吧,本人做事有時是比較細的,每個環節都要弄的清清楚楚,以前看別人有的寫的貼子,就一段命令,看到每行不知什麼作用,總是迷迷糊糊的,也算是解新手之迷吧,尤其是新學linux 的,這點我當初也是深有體會的。 


    II.   Postgresql 的簡單操作

    1.上一節說了下安裝,下面簡單說下它的連接與使用,首先需要啟動資料庫

    (以下操作都是在postgres 用戶下進行的)

    $ pg_ctl start

    2. 連接資料庫

    $ psql 
 

    這樣連接進來的是資料庫的默認DB: postgres,輸入英文字母l可以顯示所以已經建立的資料庫

    postgres=# l
 

    其中資料庫名postgres ,tempalte0,template1都是初始化DB后自動建立起來的,這跟oracle 裡面的系統表呀等等類似,用於維護其本身運作所必需的一些系統文件。

    3. 創建新的資料庫,首先退出連接介面,其實在這個介面也是可以建立的    我們比較喜歡在系統下建立,也是出於安全的考慮,

    $ createdb test

    test 為自己創建的DB名
 

    4. 連接指定的資料庫
   
    $ psql test
    

    在這個介面就可以下一些資料庫的命令了,比如查表呀,select * from table,  等等一些DDL,DML資料庫操作語句了,說到這裡也許你要問了有沒有運行在windows 上的一些客戶端軟體了,postgresql 的官方網站提供了一個pgadminIII的客戶端軟體,雖然不是太好用,有一些bug ,但想想這一切都是免費的也可以原諒了,如下圖
 

    注意host 一欄是輸入DB 所在機器的IP

    配置客戶端連接時首先要確定你的linux 上的防火牆是關閉的,要不然你是連不進去的,再就是配置pg_hba.conf 這個資料庫的配置文件里的幾個參數,如下 

     cd /usr/local/pgsql/data/

     vi pg_hba.conf
 

    查看你的IP是哪一段把它加進去;

    再就是配置postgresql.conf
 

    vi postgresql.conf

  修改listen_addresses,port 這兩個參數如上所示,這樣你就可以從遠端連入你的postgresql db 了。

    由於工作原因,今天就先到這裡了,後面我會接著寫下面的幾個項目,祝虎年好運,但願能給新手一點幫助。

    路慢慢其修遠兮,吾將上下而求索!




   



[火星人 ] 碩果僅存的真正開源資料庫Postgresql已經有497次圍觀

http://coctec.com/news/soft/show-post-74079.html