關(guān)于數(shù)據(jù)庫,程序員應(yīng)該了解的那些事

數(shù)據(jù)庫的選型
對于很多程序員來說,公司選擇什么樣的數(shù)據(jù)庫,基本不需要你來決定。當(dāng)你加入一個公司的時候,公司的大部分技術(shù)選型已經(jīng)確認(rèn),特別是數(shù)據(jù)庫選型,因為數(shù)據(jù)庫一旦選擇,后期遷移的代價還是很大的。

隨著大數(shù)據(jù)時代的來臨,涌現(xiàn)出了很多新型數(shù)據(jù)庫,在公司遇到數(shù)據(jù)性能瓶頸,喊去IOE口號或者是想嘗鮮時,都會慢慢的使用新型數(shù)據(jù)庫。但是無論是技術(shù)選型還是轉(zhuǎn)型,你都不能忽略一個因素:你選的數(shù)據(jù)庫技術(shù)你能駕馭嗎?
我們知道,現(xiàn)在有很多開源數(shù)據(jù)庫可以讓我們選擇,但是我們有相關(guān)的技術(shù)人員精通這些數(shù)據(jù)庫嗎?比如GreenPlum這款數(shù)據(jù),有開源版本,也有商業(yè)公司在運(yùn)作,我們看到官方宣傳的案例很好,查詢效率很高。在一些大數(shù)據(jù)量查詢聚合也比Oracle快一點。但是作為生產(chǎn)數(shù)據(jù)庫使用,隨著數(shù)據(jù)量的增加,你會發(fā)現(xiàn)各種你之前沒有了解到的問題,對于開發(fā)人員來說,比之前的Oracle難用多了。這時候你可能會尋求商業(yè)公司的幫助,r派來高級工程師對數(shù)據(jù)庫進(jìn)行巡檢后,提出了很多優(yōu)化方案、使用規(guī)范和管理策略,這些都是你之前不曾了解的。
很多人看到了BAT用的很好,自己就去嘗試,并很快用于生產(chǎn)。你可以看看BAT有多少研究員,可能你的公司一個都沒有。很多人會問,postgreSQL宣傳的很好,我們替換掉MySQL吧。一個公司的數(shù)據(jù)庫如果從來不出現(xiàn)問題,那一定是沒有業(yè)務(wù)量,一旦業(yè)務(wù)量上來,就會遇到各種問題,這時候什么最重要?救火!所以在數(shù)據(jù)庫出現(xiàn)問題時,公司是否有足夠?qū)I(yè)的工程師去解決問題是很重要的。所以,對很多想要去O的公司來說,你要想好如何選型新技術(shù)??粗_源的免費(fèi),貿(mào)然使用會付出更多代價。
技術(shù)更新很快,還是希望大家在測試開發(fā)時候使用新技術(shù),逐步精通的過程中,緩慢過度生產(chǎn),如果公司有預(yù)算,可以請商業(yè)公司進(jìn)行指導(dǎo)半年到一年,自己人學(xué)到精髓后再開展獨(dú)立運(yùn)維。
數(shù)據(jù)庫如何避坑
再好的數(shù)據(jù)庫,如果使用姿勢不對也是枉然,更何況很多程序員并不怎么懂?dāng)?shù)據(jù)庫。在數(shù)據(jù)庫使用中,我們常會碰到很多問題。
人為失誤

人為失誤一般分兩類,一種是DBA操作失誤,一種是程序員開人員程序里使用不當(dāng)。DBA一般我們認(rèn)為是數(shù)據(jù)庫管理的專家了,出錯的概率比較小,但是一旦出錯,危險是做大的。比如我們經(jīng)常調(diào)侃的“刪庫跑路”,雖然是依據(jù)調(diào)侃,但是我是真真的見到過兩次,生產(chǎn)環(huán)境出現(xiàn)一次,就會在你的工作生涯上記上“光輝”一筆,所以說DBA算是一個高危工作了吧。另一種是開發(fā)人員使用不當(dāng)。常見的比如在使用大表時候,不考慮是否有索引,進(jìn)行了全表掃描,導(dǎo)致整個數(shù)據(jù)庫被拖垮。
數(shù)據(jù)庫的訪問瓶頸
只要是數(shù)據(jù)庫,就會有并發(fā)量的限制。以前使用MySQL,我們經(jīng)常看到互聯(lián)網(wǎng)公司并發(fā)上萬的壓測。但是對于很多新型的MPP數(shù)據(jù)庫,他們的并發(fā)并不是你想的那樣,MPP一般由集群CPU物理核數(shù)有關(guān)。比如以前開發(fā)程序查詢的MySQL,遷移到GP,那么你的數(shù)據(jù)庫連接池要改一改了。特別是對于一些面向互聯(lián)網(wǎng)的網(wǎng)站,數(shù)據(jù)庫管理層也要做訪問策略,不然,一個外掛可能就會把你的庫搞死。
索引
HA(高可用)

標(biāo)準(zhǔn)SQL



