沒學好資料庫的程式設計師,真的混不到飯吃麼?

數據庫技術達摩院 發佈 2019-12-30T06:51:51+00:00

文章來源於SegmentFault ,作者徐九業內有句俗語:只會寫代碼的是碼農;學好資料庫,基本能混口飯吃;在此基礎上再學好作業系統和計算機網絡,就能當一個不錯的程式設計師。

文章來源於SegmentFault ,作者徐九


業內有句俗語:

只會寫代碼的是碼農;學好資料庫,基本能混口飯吃;在此基礎上再學好作業系統和計算機網絡,就能當一個不錯的程式設計師。


如果能再把離散數學、數字電路、體系結構、數據結構/算法、編譯原理學通透,再加上豐富的實踐經驗與領域特定知識,就能算是一個優秀的工程師了。


這麼說其實是有一些道理的,因為計算說穿了就是兩個東西:數據與算法

目前市面上常見的軟體應用,大部分都屬於數據密集型應用。通俗的話來講,就是這些應用幹的事兒就是把數據收集起來,需要的時候再拿出來。而這些操作都需要資料庫來進行承載。

所以說,資料庫離我們很近,也是一項開發者們非常需要掌握的技能。

本期內容重點:

  • 資料庫解析
  • 資料庫發展史
  • 對開發者的建議

啥是資料庫?

名詞解析:資料庫

資料庫,簡而言之可視為電子化的文件櫃 —— 存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作。所謂「資料庫」系以一定方式儲存在一起、能與多個用戶共享、具有儘可能小的冗餘度、與應用程式彼此獨立的數據集合。

資料庫技術產生於 20 世紀 60 年代末 70 年代初,設置的主要目的是有效地管理和存取大量的數據資源。

資料庫其實就是存放數據的倉庫。它的存儲空間很大,可以存放百萬條、千萬條、上億條數據。但是資料庫並不是隨意地將數據進行存放,是有一定的規則的,否則查詢的效率會很低。

隨著網際網路的發展,當今世界是一個充斥著大量數據的世界。數據的來源有很多,比如出行記錄、消費記錄、瀏覽的網頁、發送的消息等等。除了文本類型的數據,圖像、音樂、聲音都是數據。


數年來,資料庫技術和計算機網絡技術的發展相互滲透,相互促進,已成為當今計算機領域發展迅速,應用廣泛的兩大領域。資料庫技術不僅應用於事務處理,並且進一步應用到情報檢索、人工智慧、專家系統、計算機輔助設計等領域。

資料庫的概念實際包括兩層意思:

  • 資料庫是一個實體,它是能夠合理保管數據的「倉庫」,用戶在該「倉庫」中存放要管理的事務數據,「數據」和「庫」兩個概念結合成為資料庫。
  • 資料庫是數據管理的新方法和技術,它能更合適的組織數據、更方便的維護數據、更嚴密的控制數據和更有效的利用數據。

資料庫技術研究和管理的對象是數據,所以資料庫技術所涉及的具體內容主要包括:

  • 通過對數據的統一組織和管理,按照指定的結構建立相應的資料庫和數據倉庫;
  • 利用資料庫管理系統和數據挖掘系統設計出能夠實現對資料庫中的數據進行添加、修改、刪除、處理、分析、理解、報表和列印等多種功能的數據管理和數據挖掘應用系統;
  • 利用應用管理系統最終實現對數據的處理、分析和理解。

按照層級架構,資料庫的架構一般可以劃分為三層:

  1. 內層:最接近實際存儲體,亦即有關數據的實際存儲方式;
  2. 外層:最接近用戶,即有關個別用戶觀看數據的方式;
  3. 概念層:介於兩者之間的間接層。

從其應用方式來看,資料庫技術主要起著兩方面的作用:

  1. 信息系統開發作用:利用資料庫技術以及網際網路技術,結合具體的程式語言,可以開發一個信息系統,從而解決業務數據的輸入和管理問題.
  2. 數據分析與展示作用:利用RDBMS的數據查詢功能對資料庫中的數據進行關聯組合或逐級匯總分析,並以表格,圖形或報表形式將分析結果進行展示,從而解決業務數據的綜合利用問題。


