數(shù)據(jù)庫技術(shù)是20世紀(jì)60年代開始興起的一門信息管理自動(dòng)化的新興學(xué)科,是計(jì)算機(jī)科學(xué)中的一個(gè)重要分支,隨著計(jì)算機(jī)應(yīng)用的不斷發(fā)展,數(shù)據(jù)的爆炸式增長,數(shù)據(jù)處理也越來越占主導(dǎo)地位,而數(shù)據(jù)庫技術(shù)的應(yīng)用也變得愈加廣泛。從概念上來說,數(shù)據(jù)庫是指以一定的方式存儲(chǔ)到一起,能為多個(gè)用戶共享,具有更可能小的冗余,與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。從功能上來說,就是數(shù)據(jù)管理軟件。
數(shù)據(jù)庫發(fā)展史
數(shù)據(jù)庫從理論概念誕生到現(xiàn)在,發(fā)展時(shí)間也已經(jīng)超過大半個(gè)世紀(jì),其歷史也經(jīng)歷了三個(gè)階段,人工管理,文件系統(tǒng),數(shù)據(jù)庫系統(tǒng)。
人工管理階段 人工管理階段受限于當(dāng)時(shí)的硬件,那個(gè)時(shí)期的計(jì)算機(jī)內(nèi)存空間少,計(jì)算速度低,外部存儲(chǔ)只有磁帶,卡片和紙帶,沒有磁盤這樣能快速存取的設(shè)備,加之沒有計(jì)算機(jī)操作系統(tǒng),數(shù)據(jù)庫管理軟件也不具備,數(shù)據(jù)處理只能以批處理的方式進(jìn)行。其主要有以下特點(diǎn):
數(shù)據(jù)不保存:內(nèi)外存儲(chǔ)有限,數(shù)據(jù)量較少,僅應(yīng)用于科學(xué)計(jì)算。
人工管理:沒有相應(yīng)的軟件系統(tǒng)負(fù)責(zé)數(shù)據(jù)的管理工作,應(yīng)用程序中涉及的數(shù)據(jù)需要由程序員自己管理,包括數(shù)據(jù)邏輯結(jié)構(gòu)的代碼,數(shù)據(jù)物理結(jié)構(gòu)的代碼。數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的代碼,數(shù)據(jù)存取和輸入的代碼。
不能共享:數(shù)據(jù)和應(yīng)用程序是嚴(yán)格綁定的,一組數(shù)據(jù)只能對(duì)應(yīng)一組程序,有大量的冗余數(shù)據(jù)存在。
不具備獨(dú)立性:由于數(shù)據(jù)的相應(yīng)結(jié)構(gòu)(邏輯,物理)都是在應(yīng)用程序中定義,如果需要改變數(shù)據(jù)的結(jié)構(gòu)時(shí),就要對(duì)應(yīng)用程序作相應(yīng)的更改,也就是說,數(shù)據(jù)和應(yīng)用程序之間不具備獨(dú)立性,耦合性極高,在使用層面上來看,也很不方便。
文件系統(tǒng)階段 文件系統(tǒng)階段是指從20世紀(jì)50年代后期到60年代中期,這個(gè)時(shí)期的計(jì)算機(jī)應(yīng)用范圍已經(jīng)不在局限于科學(xué)計(jì)算,還被大量應(yīng)用于信息管理,計(jì)算機(jī)硬件也有了進(jìn)一步的發(fā)展,出現(xiàn)了磁盤,磁鼓等能直接存取的外存儲(chǔ)設(shè)備。在軟件層面上,高級(jí)語言和操作系統(tǒng)也已經(jīng)有了完善的產(chǎn)品。操作系統(tǒng)中也有專門負(fù)責(zé)管理數(shù)據(jù)的文件系統(tǒng)功能,數(shù)據(jù)的處理方式也從批處理,衍生到聯(lián)機(jī)實(shí)時(shí)處理。其主要有以下特點(diǎn):
數(shù)據(jù)長期保存:計(jì)算機(jī)需要重復(fù)使用數(shù)據(jù),把數(shù)據(jù)以文件的形式保存在磁盤等外存儲(chǔ)器上面,為數(shù)據(jù)的長期保存和使用提供了保證
文件的多樣化和結(jié)構(gòu)化:磁盤的出現(xiàn),順序文件,索引文件,隨機(jī)文件等文件組織形式也相應(yīng)誕生,數(shù)據(jù)庫的數(shù)據(jù)是以數(shù)據(jù)文件形式保存的,每一條數(shù)據(jù)(記錄)由一些字段按照特定的結(jié)構(gòu)組成的,每條數(shù)據(jù)的長度又是相等的,故數(shù)據(jù)文件又是記錄的集合,文件系統(tǒng)實(shí)現(xiàn)了記錄內(nèi)部的結(jié)構(gòu)性。
管理性:文件管理系統(tǒng)是應(yīng)用程序和數(shù)據(jù)文件的專門接口,應(yīng)用程序?qū)?shù)據(jù)的存取是由文件管理系統(tǒng)自動(dòng)完成的,數(shù)據(jù)文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)的轉(zhuǎn)換是由文件系統(tǒng)自動(dòng)完成的,不需要應(yīng)用程序來參與,因此數(shù)據(jù)和應(yīng)用程序具備了一定的獨(dú)立性。
數(shù)據(jù)庫系統(tǒng)階段 數(shù)據(jù)庫系統(tǒng)階段是指從20世紀(jì)60年代后期到現(xiàn)在,正式進(jìn)入數(shù)據(jù)庫階段有幾個(gè)標(biāo)志事件,1968年美國IBM推出層次模型的IMS(Information Management System)系統(tǒng),1969年美國CODASYL組織頒布了DBTG報(bào)告,提出了網(wǎng)狀模型 ,1970年美國IBM的E,F,Codd連續(xù)發(fā)表論文,提出關(guān)系模型,奠定了關(guān)系型數(shù)據(jù)庫的理論基礎(chǔ)。順便提一句,數(shù)據(jù)庫的底層理論建設(shè)都是在美國進(jìn)行的。確實(shí)牛逼!數(shù)據(jù)庫系統(tǒng)主要有以下特點(diǎn):
基于數(shù)據(jù)模型:采用數(shù)據(jù)模型使數(shù)據(jù)結(jié)構(gòu)化,數(shù)據(jù)結(jié)構(gòu)化是文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)最本質(zhì)的區(qū)別,在文件系統(tǒng)中,相互獨(dú)立的文件,內(nèi)部是具備結(jié)構(gòu)的,文件是多個(gè)等長的記錄的集合,但是記錄之間又是相互獨(dú)立的,沒有關(guān)聯(lián)性。這種獨(dú)立性對(duì)于單個(gè)應(yīng)用來說,是有效的。具備局限性,不適用多個(gè)用戶,多應(yīng)用共享數(shù)據(jù)的需求。而數(shù)據(jù)庫系統(tǒng)可以為用戶提供一個(gè)抽象的數(shù)據(jù)視圖。通過數(shù)據(jù)模型來實(shí)現(xiàn)抽象視圖,保證了整體數(shù)據(jù)的結(jié)構(gòu)化,數(shù)據(jù)模型其最大的特點(diǎn)在于描述數(shù)據(jù)時(shí),不僅僅是描述自身,還要描述不同數(shù)據(jù)之間的聯(lián)系。
獨(dú)立性高:數(shù)據(jù)庫系統(tǒng)提供了三級(jí)數(shù)據(jù)抽象(視圖級(jí)抽象,概念級(jí)抽象,物理級(jí)抽象)能力和三種數(shù)據(jù)庫模式(外模式,模式和內(nèi)模式)。真正實(shí)現(xiàn)了數(shù)據(jù)的物理獨(dú)立性和邏輯獨(dú)立性,數(shù)據(jù)和程序的相互獨(dú)立。使得可以把數(shù)據(jù)的定義和描述從應(yīng)用程序中獨(dú)立出去,而數(shù)據(jù)的存取統(tǒng)一由DBMS管理,用戶和應(yīng)用程序不用考慮存取路徑細(xì)節(jié),簡化了應(yīng)用程序?qū)τ跀?shù)據(jù)訪問能力。
冗余性和共享性好:數(shù)據(jù)庫允許多個(gè)用戶或多個(gè)應(yīng)用程序同時(shí)訪問數(shù)據(jù)庫中的相同數(shù)據(jù),數(shù)據(jù)不再面向單個(gè)應(yīng)用,數(shù)據(jù)的共享,節(jié)省了存儲(chǔ)空間,大大減少了數(shù)據(jù)冗余,避免了數(shù)據(jù)之間的不相容性和不一致性。
方便訪問:用戶可以使用查詢語句進(jìn)行訪問(SQL)或者終端命令對(duì)數(shù)據(jù)庫進(jìn)行訪問,也可以借助高級(jí)語句如JAVA,C等程序?qū)?shù)據(jù)庫進(jìn)行訪問。
統(tǒng)一的數(shù)據(jù)管理:數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)由DBMS統(tǒng)一管理,不同的用戶或者應(yīng)用對(duì)相同的數(shù)據(jù)有自己的使用理解,可以稱之為視圖,DBMS提供了定義,維護(hù)和操作視圖的機(jī)制,使得多個(gè)用戶可以為他們自己的應(yīng)用定義,維護(hù)和使用自己的視圖。在共享性方面,DBMS還提供了數(shù)據(jù)控制功能,即數(shù)據(jù)的安全性控制(也就是權(quán)限),數(shù)據(jù)的完整性控制,并發(fā)控制(MVCC機(jī)制),數(shù)據(jù)庫恢復(fù)等
數(shù)據(jù)庫關(guān)鍵人物
數(shù)據(jù)庫經(jīng)歷了半個(gè)多世紀(jì)的發(fā)展,在此有必要膜拜下數(shù)據(jù)庫方面的大神。正是他們的貢獻(xiàn),數(shù)據(jù)庫才有如今的成果。
埃德加·考特(EdgarF Codd) ,計(jì)算機(jī)界公認(rèn)的關(guān)系型數(shù)據(jù)庫之父,其在IBM工作期間,發(fā)明了關(guān)系模型理論,并持續(xù)完善和發(fā)展關(guān)系型理論,關(guān)系型模型是現(xiàn)代數(shù)據(jù)庫最重要的理論模型。也是他最大的成就。1983年以其對(duì)數(shù)據(jù)庫的卓越貢獻(xiàn),獲得了ACM的圖靈獎(jiǎng)(圖靈獎(jiǎng)被稱為計(jì)算機(jī)界的諾貝爾)C.J.戴特(C J Date),他是最早認(rèn)識(shí)到Codd在關(guān)系型模型上所做的開創(chuàng)性學(xué)者之一,也是關(guān)系型數(shù)據(jù)庫技術(shù)領(lǐng)域中的非常著名的獨(dú)立撰稿人和學(xué)者,為關(guān)系型模型的概念普及化,作出了相當(dāng)大的貢獻(xiàn), 同時(shí)也參與了IBM公司的SQL/DS和DB2兩大產(chǎn)品的技術(shù)規(guī)劃和設(shè)計(jì)。其著作《數(shù)據(jù)庫系統(tǒng)導(dǎo)論》也影響了很多人,數(shù)據(jù)庫理論學(xué)習(xí)的經(jīng)典之作。
吉姆·格雷(Jim Gray),數(shù)據(jù)庫內(nèi)核大神。他使關(guān)系型模型技術(shù)實(shí)用化,將理論落地成產(chǎn)品,其為數(shù)據(jù)庫的成熟并順利進(jìn)入市場(chǎng)起到了關(guān)鍵性的作用。在IBM期間,參與和主持過IMS、System R(oracle數(shù)據(jù)庫,db2數(shù)據(jù)庫的原型)、DB2等項(xiàng)目的開發(fā)。除了System R作為研究原型,沒有成為產(chǎn)品,其他幾個(gè)都成為IBM在數(shù)據(jù)庫市場(chǎng)上有影響力的產(chǎn)品。其最大的成就在于解決了一系列技術(shù)問題。隨著數(shù)據(jù)庫的規(guī)模愈來愈大,用戶愈來愈多的情況下,在共享模式下,保證數(shù)據(jù)訪問的完整性,安全性,和并發(fā)性,以及數(shù)據(jù)故障情況下,如何恢復(fù)。在當(dāng)時(shí)看來,如果這些問題,沒法解決。其對(duì)應(yīng)的產(chǎn)品也就不能被用戶接受,解決問題的方案可以歸結(jié)為四個(gè)字—-事務(wù)處理。格雷在事務(wù)處理方面取得了突出的貢獻(xiàn),使他成為了該技術(shù)領(lǐng)域公認(rèn)的權(quán)威,他也成為了1999年的圖靈獎(jiǎng)得主。
Michael Stonebraker,是Ingres的創(chuàng)始人,著名的數(shù)據(jù)庫學(xué)者,其于1992年提出對(duì)象關(guān)系型模型,并主導(dǎo)了postgres項(xiàng)目,并將postgres放在了BSD版權(quán)保護(hù),目前國內(nèi)不少的商業(yè)數(shù)據(jù)庫,都是基于postgres,學(xué)院派數(shù)據(jù)庫的代表人物。
以上人物只是列舉了一些在數(shù)據(jù)庫發(fā)展史上的關(guān)鍵性人物,其他的如:Oracle創(chuàng)始人Larry Ellison,創(chuàng)建了Oracle公司。Bob Miner, 引領(lǐng)整個(gè)時(shí)代的DBA前輩,Oracle的技術(shù)先驅(qū),Monty,編程天才,Mysql 之父,maiar db之父,后面由于mysql被oracle收購,又重新基于mysql的另一個(gè)分支開發(fā)了maiar db,并開源。
數(shù)據(jù)庫現(xiàn)狀
在傳統(tǒng)關(guān)系型數(shù)據(jù)庫層面,Oracle、SqlServer、DB2等作為商業(yè)數(shù)據(jù)庫常年占據(jù)國內(nèi)高低端市場(chǎng),Mysql和postgres作為開源數(shù)據(jù)庫的代表,前者號(hào)稱最流行的開源數(shù)據(jù)庫,在國內(nèi)大部分公司都有使用,社區(qū)相當(dāng)發(fā)達(dá),09年Oracle并購了Sun公司,Mysql也歸Oracle所有,Mysql也有隨時(shí)閉源的風(fēng)險(xiǎn)。后者號(hào)稱最先進(jìn)的數(shù)據(jù)庫,在國內(nèi)使用率占比不高,但是功能性相對(duì)Mysql來說,更加強(qiáng)大。開源版本更新速度很快,最近一兩年,在國內(nèi)有流行起來的趨勢(shì)。
傳統(tǒng)數(shù)據(jù)庫從俠義上來說就是關(guān)系型數(shù)據(jù)庫,但是隨著互聯(lián)網(wǎng)的高速發(fā)展,海量數(shù)據(jù)的誕生,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在應(yīng)對(duì)大規(guī)模,超大流量的時(shí)候就顯得力不從心。借此,nosql數(shù)據(jù)庫,newsql數(shù)據(jù)庫就此登場(chǎng)。
no sql 全稱 “not only sql”,所有非關(guān)系型的數(shù)據(jù)庫都統(tǒng)稱為no sql數(shù)據(jù)庫,no sql數(shù)據(jù)庫主要有四種類型,文檔數(shù)據(jù)庫(MongoDb為代表),鍵值數(shù)據(jù)庫(Redis為代表),寬列存儲(chǔ)(Hbase為代表)和圖形數(shù)據(jù)庫(Neo4J為代表)。no sql 拋棄了傳統(tǒng)數(shù)據(jù)強(qiáng)事務(wù)保證和關(guān)系模型,重點(diǎn)放在高可用,可擴(kuò)展性和高性能上。但是由于不支持sql語句,兼容性是個(gè)大問題。
new sql 數(shù)據(jù)庫,提供了與no sql相同的擴(kuò)展性,但仍屬于關(guān)系型模型,還保留sql作為查詢語言,保證了ACID事務(wù)性。代表數(shù)據(jù)庫有Spanner,CockroachDB,限于篇幅關(guān)系后面會(huì)單獨(dú)出文章來講解nosql和newsql的特點(diǎn)。
結(jié)語
這個(gè)時(shí)代可以稱之為”數(shù)據(jù)”時(shí)代,無論是傳統(tǒng)企業(yè),還是互聯(lián)網(wǎng)企業(yè),數(shù)據(jù)庫都是核心構(gòu)成,其重要性不言而喻。從最初的人工管理,文件管理,到后面的數(shù)據(jù)庫系統(tǒng),以及新興的nosql,newsql數(shù)據(jù)庫,都伴隨著時(shí)代的發(fā)展在更替前進(jìn)。作為一個(gè)數(shù)據(jù)庫相關(guān)的從業(yè)者,也是很有感觸,希望數(shù)據(jù)庫行業(yè)能發(fā)展得越來越來的同時(shí),也能帶動(dòng)我們國產(chǎn)數(shù)據(jù)庫行業(yè)的發(fā)展吧!
來源:網(wǎng)絡(luò),作者:DBA成長日記(百家號(hào))