目前SQL Server 和 Oracle 及 MySQL是互聯(lián)網(wǎng)領(lǐng)域當(dāng)中最常用的三大數(shù)據(jù)庫(kù)。那么這三大數(shù)據(jù)庫(kù)之間到底有哪些區(qū)別呢?中培偉業(yè)《SQL Server2012數(shù)據(jù)庫(kù)管理與性能調(diào)優(yōu)》培訓(xùn)專家姜老師進(jìn)行了詳細(xì)介紹。
姜老師表示,三者是目前市場(chǎng)占有率最高的關(guān)系數(shù)據(jù)庫(kù),而且很有代表性。
從歷史來(lái)看, Oracle成立于1977年,由于其誕生早、結(jié)構(gòu)嚴(yán)謹(jǐn)、高可用、高性能等特點(diǎn),使其在傳統(tǒng)數(shù)據(jù)庫(kù)應(yīng)用中大殺四方,金融、通信、能源、運(yùn)輸、零售、制造等各個(gè)行業(yè)的大型公司基本都是用了Oracle,早些年的時(shí)候,世界500強(qiáng)幾乎100%都是Oracle的用戶。
MySQL的最初的核心思想,主要是開源、簡(jiǎn)便易用。其開發(fā)可追溯至1985年,而第一個(gè)內(nèi)部發(fā)行版本誕生,已經(jīng)是1995年。到1998年,MySQL已經(jīng)可以支持10中操作系統(tǒng)了,其中就包括win平臺(tái)。
由于MySQL的早期定位,其主要應(yīng)用場(chǎng)景就是互聯(lián)網(wǎng)開發(fā)?;旧?,互聯(lián)網(wǎng)的爆發(fā)成就了MySQL,LAMP架構(gòu)風(fēng)靡天下。而由于MySQL更多的的追求輕量、易用,以及早期的事物操作及復(fù)雜查詢優(yōu)化的缺失,在傳統(tǒng)的數(shù)據(jù)庫(kù)應(yīng)用場(chǎng)景中,份額極少。
一提到SQL Server,大家一般都只想到Microsoft SQL Server,而非Sybase SQL Server。SQL Server最初是由Microsoft, Sybase and Ashton-Tate三家公司攔下的生意,是為IBM(又出現(xiàn)了)公司的OS/2操作系統(tǒng)開發(fā)的。隨著OS/2項(xiàng)目的失敗,大家也分道揚(yáng)鑣。 Microsoft自然轉(zhuǎn)向自己的win操作系統(tǒng),作為windows NT軟件方案的一部分。而Sybase則專注于Linux/Unix方向的數(shù)據(jù)庫(kù)開發(fā)。
MS SQL Server主要面向中小企業(yè)。其最大的優(yōu)勢(shì)就是在于集成了MS公司的各類產(chǎn)品及資源,提供了強(qiáng)大的可視化界面、高度集成的管理開發(fā)工具,在快速構(gòu)建商業(yè)智能(BI)方面頗有建樹。 MS SQL Server是MS公司在軟件集成方案中的重要一環(huán),也為WIN系統(tǒng)在企業(yè)級(jí)應(yīng)用中的普及做出了很大貢獻(xiàn)。
在應(yīng)用場(chǎng)景方面,Oracle。Oracle的應(yīng)用,主要在傳統(tǒng)行業(yè)的數(shù)據(jù)化業(yè)務(wù)中,比如:銀行、金融這樣的對(duì)可用性、健壯性、安全性、實(shí)時(shí)性要求極高的業(yè)務(wù);零售、物流這樣對(duì)海量數(shù)據(jù)存儲(chǔ)分析要求很高的業(yè)務(wù)。此外,高新制造業(yè)如芯片廠也基本都離不開Oracle;電商也有很多使用者,如京東(正在投奔Oracle)、阿里巴巴(計(jì)劃去Oracle化)。而且由于Oracle對(duì)復(fù)雜計(jì)算、統(tǒng)計(jì)分析的強(qiáng)大支持,在互聯(lián)網(wǎng)數(shù)據(jù)分析、數(shù)據(jù)挖掘方面的應(yīng)用也越來(lái)越多。
MySQL基本是生于互聯(lián)網(wǎng),長(zhǎng)于互聯(lián)網(wǎng)。其應(yīng)用實(shí)例也大都集中于互聯(lián)網(wǎng)方向,MySQL的高并發(fā)存取能力并不比大型數(shù)據(jù)庫(kù)差,同時(shí)價(jià)格便宜,安裝使用簡(jiǎn)便快捷,深受廣大互聯(lián)網(wǎng)公司的喜愛。并且由于MySQL的開源特性,針對(duì)一些對(duì)數(shù)據(jù)庫(kù)有特別要求的應(yīng)用,可以通過(guò)修改代碼來(lái)實(shí)現(xiàn)定向優(yōu)化,例如SNS、LBS等互聯(lián)網(wǎng)業(yè)務(wù)。
MS SQL Server。windows生態(tài)系統(tǒng)的產(chǎn)品,好處壞處都很分明。好處就是,高度集成化,微軟也提供了整套的軟件方案,基本上一套win系統(tǒng)裝下來(lái)就齊活了。因此,不那么缺錢,但很缺IT人才的中小企業(yè),會(huì)偏愛 MS SQL Server 。例如,自建ERP系統(tǒng)、商業(yè)智能、垂直領(lǐng)域零售商、餐飲、事業(yè)單位等等。
1996年,Bill Gates親自出手,從Borland挖來(lái)了大牛Anders,搞定了C#語(yǔ)言。微軟02年搞定了http://ASP.NET。成熟的.NET、Silverlight技術(shù),為 MS SQL Server贏得了部分互聯(lián)網(wǎng)市場(chǎng),其中就有曾經(jīng)的全球最大社交網(wǎng)站MySpace,其發(fā)展歷程很有代表性,可作為一個(gè)比較特別的例子。其巔峰時(shí)有超過(guò)1.5億的注冊(cè)用戶及每月400億的訪問量。應(yīng)該算是MS SQL Server支撐的最大的數(shù)據(jù)應(yīng)用了。
架構(gòu)。其實(shí)要說(shuō)執(zhí)行的區(qū)別,主要還是架構(gòu)的區(qū)別。正是架構(gòu)導(dǎo)致了相同SQL在執(zhí)行過(guò)程中的解釋、優(yōu)化、效率的差異。
Oracle 數(shù)據(jù)文件包括:控制文件、數(shù)據(jù)文件、重做日志文件、參數(shù)文件、歸檔文件、密碼文件。這是根據(jù)文件功能行進(jìn)行劃分,并且所有文件都是二進(jìn)制編碼后的文件,對(duì)數(shù)據(jù)庫(kù)算法效率有極大的提高。由于Oracle文件管理的統(tǒng)一性,就可以對(duì)SQL執(zhí)行過(guò)程中的解析和優(yōu)化,指定統(tǒng)一的標(biāo)準(zhǔn)。
MySQL最大的一個(gè)特色,就是自由選擇存儲(chǔ)引擎。每個(gè)表都是一個(gè)文件,都可以選擇合適的存儲(chǔ)引擎。常見的引擎有 InnoDB、 MyISAM、 NDBCluster等。但由于這種開放插件式的存儲(chǔ)引擎,比如要求數(shù)據(jù)庫(kù)與引擎之間的松耦合關(guān)系。從而導(dǎo)致文件的一致性大大降低。在SQL執(zhí)行優(yōu)化方面,也就有著一些不可避免的瓶頸。在多表關(guān)聯(lián)、子查詢優(yōu)化、統(tǒng)計(jì)函數(shù)等方面是軟肋,而且只支持極簡(jiǎn)單的HINT。
SQL Server 數(shù)據(jù)架構(gòu)基本是縱向劃分,分為:Protocol Layer(協(xié)議層), Relational Engine(關(guān)系引擎), Storage Engine(存儲(chǔ)引擎), SQLOS。SQL執(zhí)行過(guò)程就是逐層解析的過(guò)程,其中Relational Engine中的優(yōu)化器,是基于成本的(CBO),其工作過(guò)程跟Oracle是非常相似的。