2011年6月14日 星期二

不同資料庫的比較 - SQL Server vs Oracle and MySQL

        市面上有許多資料庫,較常聽過如Microsoft SQL Server、Oracle、MySQL等,當然還是有其他許多的資料庫,但是我就不一一列入說明,就以我常使用的類型進行比較,當然我是以我使用的情況進行簡單的比較,謝謝大家了。

        就比較的方面我分成幾個不同的面向進行討論,如效能、整合度、全面性、高可用性等進行比較,但是在比較之前還是說明在各家產品的使用上不一定如我所說,就我也有看過將MySQL調到速度絕佳的狀況,連其他人建立的高價資料庫也比不上,也有人將Oracle使用到跟Access差不多,所以沒有一定的情況,主要還是看資料庫管理師的功力(雖然程式設計師也需要負上責任),在此我就先以不同的層面來加以說明。

1、價格:
在價格上就以Oracle的成本最高,而計費方式是以CPU計價,1顆CPU如果為8核心的話,會以單價*8的方式進行,而SQL Server的話也是以CPU計價,但如果1顆CPU有8核心的話,會以8 * 0.5 * 單價的方式進行,而MySQL大家一直以為是免費的,但是當你應用在商業行為時,還是需要收取一定的費用,最高版本的 [MySQL Cluster Carrier Grade Edition Subscription (5+ socket server)] 也要美金20000元,其實在商品導入的初期在Oracle與SQL Server都有免費版的可以使用,而且也可以用在商業上,雖然功能上會有其一定的限制,但是未來升級會非常的簡單容易,很可惜知道的人很少,關於費用上大家可以參考下列的網址:


2、效能:
就三種資料庫在比較上,依據 TPC 的分析結果,其實就以Oracle處理效能最快,而就以每秒交易量與價格比較的話,就以SQL Server最有效益,而MySQL也有不錯的表現。

PS: TPC(Transaction Processing Performance Council)是一家位於美國加州聖荷西市的非營利組織,專門執行商用負載標竿測試(benchmarks),並將性能數據公布給產業。

參考網址:http://www.tpc.org/

3、平台整合度:
SQL Server只能運用在Windows的平台上,而且在此平台上就屬SQL Server運作的最好,而且速度最快,而其他的二種資料庫皆可以達到跨平台的運用,而在Unix 與 Linux都有非常高的穩定度與效能,所以平台的選擇對於後續資料庫的影響也有非常大的關聯。

4、程式語言整合度:
三種資料庫其實對於任何一種程式語言都可以進行存取與使用,但是如同上一個段落的描述,SQL Server與.Net配合的最好,而Java大部份會選擇Oracle、PHP也大部份選擇MySQL,各有各的選擇,但再次提醒資料庫連線時有連線等級的區分,如你使用ODBC的驅動程式來連線,雖然可以連線,但是會無法發揮資料庫的完整特性與效能,所以建議安裝原廠的驅動程式,藉以得到較佳的效能,如ASP.NET要連線到Oracle時,就需要額外安裝 ODP 的驅動,而Java也有分成Thin、OCI與KPRB等,所以在連線上還是需要注意,藉以發揮資料庫的完整效能。

5、工具整合性:
Microsoft SQL Server在安裝後其實有包含非常多的工具可以應用,我想這也是非常多人喜歡SQL Server的其中一個原因,因為不管報表、資料轉換(ETL)、商業智慧(BI)等,一應具全,都是可以免費使用,而他所包含的工具其完整性與功能也與許多商業軟體不相上下,如報表中的Reporting Service就是一大特色,一般大家最常聽到或使用到的就是Crystal Reports,但是此軟體的價格非常的貴,所以常常會造成專案在軟體授權上的成本,進而影響客戶購買的意願,而兩者在功能上與圖表上的差異,可以參考我的另一篇著作(Crystal Report與Reporting Service圖表種類比較),相信可以得到進一步的說明。

另外在ETL主要是透過的部份是透過SSIS來進行,而這套軟體在功能上、穩定度與轉換的速度上更是備受肯定,當然尤其在其他資料庫轉入到SQL Server時,效果更是明顯,目前的記錄是1.18TB的資料量只需要30分鐘以內即可完成,甚至可以媲美許多ETL的大型軟體。

PS:關於SSIS資料轉換的速度比較,可以參考此網址 - http://blogs.msdn.com/b/sqlperf/archive/2008/02/27/etl-world-record.aspx

而在BI的區塊中,其實在SQL Server 2005以後就有非常大的進展,特別是Data Mining演算法的區塊上,更是增加了非常多的種類,讓你在進行資料分析上更可得心應手。

其實就管理層面上來看,其實我個人管理了這麼久,其實坦白說並沒有使用到其他第3方的工具,因為SQL Server本身提供的工具與資訊就可以讓我很容易的進行資料庫的管理,所以認人有值回票價的感覺。

在其他二種的資料庫在安裝後的初期其實就只有簡單的介面,而有使用Oracle的大部份會再另外購買TOAD來管理,當然費用上也是不便宜,但是Oracle在第三方軟體的支援度與選擇性上也是最高的,所以這也是大部份廠商建議選擇的原因之一。而MySQL本身的初期工具應該算是最少的,而在第三方軟體的支援度上也有限,所以真的是大大的考驗了DBA的能力。

