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

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

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

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