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