開發(fā)者應(yīng)該學(xué)習(xí)SQL的九個(gè)理由
事實(shí)上,有很多你可能正在學(xué)習(xí)的很酷的新事物,似乎每12.8秒就有一項(xiàng)新技術(shù)出現(xiàn),那到底為什么你要花費(fèi)空閑時(shí)間學(xué)習(xí)一門像SQL這樣又老又臭的語言呢?讓我告訴你我的理由。
SQL是可移植的
計(jì)算機(jī)系的學(xué)生們在獲取他們的學(xué)位時(shí)被教授數(shù)以百計(jì)的技術(shù)和理論概念,其中的許多信息并不能直接應(yīng)用于每日的編程任務(wù),但SQL介紹給學(xué)生們能夠在不同平臺間轉(zhuǎn)移的基本概念,不同的平臺擁有共通的詞匯表和工具組,學(xué)生們能帶著它們?nèi)ト魏蔚胤健?/p>
盡管每個(gè)數(shù)據(jù)庫廠商實(shí)現(xiàn)他們自己的擴(kuò)展,但廠商的每個(gè)新版本都符合ANSI/ISO SQL標(biāo)準(zhǔn)。標(biāo)準(zhǔn)兼容盡管很微妙,但也使你能夠攜帶著你的知識從一個(gè)平臺到另一個(gè)平臺。如果你學(xué)習(xí)SQL,你將會預(yù)備好從一個(gè)數(shù)據(jù)庫轉(zhuǎn)移到另一個(gè)。
SQL從不改變
我的好朋友和商業(yè)伙伴開玩笑說他成為一個(gè)數(shù)據(jù)庫管理員是因?yàn)镾QL已經(jīng)35年沒有變化了,這大部分是真的。廠商實(shí)現(xiàn)他們自己的擴(kuò)展并最終使其加入到SQL標(biāo)準(zhǔn),但SQL的核心沒有改變。一旦你理解了SQL的基礎(chǔ)和關(guān)系原理(并不那么難),你會發(fā)現(xiàn)你能夠繼續(xù)依賴這些知識,添加那些你本來依靠其他工具或開發(fā)者來實(shí)現(xiàn)的特性和功能。
SQL易于性能增益
在一個(gè)應(yīng)用程序中僅有幾個(gè)地方能夠?qū)崿F(xiàn)性能增益 - 表示層、應(yīng)用層和存儲層。事實(shí)是,你的代碼已經(jīng)寫得很好并且很好地調(diào)整過,從那里獲取性能增益會好比從石頭中獲取血液一樣艱難。另一方面,數(shù)據(jù)庫是一個(gè)容易做一些簡單改變(添加一個(gè)索引,稍稍修改一個(gè)查詢)并看到巨大性能改善的地方。在花費(fèi)了我的職業(yè)生涯的可觀部分,以一個(gè)應(yīng)用程序開發(fā)者的身份盯著數(shù)據(jù)庫分析器之后,我能為之證明。從程序代碼中獲得性能改善是可能的,但現(xiàn)代的框架和工具通常都編寫良好,因此數(shù)據(jù)庫通常是一個(gè)更好的地方(也被認(rèn)為是更容易的地方)為性能改善找到低懸的果實(shí)。
SQL使你成為更好的開發(fā)者
《程序員的修煉之道》一書激勵(lì)開發(fā)者每年都學(xué)習(xí)一種新語言,并不是因?yàn)榄h(huán)境在持續(xù)地變化,而是因?yàn)閷W(xué)習(xí)新的語言向開發(fā)者展示了新的模式。思考問題時(shí)有不同的思路,并且它們能夠很好地應(yīng)用于不同的解決方案(通過鉆研函數(shù)式編程我最近學(xué)了不少)。學(xué)習(xí)SQL能夠教會你以集合而非迭代的方式思考。長期來看,這會改變你與數(shù)據(jù)打交道時(shí)的思維方式,使你的數(shù)據(jù)庫代碼得到改進(jìn)。
增進(jìn)團(tuán)隊(duì)間的交流
你是否曾經(jīng)試圖和語言相同但說非常不同方言的某人交談?在工作之外,跨越語言的藩籬交流會很艱難,但當(dāng)一個(gè)項(xiàng)目的成功依賴于此則完全令人抓狂。學(xué)習(xí)SQL會在你與數(shù)據(jù)庫管理員團(tuán)隊(duì)交流你的目標(biāo)時(shí)給予幫助,他們不需要解析你的意思,你可以確切地告訴他們你的需求。最終誤解更少了,事情能夠更快地完成,你不再會是“那個(gè)讓人抓狂的開發(fā)者”。
工作保障
我討厭這樣說,但學(xué)習(xí)SQL可能意味著當(dāng)旁邊隔間的Ted在裁員季被解雇時(shí)你能保住你的工作。你擁有越多的技能,你能履行越多的工作職能,你就變得對現(xiàn)雇主越有價(jià)值(還有未來的雇主)。如果你能同時(shí)與數(shù)據(jù)庫團(tuán)隊(duì)和開發(fā)團(tuán)隊(duì)一起工作,你就成為了一個(gè)有價(jià)值的資源,兩個(gè)團(tuán)隊(duì)都要依靠你獲得成功。
SQL真的不那么難
和普遍的觀念相反,SQL不是難以學(xué)習(xí)的語言。SQL是一種不同的思考方式,這是肯定的,但它并不難。那只有記錄在ANSI/ISO標(biāo)準(zhǔn)中的為數(shù)不多的指令、操作符和數(shù)據(jù)類型。雖然廠商會添加他們自己的特性,但仍有一部分精簡的核心知識你能學(xué)習(xí)并且應(yīng)用到你去到的每個(gè)地方。
理解什么時(shí)候不適合數(shù)據(jù)庫
數(shù)據(jù)庫對于解決很多問題是現(xiàn)象級的工具,但對于解決更多的問題則是糟糕的問題。換言之:你也許不應(yīng)該用一把錘子去挖掘壕溝。通過學(xué)習(xí)和理解SQL,你將能夠做出更好的決定并將表現(xiàn)糟糕的代碼移出數(shù)據(jù)庫。事實(shí)上,你將能夠在問題形成之前就將其發(fā)現(xiàn)。
一旦你理解了SQL,你會更好地領(lǐng)會一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)的局限性。你會知道應(yīng)用程序的哪個(gè)部分能夠安全地存在于一個(gè)數(shù)據(jù)庫,而哪部分需要被移動(dòng)到不同的分層。一些數(shù)據(jù)驗(yàn)證應(yīng)該和數(shù)據(jù)存放在一起,而另一些則不應(yīng)該。理解SQL如何工作會幫助你決定哪些規(guī)則應(yīng)該保留在數(shù)據(jù)庫里。
讓故障排除更簡單
運(yùn)行中的應(yīng)用程序難以故障排除眾所周知。越多的復(fù)雜度和分層被涉及到,就越難以為一個(gè)應(yīng)用程序排除故障。對于SQL的良好理解讓快速地將存在于數(shù)據(jù)庫中的問題隔離變得可能。換言之:理解SQL使將問題定位在你的應(yīng)用程序的多個(gè)不同分層中的某一層變得簡單。
原文鏈接:http://humblepg.com/chs/articles/nine-reasons-developers-should-learn-sql.html