02、資料庫發展階段


從原理來看,不難知道資料庫技術的核心和基礎就是「數據模型」。所以業內回顧資料庫的發展階段時,一般也是根據數據模型的演進作為相關的時間節點。

在資料庫的發展歷史上,資料庫先後經歷了層次資料庫、網狀資料庫和關係資料庫等各個階段的發展。在這短短几十年的發展過程中,資料庫的發展一般劃分為下面這三代:

第一代:網狀和層次資料庫系統;

第二代:是關係資料庫系統;

第三代:以面向對象數據模型為主要特徵的資料庫系統。

第一代:網狀和層次資料庫系統
第一代資料庫系統是層次和網狀資料庫系統。層次資料庫系統的典型代表是 1969 年 IBM 公司研製出的層次模型的資料庫管理系統IMS。

第二代:關係資料庫系統
第二代資料庫系統是關係資料庫系統。1970 年 IBM 公司的 San Jose 研究試驗室的研究員 Edgar F. Codd 發表了題為《大型共享資料庫數據的關係模型》的論文,提出了關係數據模型,開創了關係資料庫方法和關係資料庫理論,為關係資料庫技術奠定了理論基礎。

20 世紀 70 年代是關係資料庫理論研究和原型開發的時代,大量的理論成果和實踐經驗終於使關係資料庫從實驗室走向了社會,因此,人們一般把 20 世紀 70 年代稱為資料庫時代。

第三代:以面向對象數據模型為主要特徵的資料庫系統

1990 年高級 DBMS 功能委員會發表了《第三代資料庫系統宣言》,提出了第三代資料庫管理系統應具有的三個基本特徵:

1.應支持數據管理、對象管理和知識管理;

2.必須保持或繼承第二代資料庫系統的技術;

3.必須對其他系統開放。

隨著雲計算的發展和大數據時代的到來,關係型資料庫越來越無法滿足需要,這主要是由於越來越多的半關係型和非關係型數據需要用資料庫進行存儲管理。

於此同時,分布式技術等新技術的出現對資料庫的技術提出了新的要求,傳統的關係型資料庫慢慢不能完成滿足遇到的新需求,越來越多的非關係型資料庫就開始出現。

這類資料庫更強調資料庫數據的高並發讀寫和存儲大數據,這類資料庫一般被稱為 NoSQL(Not only SQL)資料庫。但傳統的關係型資料庫在一些傳統領域,依然保持了強大的生命力。


03

為什麼建議開發者學好資料庫?


就像開頭我們說的,現在的應用大部分都屬於數據密集型應用,除非我們準備從輪子造起,不然根本沒那麼多機會去搞看起來很高端的數據結構和算法。

甚至寫代碼的能力可能也沒那麼重要,這個大家應該都懂。大部分需求都有現成的輪子可以使用,主要的創造性工作往往在數據模型與數據流設計上

實際生產中,數據表就是數據結構,索引與查詢就是算法。而應用代碼往往扮演的是膠水的角色,處理IO與業務邏輯,其他大部分工作都是在數據系統之間搬運數據。

架構師最重要的能力之一,就是能夠靈活地權衡取捨、集成拼接數據系統。絕大多數工程師都不會去從零開始編寫存儲引擎,因為在開發應用時,資料庫已經是足夠完美的工具了。關係型資料庫則是目前所有數據系統中使用最廣泛的組件,可以說是程式設計師吃飯的主要傢伙,重要性不言而喻。

我曾經採訪過很多 SegmentFault 社區的用戶,都表示上學的時候沒有好好學資料庫,現在發現基礎真的很重要又翻出來重新學了一遍。假如你還在上學,建議你抓住現在的機會,好好掌握這些基礎的原理,工作之後很難再有時間和機會去」找補「了。


部分資料來源:

維基百科詞條:《資料庫》、《薩師煊》

大學計算機基礎:《資料庫技術簡史》

虎嗅網:《中國資料庫40年歷史:隱秘的江湖與恩怨》

常壘資本:《國產資料庫崛起史》


關鍵字: