最近公司的項目選擇了一個全新的資料庫系統作為開發平台,我也正在努力的適應在此資料庫下的開發是使用。對於很多使用者(包括我們程式員)都對於選擇何種資料庫往往一頭霧水。而我以前也經曆過此階段,下面我想談談我的看法。
由於本人只是使用過 PostgreSQL, MySQL, Oracle 這三種資料庫。這三種資料庫也非常有代表性,下面的討論我只針對這三種資料庫而言。有關其他的資料庫請大家自行推敲。
著作權問題
MySQL 和 PostgreSQL 都是開放的資料庫系統。MySQL 的使用協議比較的複雜,從簡單的方面看,它是基於 GPL
協議的(為 MySQL 的使用者可以得到 MySQLAB 的支援,並使用 MySQL 協議)。PostgreSQL 系統是完全基於 BSD
協議的,這這一點它比 MySQL 更加的“自由”。
GPL 協議要求使用者必須公開你修改以後的代碼。而 BSD 協議則可以自由的用在商業用途上,無需任何的限制。
而 Oracle 是完全一個商業的系統。它的使用完全是需要付費的,並且不能修改、拷貝其代碼和程式甚至文檔。
成本
成本相對著作權而言。按照上述三種的資料庫系統,如果按照費用的計算來講。Oracle 的支出是最高的,MySQL 相對來說所付的費用稍微少一點。PostgreSQL 則是完全免費的。
支援
對於資料庫的後期支援人員是非常重要的。Oracle 資料庫有由於是商業產品,所以他的支援自然非常的周到。按照國內的情況,MySQL 和 PostgreSQL 的支援基本上是依靠網路和社區。
吞吐效能
從技術的角度上將,由於三種資料庫的應用對象不一樣,所體現的效能並不相同。Oracle
適合中大型的系統開發和維護,效能適合海量資料的儲存。而 MySQL 則是適合中小型的系統快速的開發和維護,PostgreSQL
則標榜自己是“功能最全的開來源資料庫系統”,效能自然不俗。
而我從我個人的使用經驗來說,打一個形象的比方:Oracle 好比卡車、MySQL 好比皮卡、而 PostgreSQL 好比是客車。
穩定性
對於穩定效能來說,這三種資料庫都可以適應 7×24 小時的考驗。相對效能來說,我的個人經驗是 Oracle 的穩定性是最好的,MySQL 其次,而 PostgreSQL 次之(相對而言,這三種資料庫的穩定性都是很優秀的)。
總結
說道這裡,你可能對於這三種資料庫還是難以抉擇。我的個人意見就是,按照實際的項目的需求、規模和成本考慮出發。
Oracle 是大中型項目的首選,而它的支出比較高。相對經濟的替換方案是 PostgreSQL(但它需要更多的人工支出)。
對於中小型的項目,MySQL 則完全是可以勝任的。Lamp 系統在開源界的效能是有目共睹的。
而對於程式的開發來說,Oracle 常和 Java(JSP)搭配,MySQL 則一般和 PHP 搭配,PostgreSQL 則可以和多種程式連結。
附:
一家之言,僅作參考之用。下面我摘一下來自 searchoracle.com 的一則經典的回答:
PostgreSQL, MySQL, Oracle or other? ===> QUESTION POSED ON: 26 April 2002
Which should I choose: PostgreSQL, MySQL, Oracle or other? The
application is not Web-based, and the database contains 50 tables with
the biggest table containing 18 million rows (6GB total). The engine
should have:
# good backup/restore to/from file service # ability to lock at row level # fast inserting, updating posts
> EXPERT RESPONSE
Which database version do you select? That\'s a tough one. It all
depends on a lot of different factors. You\'ve listed a few factors,
but not all of them. The biggest one is price. How much can you afford?
Oracle will cost much more. And MySQL is free as long as you follow the
GPL. You state that you want the ability to lock at the row level.
Oracle is one of the best at this, but MySQL with InnoDB is making
progress. You also stat that you want fast inserts and updates. For
that, I\'d go with Oracle. A properly configured Oracle database will
run really nicely.
Other factors to consider are the expected number of concurrent
users, the expected data growth, and that application. Like I said,
there are lots of factors to consider. In these cases, it\'s not a bad
idea to hire a consultant to help in your determination so that your
company doesn\'t waste time and money.
我該選擇 PostgreSQL, MySQL, Oracle 還是其他?(註:時間為 2002 年 4 月 26 日)
我的項目不是一個 Web 項目,資料庫大概有 50 個表最大的可能包含了一千八百萬條資料(大概有 6G 的資料)。我該選擇什麼資料庫呢? PostgreSQL、MySQL、Oracle 還是其他?所需的要求必須包含:
# 良好的備份/恢複系統 # 具有行鎖定功能(lock at row level) # 具有良好的效能
專家回答:
到底您該選擇哪個系統?這個問題非常的難以回答。這是居於不同的需求而定的。您只是列出了一小部分的要求,並沒有全部列出您到底需要什麼。最大的問
題可能是成本的問題。您的預計支出是多少呢?Oracle 可能需要您更多支出。MySQL 是基於 GPL
協議的,所以它的支出相對少些。您需要有行級鎖定功能(lock at row level),我想 Oracle 是最好的權責,但是 MySQL
包含了 InnoDB 以後也具有此良好的效能(譯註:自 MySQL 3.2
以後已經具有此功能了)。再次,您需要有良好的效能。老實說,我更傾向於 Oracle。具有良好配置以後的 Oracle 效能會讓人非常的滿意。
還有其他的需求就是有多少的使用者使用您的資料庫,資料庫的增長幅度,還有就是其上的應用。想我上面所說的,需要考慮的因素有很多。我並不能完全決定您到底使用哪個資料庫,我想您或許需要一個顧問評審您具體的應用了以後才可能最終決定下來,這並不需要很多的時間和投入。
這三種資料庫近年的趨勢圖