[轉]淺談數據庫怎麼學和怎麼玩

[size=medium]
轉載自:[url]http://www.shenyisyn.org/2013/06/26/shujuku.htm[/url]

最近有人問我數據庫怎麼學?要學哪些?以下我談一些個人想法。
其實我的數據庫知識不是很紮實,真心的。
當年我學這個東西時某個大神告訴我“學會sql server”走遍天下都不怕。事實上,這幾年如果只會sqlserver根本到哪都很怕。
原因?
1、如果是政府軟件,雖然不像互聯網那樣高,但是數據存儲量確實很大很大,大家想想譬如財政數據、公積金數據、民政局數據等,而且很多數據不能使用緩存,必須實時計算,當sql2008還沒出現時,確實在大數據計算性能上不如oracle
2、由於某些原因,政府很少會同意使用windows服務器平臺,大都會使用unix或linux平臺,這就決定了sqlserver或者.net應用很難賣出去(當然不是完全不行,有些局部部門的軟件還是可以的,機密數據那想都不要想)
3、對於企業項目,很多中小企業爲了節約成本又想有節操的不使用盜版,那麼mysql是他們最好的選擇。
4、對於自己做網站,前期如果不想花大成本購買獨立服務器的話,使用mysql是正道,便宜而且好用,最重要的是前期也沒有這麼多數據和人氣讓我們需要上高級數據庫。
其實我個人認爲,至少掌握1-2個數據庫是很有必要的,譬如mysql和oracle,至於sqlserver不是它簡單,而是微軟的東西在用戶體驗和易學性上確實做得更甚一籌(易學性既是優點也是缺點,缺點在於出了問題你很難找到最根本的原因)
以下有幾個建議關於怎麼玩數據庫。
換個方法學習
一、 不建議按部就班的學習,因爲你這麼學,別人也是這麼學,而每個人的理解能力、技術基礎、記憶力、周邊環境和自己肚皮飽餓程度都是不同的,這些要素直接影響你的學習速度。
如果大家都在同一起跑線上,使用相同的學習辦法是不可取的
二、自己逼自己
模擬項目學習是我個人認爲最好的辦法。
首先需要了解基本的語法,譬如select insert update 等等
譬如我們新建一個新聞表叫做 news ,裏面包含 id,title,content(text型),addtime,clickcount 5個字段。
然後手工insert into 這張表50萬條數據,注意必須是50萬或更多且新聞內容必須要大。
然後做一個頁面,展示某一條新聞的詳細,右邊邊欄展示(1、相關新聞 2、人氣排行 3、兩天內發佈的新聞 等各10條)
(1) 這時你會發現,取數據還真不能簡單的 select * from 表 where id=X,你會需要學習如何創建字段索引、如何需要在該表中加入冗餘字段,你還會發現當新聞表特別大的時候,用戶每點擊一次新聞此時如果update這張表的clickcount時頁面很慢,你的筆記本風扇很燙。
(2) 如果再複雜點需求,你會發現用視圖比較好,或者用存儲過程來更新一些數據效率更高,然後你會發現新增新聞時還要使用事務纔行。於是逼着你去學這些知識。
(3) 再進一步,你會發現自己做的新聞頁面好醜好醜,於是逼着你去學css和html 和jquery
(4) 然後你把表中的數據擴展到200萬以上,你會發現某些功能還真不是一張表可以搞定的。貌似還得了解數據庫的分區甚至分表。 你還會學會用數據庫sql查詢分析器來分析哪條sql語句佔了很大性能。甚至不同的sql語句有的比較耗內存,而有的sql語句讓你的cpu漲到了100%。
於是,我個人認爲你本來學1個月然後做測試項目,共需2個月左右才能基本掌握一個數據庫知識,如果用同步邊學邊自虐的方式很可能時間要節約20%以上,並且讓你掌握的更紮實。
這就是爲什麼有的計算機系大學畢業的學生不如其他專業轉行的學生。
總結:
當然,技術(這裏主要指開發相關)做到高級境界 其實是數學知識和自然社會知識的碰撞,和編程語言也就關係不大了。但是數據庫知識是必須掌握的,不管你做什麼樣的應用,只要你需要存儲數據那麼必須瞭解數據庫。
如果你想作爲業餘愛好更深入的瞭解數據庫,那麼你可以從數據結構學起,深入瞭解數據庫是怎麼運作的,當然mysql都是開源的,學學思想很不錯,當然我從沒看過。
如果在你還沒有成爲大神時就想自己開發一個關係型數據庫,那可能不太現實。在我國玩這種事情的前提是必須要有錢,然後才能談技術、談團隊、談產品,否則你會深陷泥塘不可自拔。

[color=red] 還有一句話,好的並且是賺錢的程序員大部分都是逼出來的,在這個範圍內沒有天才。[/color]

[/size]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章