Oracle數據庫是我很喜歡的一個數據庫,但是也有人喜歡其他的相關的數據庫,不論我們選擇的是那個相關的數據庫,我們的主要實現的目標就是有存儲大量 的相關數據,你應用程序使用的操作系統和語言平台,你的預算,以及是否需要數據倉庫,BI或決策支持系統等。
背景
我的許多朋友,開發人員,應用和系統架構師,有時甚至是系統管理員經常問我同類型的問題:“Bo,在我的應用中該使用SQL Server還是使用Oracle數據庫?”,“BO,我應該將我的Sybase數據庫遷移到SQL Server嗎?”,“哪個數據庫(平台)是最好的?”,“為什麼我們不使用開源數據庫,如MySQL或PostgreSQL?”。
所有這些問題基本上都是相同的 —— 哪個數據庫平台最適合某個應用程序,或是哪個數據庫平台對IT和業務最有意義?
為了回答這些問題,在我推薦任何數據庫平台之前,我會問他們更多的問題(通常是十多個),很多時候人們不理解為什麼一個簡單的問題會引發這麼多問題。
其實很多人不知道為什麼他/她需要一個數據庫,什麼是關系數據庫,數據庫與電子表格之間的差異(以及各自的優缺點),該用Access數據庫還是SQL Server數據庫,或應用程序能從數據庫平台獲得什麼好處。
雖然我不是在這裡宣傳數據庫是什麼,但我知道對IT和非IT人員談論數據庫完全不是一回事,我不想被稱為以數據庫為中心的呆子,不過我認為在21世紀,人們一直在談論BI(商業智能),我也認為最靈活,最復雜和最易維護的系統是由數據驅動的,產生的數據量多了就得用數據庫來保存。
下面我對最流行的數據庫平台只做簡要的介紹,並根據我的經驗和與其它IT界朋友的互動,介紹一下人們是怎麼使用這些數據庫的。
下面我19年來使用過的數據庫:
DBase/FoxBase/FoxPro in the DOS/Novell/Windows 3.x world
MS SQL Server (6.5,7.0,2000,2005 and 2008)
Oracle (7, 8/8i,9i,10g)
Sybase SQL/ASE Servers (4.9.2, 10, 11, 11.9.2, 12/12.5, 15.x)
Sybase IQ 12.6/12.7
Informix/Dynamic (6, 7)
MySQL (4, 5/5.1)
PostGreSQL (8.3.5)/EnterpriseDB
此外,我參加了一系列的數據庫選型評估,如Vhayu和OneTick,我在各行業也有過內存數據庫使用經歷,如Oracle數據庫 TimesTen和Sybase ASE內存版本(Sybase RAP商業版的一部分,它已成為時間序列數據庫領域的一個強力競爭者,特別是去年初和CEP集成後,影響越來越大)。
我曾經擔任過公司全職員工或不同公司不同項目的顧問,真的覺得在數據庫世界中確實沒有銀彈,
選擇什麼數據庫主要取決於以下幾方面因素:
你是誰;
你要實現的目標(業務/功能要求,性能/可靠性/可擴展性/可用性要求);
當前數據庫存儲了多少數據;
應用程序要選擇的操作系統和語言平台;
你的預算有多少;
你是否想/需要構建一個數據倉庫,BI或決策支持系統。
比較不同的數據庫系統就象比較不同的開發平台和操作系統平台:
Java/J2EE與(C#, VB)/.Net比較
Windows與Linux/UNIX比較
Linux與私有UNIX系統如AIX/HP-UX/Solaris/Tru64/Irix比較
Unix與OpenMVS/UniSys/Tandem/IBM Mainframe比較
如果我們在前端辦公應用系統,如訂單錄入,銀行或電信系統中不需要數據庫(主要是擔憂鎖/阻塞,延遲和低I/O等),我們只希望使用數據庫來存儲事實數據,或使用數據庫來備份數據。
當然,所有關系數據庫都提供了不同的功能,即使它們都聲稱遵循ANSI SQL和SQL-92標准,但實際上都有自己的一套SQL語言,這就好比Websphere/Weblogic/Oracle App Server/Sybase Eserver/Jboss之間的關系,它們是J2EE的不同實現,都兼容J2EE規范,但也有自己的擴展和變化。
關鍵任務(OLTP)和高性能系統
如果我們需要數據庫在關鍵業務系統中發揮更重要的作用,並希望做到無故障時間/高可用/集群,可靠性(性能和數據量),災難復制和自動生成報告等目標,或需要實現極端高速和低延遲(HPC,高性能計算)效果,那麼我們可能需要數據庫的企業級功能,但這樣的成本也更高。
HA(高可用)集群功能
各數據庫平台的集群功能如下:
Oracle RAC最適合HA集群,負載均衡和擴展;
MS SQL Server提供HA故障轉移功能,但無負載均衡;
Sybase ASE 15集群與Oracle RAC功能相當;
TeraData本身就是一個分布式數據庫平台;
MySQL集群聲稱TPC-C性能基准測試比Oracle RAC還高;
IBM DB2/UDB在運行AIX HACMP(高可用集群多處理)的IBM P系列/Power服務器和Veritas VCS/Sun等集群上運行得很好。
高性能/低延遲/內存數據庫
Oracle數據庫提供TimesTen內存數據庫;
MySQL的集群使用內存存儲引擎;
Sybase提供ASE內存數據庫;
另外,我們還可以使用RAMSAN/SSD(固態硬盤)安裝SQL Server數據庫,所有與數據庫相關的磁盤I/O都發生在SSD上,而不是傳統硬盤上,因此我們可以大大減少磁盤I/O延遲,提供I/O吞吐量,並提高數據庫的整體性能;
還有其它的內存數據庫,如SQLite或eXtremeDB,但它們大多數要麼只支持嵌入式系統,要麼同一時間只支持單用戶或單連接。