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

11 則留言:

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

      刪除
  6. 1. 單以比較DB效能, SQL Server 效能比是略差, 但沒有大幅差距.
    2. 但應用系統開發後, 程式的設計或SQL寫法, 占緩慢/效能問題的 85%+. (這個一定要注意,不然一些無腦的Program不分析問題, 只會在那怪DB)
    3. SQL Server vs Oracle 用壓力測試連測100~700天, SQL Server有要重啟的比率, 但Oracle沒重啟,穩定性大於sqlser
    4. 萬一要重啟了, 有時只重啟sqlserver也無法解決, 要重啟winserver.. 在某些商業環境, 要考慮 lost cost, 不能用PC當了就重開的初學者思維, 來規劃DB架構.



    回覆刪除