6、高可用度:
在三種資料庫上其實對於高可用度的支援都非常完整,所以個人認為不相上下,但是Oracle在負載平衡(Load Balance)上有支援RAC的架構(如下圖),所以在負載平衡上看起來算是略勝一籌(但是仍需要確認你是否真的需要此功能,詳細介紹也可以參考我的另一篇文章 - SQL Server 負載平衡架構介紹 - Load Balancing),而其他兩種的資料庫在負載平衡的部份,都是透過複寫的機制完成,關於SQL Server的說明,同樣的請參考 (SQL Server 負載平衡架構介紹 - Load Balancing),而MySQL的架構如下圖所示,但是另外提醒一點,目前MySQL Proxy仍在測試階段,所以如果要使用在正式環境的話,還請多多考量。






MySQL 負載平衡架構




7、介面操作性:
三種資料庫軟體上,就以Microsoft SQL Server 的介面操作最容易使用,而且裝好後不需要太多的設定就可以進行,不管是SQL的設計,或是管理的功能一應俱全,而且許多進階的功能如HA的設定等,也是透過工具的方式設定的即可,非常的容易上手。

但就我認為也造成了另一個不好的使用習慣,因為太容易使用了,所以在資料庫建置時的事前規劃通常不太完整,就直接的進行,我也曾經看過某系統整合大廠在協助建置時,也是頂多規劃Cluster而已,其他內部的設定值也是照預設進行,到後來效能不足時,才怪說SQL Server的效能差、不實用等,但其實個人認為裡面的學問非常的多,可以調整的項目也非常的多,如同我前面所提,不管是什麼樣的資料庫都需要DBA的細心照顧與調整,並非一簇可成,而詳細的設定方法,可以參考我另外一篇翻譯的文章進行了解 (SQL Server 儲存設備 (Storage) 最佳調整作業),或是留言與我討論都可以。

8、安全性:
在這個部份的比較,我覺得三者都差不多,不管是在帳號管理、資料傳輸、備份加密等,都有非常好的表現,但對於微軟官方針對安全性的部份有說到,他們每年推出的更新次數相對少非常的多,不像其他的資料庫,但坦白說這個可能關係到,更新的大小,錯誤修正的速度等問題,我也沒有詳細的針對三者進行細部的比較,所以不敢妄下定論,但是在SQL Server 除了在SQL Server 2000的蠕蟲事件後,就非常少的傳出重大漏洞的消息,而就個人使用的情況也無重大的問題發生。


總結:
針對三個資料庫,我只是針對我的了解與在網路資訊進行分析,沒有絕對的勝負之分,個人認為還是取決於你使用的技術、平台架構與DBA的功力,以上的資訊也是提供給大家參考,如果需補充的部份,還請不吝指點,謝謝。


關鍵字:SQL ServerOracleMySQLDatabase比較資料庫SQL Server vs OracleSQL Server vs MySQL

10 則留言:

  1. 終於瞭解到
    為什麼許多人力職缺需求動不動就是SQL Server加.Net程式設計
    還有坊間書籍有一堆PHP+MySQL
    而從Sun也已經被Orcalce併購的角度來看
    Java與Orcalce好像也是理所當然的

    by 資訊領域菜鳥

    回覆刪除
  2. 其實各有各的市場,學什麼技術都好,但是一定要深入,只要有恆心,下一個大師就是你,加油哦!!

    回覆刪除
    回覆
    1. 感謝您的文章,真的很棒!!受益良多~~

      刪除
  3. 我是一個初心者,看完前輩的解說令小的獲益不淺,萬分感謝啊

    回覆刪除
    回覆
    1. 希望對你有幫助,有問題再來相互討論囉!!

      刪除
  4. 我也是初学者, 目前只能掌握access级别的一些应用,想更深入地学习DBA的内容,请问MySQL 更适合我还是SQL server 更好些?手上有实际的工作,但纠结与两个系统不能决断.

    回覆刪除
    回覆
    1. 兩個系統各自都有擁護者,選擇那一個皆可,但大方向來說,一般的使用者皆是看開發的程式語言為何,就選擇那一個,如PHP就常使用MySQL、而ASP.NET就會選擇SQL Server,但沒有絕對,提供給你參考。

      刪除
  5. "因為太容易使用了,所以在資料庫建置時的事前規劃通常不太完整",這有點相互矛盾,這句話不但未能為微軟推廣SQL Server,反而道出了微軟本身SQL Server的缺點不是效能太慢就是產品規劃本身就有瑕疵,到底是那個有問題,建議直言為佳,不要閃爍其詞

    回覆刪除
    回覆
    1. 路過回覆一下,
      1. SQL Server 效能不會比較差, 現在幾個主要資料庫都很強, 效能的極致需要靠規劃、設計及調教才能感受出差異, 單一方面認為某一資料庫產品效能不佳是很過時的認知
      2. SQL Server 產品規劃有瑕疵的話就不會成長到今天的局面, 連Oracle專業DBA都要去學SQL Server, 為什麼?客戶買SQL Server的越來越多...

      刪除
    2. 應該只是說設定門檻很低 資料很容易就撈出來 而沒有注意遠本應該好好規劃的資料表 以致後面太亂而造成效能不佳!

      刪除