兩隻拉拉

兩隻拉拉

2011/7/16 攝於猴硐
Canon EOS 5D
EF 85mm F1.8 USM

如何在 Ubuntu 下安裝 PostgreSQL 9.0 和 pgAdmin III 1.12.0

按照「官方說法」,PostgreSQL 9 的 Ubuntu 套件會在 11.04 版釋出時隨著釋出。所以這篇文章的時效性可能只有一個月不到,但是我仍然決定丟上來。因為世事難料,誰都不會想到日本會發生 9.0 強震,並且引發史上第二大的海嘯,還一併發生史上第二嚴重的核子安全事件;那誰又能預知 PostgreSQL 或 pgAdmin III 在下一版的 Ubuntu (11.04) 發行後,是不是還能保持最新版本的更新。別忘了,RHEL/CentOS/Fedora Core 版本的 PostgreSQL rpm 套件,仍然是社群版本的更新速度是最快的。如果你一直只是跟隨 Redhat 官方版本,那恐怕早就被怪客搞得七葷八素了。

PostgreSQL 的版本

這個標題,可能很多人看都不看,就略過這篇文章,就像我在上 PostgreSQL 課程的時候,我的投影片裏有一頁提到查看 PostgreSQL 版本的方法。而這一頁被一些意見比較多的學生私下抱怨,認為我在灌水,增加篇幅。而我想略過不看這篇文章的朋友,大概也是認為這篇文章不重要吧。其實不然,尤其是當你碰到的伺服器,不是由你全新安裝的,而是要幫忙維護的舊系統時,目前所安裝的版本,就要相當當心並注意了!

先提一下,PostgreSQL 安裝時,server 和 client 可以是不同版本。而這種版本的不一致,的確有潛在的危險可能會發生。如果 client 端比較舊,那還無所謂;但是若是 server 端的版本較舊時,你就要當心了。

你想要知道伺服器的版本,那可以從 psql 或 pgAdmin III 直接下 SQL 指令:

postgres=# SELECT version();

即可。

在 Ubuntu 上的 PostgreSQL 預設存取認證方式

在 FreeBSD 和 CentOS 上,第一次著手使用 PostgreSQL 非常容易,因為 root 的密碼你會知道,所以只需要以下列這兩個指令,就可以不用知道安裝程式到底替你的 pgsql 或者 postgres 指定了什麼複雜的密碼,你都可以切成 PostgreSQL 的系統帳號,來執行該有的管理命令:

$ su

# su - pgsql (這是在 FreeBSD ,或者)

# su - postgres (這是在 CentOS 上)

在 FreeBSD 上第一步更輕鬆,因為 FreeBSD 上的 PostgreSQL port 版的預設 pg_hba.conf 設定,把 localhost 和本機使用 Unix domain socket 的權限,設成最寬鬆的

新機第一次公告

雖然前幾天,那頁單薄的首頁已經宣告,但是我在這裏還是要再重復一次宣布,我的伺服器的硬碟,在台電一次無預警的跳電後,再也回復不了了。

更令人難過的是,我來不及把我的 Blog 的文章備份下來,換句話說,有些文章恐怕是再也回不來了。幸好有辜狗大神幫我把一些頁面的文字備份了一份,將來可能有些網頁只需我再跑一次,取下一些截圖,不用再一次絞盡腦汁來堆砌文字。但是還是有部份文章應該是一去不回了,還有大約十篇打到一半的文章,永遠消失了。

原本還在慶幸,硬碟掛的是系統目錄,但是這幾天發現,我怎麼努力都無法掛上其它幾個剩下的 partition,所以我想乾脆不再努力,就讓那些文章好好的去了。還有各位寶貴的意見,也一併隨舊系統而去了。幸好我的照片一直都有好幾份的備份,所以,你還是可以從 黑喵的攝影集 和 備份的 黑喵的攝影集 看到我的攝影作品。

這件事情我得到不少教訓,增添了不少設備及備份的機制。但是這些細節我不會在這裏報告,因為才架好兩天的伺服器,已經立刻引來上萬次的 ssh 攻擊,讓我了解當初硬碟為什麼會無預警損毁。

Npgsql

