崛起吧 PostgreSQL
Postgres 正獲得越來越多的關注 - 理所應當的 :)像 Postgres 這樣開放的數據庫系統正在和大型、昂貴、不規則的“企業級”系統,例如 SQL Server,Oracle 形成正面的交鋒,提供同等的功能,但更好用。在所有這些系統中,Postgres 是最智能,最快速和功能最全面的。
Postgres.app
最近有一些關于 Postgres.app 的風言風語。大部分人不理解 Postgres.app,我來簡單解釋一下吧。
Postgres 可以配置很多有趣的選項,例如運行地球空間信息索引(PostGIS),創建 Ruby 和 JavaScript 方法,擴展查詢引擎以支持遠程數據例如 GMail。這些功能都需要從源代碼編譯,這是一個比較痛苦的過程,即使你在 Mac 上使用 Homebrew。
Homebrew 根據常用的配置抓取源碼并編譯。Postgres.app 是預先編譯好,并且作為一個守護進程運行。你可以根據需要打開或者關閉。你只需要下載它,拖動到你的應用目錄就搞定了。
對比一下 SQL Server 和 Oracle 的安裝過程吧!
這明顯要迷人很多。如果你使用的是 Mac,你還可以使用 Navicat。有一個免費的版本,你也可以先玩一下他們的demo。
重新認識一下這位老朋友
PostgreSQL 已經存在了很長時間了。你看到這里也許在想這操蛋的名字到底是誰取的?Tom Lane 的解釋如下:
軟件的名字是 PostgreSQL 或者 Postgres,不是 postgre……的確,1996年決定叫它 PostgreSQL 而不是更簡單的 Postgres 應該是這個項目到目前為止犯的唯一一個錯誤。但現在想改已經太晚。
Postgres 是從一個非常古老的數據庫系統 Ingres 移植而來,目的是創建一個可插拔的,可伸縮的快速數據庫系統,并且是用戶友好而智能。“POSTgres”這個名字似乎是在影射之前的項目“After Ingres”。
誰在乎呢?
這一點很關鍵 - 不是很多人。隨著 PHP 的興起,“更友好”的 MySQL 平臺被廣泛的采用,而不是更嚴謹,基于規則的 Postgres 系統。“更友好”在我看來是“更愚蠢”。
好吧,我承認我的話很傷人,我收回。這一段視頻是我在 Tekpub 上發布的,名字叫做“MySQL 的危險”。假如你不想看完整段視頻(譯者注:天朝的我們沒法看),我來做一個總結:
- MySQL 可能會忽略你的默認值或者限制,為了“幫助你”不要太嚴謹
- 假如字段不能為空的話,它不能向非空字段插入 ""
- 假如字段不能為空的話,它會插入無意義的日期例如“0000-00-00”
- 1/0 返回的是 NULL
- "THIS IS NOT A NUMBER"/0 返回的是 NULL
- 假如你向一個長度限制為2的字段插入1000的話,它會幫你四舍五入成99
這些就是你要小心使用 MySQL 的地方。它默認不會保護你的數據,而是以犧牲數據完整性來嘗試讓你通過。這在我看來很愚蠢。
如果這些你都不在乎的話,我還有一個詞要送給你:Oracle。
快速,可擴展,有趣
Postgres 有很多的功能,大部分人可能都不知道。它有很多句法上的技巧:
- 關鍵詞“Infinity”意味著比任何輸入的數字要大。這可以是數字,也可以是日期,也可以設置正負。
- 可以識別“today”,“tomorrow”,“yesterday”等關鍵詞
- 令人驚訝的數據類型,例如 Arrays,IP地址(支持 IPv6)。還有空間類型,例如線,正方形,圓形
- 數據表繼承,這是一個很奇怪的功能,可以讓你的一張表繼承另外一張表
- 自帶自然語言全文索引
更重要的是 Postgres 還非常的快速并且可擴展。我和我的 DBA 朋友 Rob Sullivan 做了一些測試,裝載 StackOverflow 600萬條的文本數據。我們用的是 Windows 的機器,在很多情況下 Postgres 秒殺了 SQL Server。
雖然 SQL Server 也可以為數據表分區,但是你必須付費,更何況 Postgres 的性能更好,并且索引更小。
如果這些還不夠的話,Postgres 默認支持 TOAST 數據表。這個名字很奇怪,是“Automatic Table Compression”的縮寫。我在本文最后的 demo 中展示了這一點。還有,Postgres 會在你的磁盤上壓縮數據,減少 RAM 和磁盤的使用量。
這個功能使得 StackOverflow 的 dump 數據從24G降到了6G!記住這些都是Postgres免費提供的,而使用 SQL Server 你就必須購買企業授權。
還有五件你不知道的事情
關于 Postgres 還有很多可以寫,我還是想貼一下我在 NDC 2012 上的演講 “5 Things You Didn't Know About PostgreSQL”:
- 通過 Foreign Data Wrappers 進行 推ter 查詢
- 使用 Google 的 V8 引擎編寫 JavaScript 函數
- 秒殺 MySQL 的那些雕蟲小技
- 避免鎖以及自帶的快照功能
- 數據表繼承
- 瘋狂的數據類型
希望你會喜歡。
原文鏈接
來自:OSChina