如何用正確的態(tài)度審視SQL Server數(shù)據(jù)庫(kù)
很多使用SQL Server數(shù)據(jù)庫(kù)的朋友,可能從MSSQL2000就開(kāi)始用起,一路升級(jí),目前版本是2019,但只提供預(yù)覽版。正式版本的SQL Server是2017版,這也是筆者目前正用的版本。

SQL Server 2019還真是了不得,她在大數(shù)據(jù)群集、數(shù)據(jù)庫(kù)引擎等方面有重大功能突破,還提供了新的工具Azure Data Studio,如果您有興趣,不妨下載一個(gè)預(yù)覽版試用一番。
下圖是SQLServer版本的變遷歷史,如果您一直用,可以看看您都用過(guò)哪些版本:

目前大家用的最多的數(shù)據(jù)庫(kù),肯定不是SQL Server,應(yīng)該是MySQL。很多人對(duì)SQL Server比較反感,蓋是因?yàn)镸ySQL是開(kāi)源的、不存在版權(quán)之爭(zhēng),而SQL Server是商業(yè)數(shù)據(jù)庫(kù)、需要購(gòu)買(mǎi);或因網(wǎng)上MySQL的資源非常豐富,使用的成本比較低;或因大家對(duì)微軟這種壟斷型的軟件公司根本就喜歡不起來(lái)吧。
沒(méi)辦法,使用開(kāi)源免費(fèi)數(shù)據(jù)庫(kù)確實(shí)就是爽,不擔(dān)心版權(quán)問(wèn)題、不用花錢(qián)、還有網(wǎng)上大量可用資源。不但是您喜歡、我也很喜歡。如果您使用開(kāi)源免費(fèi)的數(shù)據(jù)庫(kù),可能感覺(jué)呼吸的空氣就是香甜的、而那些還在使用SQL Server的就像不開(kāi)化的土老帽。
SQL Server和Oracle、DB2、Informix、Sybase等商業(yè)數(shù)據(jù)庫(kù)誕生在同一個(gè)時(shí)代,有數(shù)十年的發(fā)展歷史,就功能和性能來(lái)說(shuō),SQL Server并不算差。我們都有這樣的共識(shí),微軟的東西優(yōu)勢(shì)就是傻瓜化,但性能卻很一般,SQLServer也不例外。
筆者用過(guò)多種數(shù)據(jù)庫(kù),有SQL Server、MySQL、PostgreSQL、Access、SQLite等等。自從MySQL被Oracle收購(gòu)之后,感覺(jué)MySQL已經(jīng)被判了死緩,但MySQL已經(jīng)占領(lǐng)了大量市場(chǎng),按照Oracle對(duì)Java的流氓品性,感覺(jué)MySQL未來(lái)兇多吉少。
可喜的是,MariaDB出現(xiàn)了,她是從MySQL分出的分支,承諾繼續(xù)走開(kāi)源免費(fèi)路線。說(shuō)白了就是看不慣Oracle這種大流氓唄。國(guó)內(nèi)也有一群有識(shí)之士,開(kāi)發(fā)出了非常牛掰的NewSQL數(shù)據(jù)庫(kù)TiDB,也是沿著超越和替換MySQL的路子去的。
對(duì)于大型應(yīng)用來(lái)說(shuō),我們一般也不會(huì)選SQLite和Access,這兩者更合適用在本地存儲(chǔ),就像你用水果刀去殺牛,感覺(jué)刀子拿著順手,卻干不出好成績(jī)。
就個(gè)人喜好來(lái)說(shuō),大型應(yīng)用還是選PostgreSQL或TiDB,如果您真的割舍不了MySQL,也可以嘗試下MariaDB,兩者就像孿生兄弟一般。PostgreSQL號(hào)稱世界上功能強(qiáng)大的開(kāi)源數(shù)據(jù)庫(kù),這名頭也不是蓋的;TiDB是國(guó)內(nèi)貢獻(xiàn)的開(kāi)源數(shù)據(jù)庫(kù),對(duì)OLAP、OLTP的支持都棒極了。
隨著NoSQL的飛速發(fā)展,有些朋友對(duì)MongoDB、Redis等充滿了激情,MongoDB本來(lái)有大好前途,卻被自己的私欲帶歪了??傮w來(lái)說(shuō),NoSQL數(shù)據(jù)庫(kù)應(yīng)用尚未大面積鋪開(kāi),但NewSQL卻出現(xiàn)了,NewSQL兼容并蓄,吸收了傳統(tǒng)數(shù)據(jù)庫(kù)和NoSQL的所有優(yōu)點(diǎn),將來(lái)肯定會(huì)分走不少傳統(tǒng)數(shù)據(jù)庫(kù)和NoSQL數(shù)據(jù)庫(kù)的市場(chǎng)。

對(duì)使用數(shù)據(jù)庫(kù)的朋友來(lái)說(shuō),喜歡是一回事,拿來(lái)干活賺錢(qián)養(yǎng)家又是另一回事。很多朋友不都是罵著自己正在用的工具、夸著自己想用但還無(wú)法常用的工具、但還是要用自己罵著的工具來(lái)賺錢(qián)謀生嘛。以筆者為例,我最喜歡的數(shù)據(jù)庫(kù)是PostgreSQL,但用的卻不多。
筆者的客戶主要是工廠ERP應(yīng)用,我也是權(quán)衡再三,就各種成本來(lái)說(shuō),使用SQL Server的成本還算是低一些,維護(hù)起來(lái)還是會(huì)方便很多。工廠一般很少有專業(yè)的數(shù)據(jù)庫(kù)管理員,除了SQL Server,其它數(shù)據(jù)庫(kù)普通的網(wǎng)管也很難玩得轉(zhuǎn)。
有些比較“聰明”的朋友,他們只在數(shù)據(jù)庫(kù)中使用表、視圖這些基本元素,而不去碰存儲(chǔ)過(guò)程、自定義函數(shù)這些。這些朋友想要更換數(shù)據(jù)庫(kù)確實(shí)挺簡(jiǎn)單的,把表創(chuàng)建的腳本導(dǎo)出來(lái),稍作修改就可以用在其它數(shù)據(jù)庫(kù)上。
但也有一些像我這樣的“愚蠢”的朋友,特喜歡用存儲(chǔ)過(guò)程、自定義函數(shù),我對(duì)存儲(chǔ)過(guò)程的喜愛(ài)到了癡迷的程度,客戶端基本不會(huì)傳遞查詢、更新語(yǔ)句到數(shù)據(jù)庫(kù),所有的操作都封裝在存儲(chǔ)過(guò)程中。
結(jié)果可想而知:想要做數(shù)據(jù)庫(kù)遷移真是難上加難。還好我在新開(kāi)發(fā)系統(tǒng)時(shí),所有的SQL腳本都是雙份,一份針對(duì)SQLServer、一份針對(duì)PostgreSQL,兩種數(shù)據(jù)庫(kù)都支持,耗費(fèi)的精力和時(shí)間會(huì)多一些,但總可以在喜好和應(yīng)用上找到心理平衡點(diǎn)。
雖然很多朋友討厭SQLServer,但我們不得不承認(rèn),SQLServer功能強(qiáng)大、性能優(yōu)良。您可以討厭她,但她也不會(huì)死,還可能活得很滋潤(rùn)。如果您討厭她卻又離不開(kāi)她,不如就像我這樣,嘗試把所有腳本都做雙份吧。