如果你常常在微軟的世界裏寫程式,你一定知道什麼是 .Net Data Provider,它就是 .NET 資料庫程式設計用的資料庫驅動程式,而 PostgreSQL 專屬的官方 .Net Data Provider 就是 Npgsql。Npgsql 目前是 PostgreSQL 的應用程式界面中,維護的速度前三名的;另兩個是 ODBC driver 和 JDBC driver。半個月前 Npgsql 釋出 2.0.7 版。這只是 2.0 版的第七個安全性更新。已經釋出一年的 2.0.x 版,實作了給 .Net 2.0 和 3.5 甚至 3.5sp1 的 .Net Data Provider 絕大部份的功能。也就是說,如果你是在用微軟的 Visual Studio 2008 寫程式,不管你是用 C#、VB 還是 C++,就是用這個 Data Provider 就對了,就算你用的是不用錢的 Visual Studio Express 也能。

Netbeans 6.5 的 Unit testing 初次接觸

喔,真棒!最近這一陣子在安裝一套用 USB 開機的 64 位元版本的 Ubuntu。在考慮要裝什麼開發工具,先想到裝一套給 C++ 用,所以選了 wxWidgets 推薦的 Code::Blocks。裝了以後,發覺它並不是最好用的 C++ 工具,除了可以很容易的用 wxSmith 把 wxWidgets 圖形界面建立起來以外,其它現代開發工具應該要有的工具,它都沒有。所以又落到 Eclipse 和 Netbeans 兩套工具的二選一抉擇。最後我選了 Netbeans。原因是:它的 6.5 版整體建構看起來比較一致,雖然看起來因為加入太多工具而相形之下很巨大,但是,在初期佈署時,我可以省下不少心力,把時間放在比較需要的部份。唉,七年前我在做同樣考量時,因為完全相反的理由選擇了 Eclipse,結果是陷入不斷新增套件的夢魘中。就在下載的時候,居然發現正體中文版本是 available,那當然是下載中文版來試用啦。

結果裝起來時嚇了一大跳。

實作建立新的 Tablespace

上個星期發表的 PostgreSQL 的 Tablespace 只有文字說明。事實上,我曾想用圖來解說 Oracle 的 tablespace 的架構,順便也畫一張 PostgreSQL 的架構圖,但是人懶沒畫Tongue out;不是啦,其實是我不太會用繪圖軟體,等我有空再慢慢把圖補起來。但是,如果實作一下在 PostgreSQL 建立一個新的 tablespace,然後 demo 一下是做得到的。

PostgreSQL 的 Tablespace

這一篇文章原本是三個月前就開始寫,原先預定是剛好九月底時出刊,但是在發展的過程,突然覺得似乎應該先介紹一下 PostgreSQL 如何來放置、維護資料,再來聊聊 Tablespace 可能比較適當,接著生了一場重病再加上發神經買了一台新電腦,所以就放到現在才發表。

PostgreSQL 在進入 8.0 版時,整套系統的架構大變,新增了不少功能和架構, Tablespace 就是其中一項。當我第一次在 pgAdmin III 上看到 Tablespace 這個字眼出現時,我是非常興奮的,因為要在較大型的資料庫中,才會有這種概念。尤其是之前有 Oracle 的實作經驗,所以看到熟悉的字眼出現時,備感親切,而內心對它充滿期待。但是在進一步深入研究後,就有如被潑了一桶冷水一樣,PostgreSQL 的 Tablespace 和 Oracle 的 Tablespace 功能上差距還不小,實作上更是不一樣。

首先來說明一下,什麼是 Tablespace?Tablespace 一般都翻譯成表格空間。而表格空間,按照手冊上的定義,是整個系統的資料主體。

PostgreSQL 如何組織資料

原本上個月,打算寫另一篇文章,但是寫到一半,臨時改變計劃,決定先把這篇文章推出來。

在教授 PostgreSQL 時,我發覺,要讓稍微有點基礎的其它資料庫使用者,最容易上手 PostgreSQL 的方法,就是從說明 PostgreSQL 如何在檔案系統中放置你的資料著手。PostgreSQL 存放資料的邏輯相當簡單,所以進階使用者在了解這個邏輯後,很容易就能了解如何備份、擴充功能等等進階功能,不像 Oracle 等商用資料庫,把資料包在一層厚厚的黑盒子裏,不讓你接觸和了解它的行為;但是很不幸的,它也相當程度的依賴檔案系統。這會出現什麼問題呢?等我介紹完 tablespace 後,我想不用我多做解釋你也自然立刻能夠了解。

在開始介紹前,我要介紹一個環境變數。這個環境變數是 $PGDATA,將來我會找個時間把 PostgreSQL 會用到的環境變數做個整理,再另外發表一篇文章來介紹。垷在先稍微介紹一下 $PGDATA

訂閱文章