可以參考 pingcap 的 介紹, 同事了解下(xià) 國内分(fēn)布式數據庫排行榜一(yī)的 tidb. 有更多問題,可以到 asktug 一(yī)起讨論,多謝。
數據庫技術從誕生(shēng)到現在,在不到半個世紀的時間裏,形成了堅實的理論基礎、成熟的商(shāng)業産品和廣泛的應用領域,吸引越來越多的研究者加入。數據庫的誕生(shēng)和發展給計算機信息管理帶來了一(yī)場巨大(dà)的革命。三十多年來,國内外(wài)已經開(kāi)發建設了成千上萬個數據庫,它已成爲企業、部門乃至個人日常工(gōng)作、生(shēng)産和生(shēng)活的基礎設施。同時,随着應用的擴展與深入,數據庫的數量和規模越來越大(dà),數據庫的研究領域也已經大(dà)大(dà)地拓廣和深化了。30年間數據庫領域獲得了三次計算機圖靈獎(c.w. bachman, e.f.codd, j.gray),更加充分(fēn)地說明了數據庫是一(yī)個充滿活力和創新精神的領域。就讓我(wǒ)們沿着曆史的軌迹,追溯一(yī)下(xià)數據庫的發展曆程。
一(yī). 數據庫發展簡史
1. 數據管理的誕生(shēng)
數據庫的曆史可以追溯到五十年前,那時的數據管理非常簡單。通過大(dà)量的分(fēn)類、比較和表格繪制的機器運行數百萬穿孔卡片來進行數據的處理,其運行結果在紙(zhǐ)上打印出來或者制成新的穿孔卡片。而數據管理就是對所有這些穿孔卡片進行物(wù)理的儲存和處理。
然而,1951年雷明頓蘭德公司(remington rand inc)的一(yī)種叫做univac i的計算機推出了一(yī)種一(yī)秒鍾可以輸入數百條記錄的磁帶驅動器,從而引發了數據管理的革命。1956年ibm生(shēng)産出第一(yī)個磁盤驅動器——the model 305 ramac。此驅動器有50個盤片,每個盤片直徑是2英尺,可以儲存5mb的數據。使用磁盤最大(dà)的好處是可以随機地存取數據,而穿孔卡片和磁帶隻能順序存取數據。
1951: univac系統使用磁帶和穿孔卡片作爲數據存儲。
數據庫系統的萌芽出現于60年代。當時計算機開(kāi)始廣泛地應用于數據管理,對數據的共享提出了越來越高的要求。傳統的文件系統已經不能滿足人們的需要。能夠統一(yī)管理和共享數據的數據庫管理系統(dbms)應運而生(shēng)。數據模型是數據庫系統的核心和基礎,各種dbms軟件都是基于某種數據模型的。所以通常也按照數據模型的特點将傳統數據庫系統分(fēn)成網狀數據庫、層次數據庫和關系數據庫三類。
最早出現的是網狀dbms,是美國通用電(diàn)氣公司bachman等人在1961年開(kāi)發成功的ids(integrated datastore)。1961年通用電(diàn)氣公司(general electric co.)的charles bachman成功地開(kāi)發出世界上第一(yī)個網狀dbms也是第一(yī)個數據庫管理系統——集成數據存儲(integrated datastore ids),奠定了網狀數據庫的基礎,并在當時得到了廣泛的發行和應用。ids具有數據模式和日志(zhì)的特征。但它隻能在ge主機上運行,并且數據庫隻有一(yī)個文件,數據庫所有的表必須通過手工(gōng)編碼來生(shēng)成。
之後,通用電(diàn)氣公司的一(yī)個客戶——bf goodrich chemical公司最終不得不重寫了整個系統。并将重寫後的系統命名爲集成數據管理系統(idms)。
網狀數據庫模型對于層次和非層次結構的事物(wù)都能比較自然的模拟,在關系數據庫出現之前網狀dbms要比層次dbms用得普遍。在數據庫發展史上,網狀數據庫占有重要地位。
層次型dbms是緊随網絡型數據庫而出現的。最著名最典型的層次數據庫系統是ibm公司在1968年開(kāi)發的ims(information management system),一(yī)種适合其主機的層次數據庫。這是ibm公司研制的最早的大(dà)型數據庫系統程序産品。從60年代末産生(shēng)起,如今已經發展到imsv6,提供群集、n路數據共享、消息隊列共享等先進特性的支持。這個具有30年曆史的數據庫産品在如今的www應用連接、商(shāng)務智能應用中(zhōng)扮演着新的角色。
1973年cullinane公司(也就是後來的cullinet軟件公司),開(kāi)始出售goodrich公司的idms改進版本,并且逐漸成爲當時世界上最大(dà)的軟件公司。
2. 關系數據庫的由來
網狀數據庫和層次數據庫已經很好地解決了數據的集中(zhōng)和共享問題,但是在數據獨立性和抽象級别上仍有很大(dà)欠缺。用戶在對這兩種數據庫進行存取時,仍然需要明确數據的存儲結構,指出存取路徑。而後來出現的關系數據庫較好地解決了這些問題。
1970年,ibm的研究員(yuán)e.f.codd博士在刊物(wù)《communication of the acm》上發表了一(yī)篇名爲“a relational model of data for large shared data banks”的論文,提出了關系模型的概念,奠定了關系模型的理論基礎。盡管之前在1968年childs已經提出了面向集合的模型,然而這篇論文被普遍認爲是數據庫系統曆史上具有劃時代意義的裏程碑。codd的心願是爲數據庫建立一(yī)個優美的數據模型。後來codd又(yòu)陸續發表多篇文章,論述了範式理論和衡量關系系統的12條标準,用數學理論奠定了關系數據庫的基礎。關系模型有嚴格的數學基礎,抽象級别比較高,而且簡單清晰,便于理解和使用。但是當時也有人認爲關系模型是理想化的數據模型,用來實現dbms是不現實的,尤其擔心關系數據庫的性能難以接受,更有人視其爲當時正在進行中(zhōng)的網狀數據庫規範化工(gōng)作的嚴重威脅。爲了促進對問題的理解,1974年acm牽頭組織了一(yī)次研讨會,會上開(kāi)展了一(yī)場分(fēn)别以codd和bachman爲首的支持和反對關系數據庫兩派之間的辯論。這次著名的辯論推動了關系數據庫的發展,使其最終成爲現代數據庫産品的主流。
1969: edgar f。“ted” codd發明了關系數據庫
1970年關系模型建立之後,ibm公司在san jose實驗室增加了更多的研究人員(yuán)研究這個項目,這個項目就是著名的system r。其目标是論證一(yī)個全功能關系dbms的可行性。該項目結束于1979年,完成了第一(yī)個實現sql的dbms。然而ibm對ims的承諾阻止了system r的投産,一(yī)直到1980年system r才作爲一(yī)個産品正式推向市場。ibm産品化步伐緩慢(màn)的三個原因:ibm重視信譽,重視質量,盡量減少故障;ibm是個大(dà)公司,官僚體(tǐ)系龐大(dà);ibm内部已經有層次數據庫産品,相關人員(yuán)不積極,甚至反對。
然而同時,1973年加州大(dà)學伯克利分(fēn)校的michael stonebraker和eugene wong利用system r已發布的信息開(kāi)始開(kāi)發自己的關系數據庫系統ingres。他們開(kāi)發的ingres項目最後由oracle公司、ingres公司以及矽谷的其他廠商(shāng)所商(shāng)品化。後來,system r和ingres系統雙雙獲得acm的1988年“軟件系統獎”。
1976年霍尼韋爾公司(honeywell)開(kāi)發了第一(yī)個商(shāng)用關系數據庫系統——multics relational data store。關系型數據庫系統以關系代數爲堅實的理論基礎,經過幾十年的發展和實際應用,技術越來越成熟和完善。其代表産品有oracle、ibm公司的db2、微軟公司的ms sql server以及informix、adabasd等等。
3. 結構化查詢語言 (sql)
1974年,ibm的ray boyce和don chamberlin将codd關系數據庫的12條準則的數學定義以簡單的關鍵字語法表現出來,裏程碑式地提出了sql(structured query language)語言。sql語言的功能包括查詢、操縱、定義和控制,是一(yī)個綜合的、通用的關系數據庫語言,同時又(yòu)是一(yī)種高度非過程化的語言,隻要求用戶指出做什麽而不需要指出怎麽做。sql集成實現了數據庫生(shēng)命周期中(zhōng)的全部操作。sql提供了與關系數據庫進行交互的方法,它可以與标準的編程語言一(yī)起工(gōng)作。自産生(shēng)之日起,sql語言便成了檢驗關系數據庫的試金石,而sql語言标準的每一(yī)次變更都指導着關系數據庫産品的發展方向。然而,直到二十世紀七十年代中(zhōng)期,關系理論才通過sql在商(shāng)業數據庫oracle和db2中(zhōng)使用。
1986年,ansi把sql作爲關系數據庫語言的美國标準,同年公布了标準sql文本。目前sql标準有3個版本。基本sql定義是ansix3135-89,“database language - sql with integrity enhancement”[ans89],一(yī)般叫做sql-89。sql-89定義了模式定義、數據操作和事務處理。sql-89和随後的ansix3168-1989,“database language-embedded sql”構成了第一(yī)代sql标準。ansix3135-1992[ans92]描述了一(yī)種增強功能的sql,現在叫做sql-92标準。sql-92包括模式操作,動态創建和sql語句動态執行、網絡環境支持等增強特性。在完成sql-92标準後,ansi和iso即開(kāi)始合作開(kāi)發sql3标準。sql3的主要特點在于抽象數據類型的支持,爲新一(yī)代對象關系數據庫提供了标準。
4. 面向對象數據庫
随着信息技術和市場的發展,人們發現關系型數據庫系統雖然技術很成熟,但其局限性也是顯而易見的:它能很好地處理所謂的“表格型數據”,卻對技術界出現的越來越多的複雜(zá)類型的數據無能爲力。九十年代以後,技術界一(yī)直在研究和尋求新型數據庫系統。但在什麽是新型數據庫系統的發展方向的問題上,産業界一(yī)度是相當困惑的。受當時技術風潮的影響,在相當一(yī)段時間内,人們把大(dà)量的精力花在研究“面向對象的數據庫系統(object oriented database)”或簡稱“oo數據庫系統”。值得一(yī)提的是,美國stonebraker教授提出的面向對象的關系型數據庫理論曾一(yī)度受到産業界的青睐。而stonebraker本人也在當時被informix花大(dà)價錢聘爲技術總負責人。
然而,數年的發展表明,面向對象的關系型數據庫系統産品的市場發展的情況并不理想。理論上的完美性并沒有帶來市場的熱烈反應。其不成功的主要原因在于,這種數據庫産品的主要設計思想是企圖用新型數據庫系統來取代現有的數據庫系統。這對許多已經運用數據庫系統多年并積累了大(dà)量工(gōng)作數據的客戶,尤其是大(dà)客戶來說,是無法承受新舊(jiù)數據間的轉換而帶來的巨大(dà)工(gōng)作量及巨額開(kāi)支的。另外(wài),面向對象的關系型數據庫系統使查詢語言變得極其複雜(zá),從而使得無論是數據庫的開(kāi)發商(shāng)家還是應用客戶都視其複雜(zá)的應用技術爲畏途。
5. 數據管理的變革
二十世紀六十年代後期出現了一(yī)種新型數據庫軟件:決定支持系統(dss),其目的是讓管理者在決策過程中(zhōng)更有效地利用數據信息。于是在1970年,第一(yī)個聯機分(fēn)析處理工(gōng)具——express誕生(shēng)了。其他決策支持系統緊随其後,許多是由公司的it部門開(kāi)發出來的。
1985年,第一(yī)個商(shāng)務智能系統(business intelligence)由metaphor計算機系統有限公司爲procter & gamble公司開(kāi)發出來,主要是用來連接銷售信息和零售的掃描儀數據。同年, pilot 軟件公司開(kāi)始出售第一(yī)個商(shāng)用客戶/服務器執行信息系統——command center。
同樣在這年,加州大(dà)學伯克利分(fēn)校ingres項目演變成postgres,其目标是開(kāi)發出一(yī)個面向對象的數據庫。此後一(yī)年, graphael公司開(kāi)發了第一(yī)個商(shāng)用的對象數據庫系統—gbase。
1988年,ibm公司的研究者barry devlin和paul murphy發明了一(yī)個新的術語—信息倉庫,之後,it的廠商(shāng)開(kāi)始構建實驗性的數據倉庫。1991年,w.h. "bill" inmon出版了一(yī)本“如何構建數據倉庫”的書(shū),使得數據倉庫真正開(kāi)始應用。
1991: w.h.“bill” inmon發表了”構建數據倉庫”
二十世紀九十年代,随着基于pc的客戶/服務器計算模式和企業軟件包的廣泛采用,數據管理的變革基本完成。數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。internet的異軍突起以及xml語言的出現,給數據庫系統的發展開(kāi)辟了一(yī)片新的天地。
5. 數據庫發展大(dà)事記
1951:univac系統使用磁帶和穿孔卡片作爲數據存儲。
1956:ibm公司在其model 305 ramac中(zhōng)第一(yī)次引入了磁盤驅動器
1961:通用電(diàn)氣(ge)公司的charles bachman開(kāi)發了第一(yī)個數據庫管理系統——ids
1969:e.f. codd發明了關系數據庫。
1973: 由john j.cullinane領導cullinane公司開(kāi)發了 idms——一(yī)個針對ibm主機的基于網絡模型的數據庫。
1976: honeywell公司推出了multics relational data store——第一(yī)個商(shāng)用關系數據庫産品。
1979: oracle公司引入了第一(yī)個商(shāng)用sql關系數據庫管理系統。
1983: ibm 推出了db2數據庫産品。
1985: 爲procter & gamble系統設計的第一(yī)個商(shāng)務智能系統産生(shēng)。
1991: w.h.“bill” inmon發表了”構建數據倉庫”。
下(xià)面的資(zī)料是在百度找的,樓主有空可以看看。
我(wǒ)是做it的,跟你說說我(wǒ)的感受吧,僅供參考。
數據庫是爲了數據的存儲和操作方便才使用的。如果不用也可以,有的時候,
把數據記錄在文件上(如txt)也是可以的,但大(dà)量數據操作起來比較麻煩。
現在數據庫類型多,大(dà)型小(xiǎo)型都有,所以能用的話(huà),還是比較方便的。
定義1
當人們從不同的角度來描述這一(yī)概念時就有不同的定義(當然是描述性的)。例如,稱數據庫是一(yī)個“記錄保存系統”(該定義強調了數據庫是若幹記錄的集合)。又(yòu)如稱數據庫是“人們爲解決特定的任務,以一(yī)定的組織方式存儲在一(yī)起的相關的數據的集合”(該定義側重于數據的組織)。更有甚者稱數據庫是“一(yī)個數據倉庫”。當然,這種說法雖然形象,但并不嚴謹。
嚴格地說,數據庫是“按照數據結構來組織、存儲和管理數據的倉庫”。在經濟管理的日常工(gōng)作中(zhōng),常常需要把某些相關的數據放(fàng)進這樣“倉庫”,并根據管理的需要進行相應的處理。例如,企業或事業單位的人事部門常常要把本單位職工(gōng)的基本情況(職工(gōng)号、姓名、年齡、性别、籍貫、工(gōng)資(zī)、簡曆等)存放(fàng)在表中(zhōng),這張表就可以看成是一(yī)個數據庫。有了這個"數據倉庫"我(wǒ)們就可以根據需要随時查詢某職工(gōng)的基本情況,也可以查詢工(gōng)資(zī)在某個範圍内的職工(gōng)人數等等。這些工(gōng)作如果都能在計算機上自動進行,那我(wǒ)們的人事管理就可以達到極高的水平。此外(wài),在财務管理、倉庫管理、生(shēng)産管理中(zhōng)也需要建立衆多的這種"數據庫",使其可以利用計算機實現财務、倉庫、生(shēng)産的自動化管理。
j.martin給數據庫下(xià)了一(yī)個比較完整的定義:數據庫是存儲在一(yī)起的相關數據的集合,這些數據是結構化的,無有害的或不必要的冗餘,并爲多種應用服務;數據的存儲獨立于使用它的程序;對數據庫插入新數據,修改和檢索原有數據均能按一(yī)種公用的和可控制的方式進行。當某個系統中(zhōng)存在結構上完全分(fēn)開(kāi)的若幹個數據庫時,則該系統包含一(yī)個“數據庫集合”。
定義2
數據庫是依照某種數據模型組織起來并存放(fàng)二級存儲器中(zhōng)的數據集合。這種數據集合具有如下(xià)特點:盡可能不重複,以最優方式爲某個特定組織的多種應用服務,其數據結構獨立于使用它的應用程序,對數據的增、删、改和檢索由統一(yī)軟件進行管理和控制。從發展的曆史看,數據庫是數據管理的高級階段,它是由文件管理系統發展起來的。
[編輯本段]數據庫的基本結構
數據庫的基本結構分(fēn)三個層次,反映了觀察數據庫的三種不同角度。
(1)物(wù)理數據層。
它是數據庫的最内層,是物(wù)理存貯設備上實際存儲的數據的集合。這些數據是原始數據,是用戶加工(gōng)的對象,由内部模式描述的指令操作處理的位串、字符和字組成。
(2)概念數據層。
它是數據庫的中(zhōng)間一(yī)層,是數據庫的整體(tǐ)邏輯表示。指出了每個數據的邏輯定義及數據間的邏輯聯系,是存貯記錄的集合。它所涉及的是數據庫所有對象的邏輯關系,而不是它們的物(wù)理情況,是數據庫管理員(yuán)概念下(xià)的數據庫。
(3)邏輯數據層。
它是用戶所看到和使用的數據庫,表示了一(yī)個或一(yī)些特定用戶使用的數據集合,即邏輯記錄的集合。
數據庫不同層次之間的聯系是通過映射進行轉換的。
[編輯本段]數據庫的主要特點
(1)實現數據共享。
數據共享包含所有用戶可同時存取數據庫中(zhōng)的數據,也包括用戶可以用各種方式通過接口使用數據庫,并提供數據共享。
(2)減少數據的冗餘度。
同文件系統相比,由于數據庫實現了數據共享,從而避免了用戶各自建立應用文件。減少了大(dà)量重複數據,減少了數據冗餘,維護了數據的一(yī)緻性。
(3)數據的獨立性。
數據的獨立性包括數據庫中(zhōng)數據庫的邏輯結構和應用程序相互獨立,也包括數據物(wù)理結構的變化不影響數據的邏輯結構。
(4)數據實現集中(zhōng)控制。
文件管理方式中(zhōng),數據處于一(yī)種分(fēn)散的狀态,不同的用戶或同一(yī)用戶在不同處理中(zhōng)其文件之間毫無關系。利用數據庫可對數據進行集中(zhōng)控制和管理,并通過數據模型表示各種數據的組織以及數據間的聯系。
(5)數據一(yī)緻性和可維護性,以确保數據的安全性和可靠性。
主要包括:①安全性控制:以防止數據丢失、錯誤更新和越權使用;②完整性控制:保證數據的正确性、有效性和相容性;③并發控制:使在同一(yī)時間周期内,允許對數據實現多路存取,又(yòu)能防止用戶之間的不正常交互作用;④故障的發現和恢複:由數據庫管理系統提供一(yī)套方法,可及時發現故障和修複故障,從而防止數據被破壞
[編輯本段]數據庫發展階段
數據庫發展階段大(dà)緻劃分(fēn)爲如下(xià)幾個階段:
人工(gōng)管理階段;
文件系統階段;
數據庫系統階段;
高級數據庫階段。
[編輯本段]數據庫結構與數據庫種類
數據庫通常分(fēn)爲層次式數據庫、網絡式數據庫和關系式數據庫三種。而不同的數據庫是按不同的數據結構來聯系和組織的。
1.數據結構模型
(1)數據結構
所謂數據結構是指數據的組織形式或數據之間的聯系。如果用d表示數據,用r表示數據對象之間存在的關系集合,則将ds=(d,r)稱爲數據結構。例如,設有一(yī)個電(diàn)話(huà)号碼簿,它記錄了n個人的名字和相應的電(diàn)話(huà)号碼。爲了方便地查找某人的電(diàn)話(huà)号碼,将人名和号碼按字典順序排列,并在名字的後面跟随着對應的電(diàn)話(huà)号碼。這樣,若要查找某人的電(diàn)話(huà)号碼(假定他的名字的第一(yī)個字母是y),那麽隻須查找以y開(kāi)頭的那些名字就可以了。該例中(zhōng),數據的集合d就是人名和電(diàn)話(huà)号碼,它們之間的聯系r就是按字典順序的排列,其相應的數據結構就是ds=(d,r),即一(yī)個數組。(2)數據結構種類
數據結構又(yòu)分(fēn)爲數據的邏輯結構和數據的物(wù)理結構。數據的邏輯結構是從邏輯的角度(即數據間的聯系和組織方式)來觀察數據,分(fēn)析數據,與數據的存儲位置無關。數據的物(wù)理結構是指數據在計算機中(zhōng)存放(fàng)的結構,即數據的邏輯結構在計算機中(zhōng)的實現形式,所以物(wù)理結構也被稱爲存儲結構。這裏隻研究數據的邏輯結構,并将反映和實現數據聯系的方法稱爲數據模型。
目前,比較流行的數據模型有三種,即按圖論理論建立的層次結構模型和網狀結構模型以及按關系理論建立的關系結構模型。
2.層次、網狀和關系數據庫系統
(1)層次結構模型
層次結構模型實質上是一(yī)種有根結點的定向有序樹(shù)(在數學中(zhōng)"樹(shù)"被定義爲一(yī)個無回的連通圖)。例如圖20.6.4是一(yī)個高等學校的組織結構圖。這個組織結構圖像一(yī)棵樹(shù),校部就是樹(shù)根(稱爲根結點),各系、專業、教師、學生(shēng)等爲枝點(稱爲結點),樹(shù)根與枝點之間的聯系稱爲邊,樹(shù)根與邊之比爲1:n,即樹(shù)根隻有一(yī)個,樹(shù)枝有n個。
按照層次模型建立的數據庫系統稱爲層次模型數據庫系統。ims(information manage-mentsystem)是其典型代表。
(2)網狀結構模型
按照網狀數據結構建立的數據庫系統稱爲網狀數據庫系統,其典型代表是dbtg(data base task group)。用數學方法可将網狀數據結構轉化爲層次數據結構。
(3)關系結構模型
關系式數據結構把一(yī)些複雜(zá)的數據結構歸結爲簡單的二元關系(即二維表格形式)。例如某單位的職工(gōng)關系就是一(yī)個二元關系。
由關系數據結構組成的數據庫系統被稱爲關系數據庫系統。
在關系數據庫中(zhōng),對數據的操作幾乎全部建立在一(yī)個或多個關系表格上,通過對這些關系表格的分(fēn)類、合并、連接或選取等運算來實現數據的管理。dbaseii就是這類數據庫管理系統的典型代表。對于一(yī)個實際的應用問題(如人事管理問題),有時需要多個關系才能實現。用dbaseii建立起來的一(yī)個關系稱爲一(yī)個數據庫(或稱數據庫文件),而把對應多個關系建立起來的多個數據庫稱爲數據庫系統。dbaseii的另一(yī)個重要功能是通過建立命令文件來實現對數據庫的使用和管理,對于一(yī)個數據庫系統相應的命令序列文件,稱爲該數據庫的應用系統。因此,可以概括地說,一(yī)個關系稱爲一(yī)個數據庫,若幹個數據庫可以構成一(yī)個數據庫系統。數據庫系統可以派生(shēng)出各種不同類型的輔助文件和建立它的應用系統。
[編輯本段]常用數據庫
1. ibm 的db2
作爲關系數據庫領域的開(kāi)拓者和領航人,ibm在1997年完成了system r系統的原型,1980年開(kāi)始提供集成的數據庫服務器—— system/38,随後是sql/dsforvse和vm,其初始版本與systemr研究原型密切相關。db2 formvsv1 在1983年推出。該版本的目标是提供這一(yī)新方案所承諾的簡單性,數據不相關性和用戶生(shēng)産率。1988年db2 for mvs 提供了強大(dà)的在線事務處理(oltp)支持,1989 年和1993 年分(fēn)别以遠程工(gōng)作單元和分(fēn)布式工(gōng)作單元實現了分(fēn)布式數據庫支持。最近推出的db2 universal database 6.1則是通用數據庫的典範,是第一(yī)個具備網上功能的多媒體(tǐ)關系數據庫管理系統,支持包括linux在内的一(yī)系列平台。
2. oracle
oracle 前身叫sdl,由larry ellison 和另兩個編程人員(yuán)在1977創辦,他們開(kāi)發了自己的拳頭産品,在市場上大(dà)量銷售,1979 年,oracle公司引入了第一(yī)個商(shāng)用sql 關系數據庫管理系統。oracle公司是最早開(kāi)發關系數據庫的廠商(shāng)之一(yī),其産品支持最廣泛的操作系統平台。目前oracle關系數據庫産品的市場占有率名列前茅。
3. informix
informix在1980年成立,目的是爲unix等開(kāi)放(fàng)操作系統提供專業的關系型數據庫産品。公司的名稱informix便是取自information 和unix的結合。informix第一(yī)個真正支持sql語言的關系數據庫産品是informix se(standardengine)。informixse是在當時的微機unix環境下(xià)主要的數據庫産品。它也是第一(yī)個被移植到linux上的商(shāng)業數據庫産品。
4. sybase
sybase公司成立于1984年,公司名稱“sybase”取自“system”和“database” 相結合的含義。sybase公司的創始人之一(yī)bob epstein 是ingres 大(dà)學版(與system/r同時期的關系數據庫模型産品)的主要設計人員(yuán)。公司的第一(yī)個關系數據庫産品是1987年5月推出的sybase sqlserver1.0。sybase首先提出client/server 數據庫體(tǐ)系結構的思想,并率先在sybase sqlserver 中(zhōng)實現。
5. sql server
1987 年,微軟和ibm合作開(kāi)發完成os/2,ibm 在其銷售的os/2 extendededition 系統中(zhōng)綁定了os/2database manager,而微軟産品線中(zhōng)尚缺少數據庫産品。爲此,微軟将目光投向sybase,同sybase 簽訂了合作協議,使用sybase的技術開(kāi)發基于os/2平台的關系型數據庫。1989年,微軟發布了sql server 1.0 版。
6. postgresql
postgresql 是一(yī)種特性非常齊全的自由軟件的對象——關系性數據庫管理系統(ordbms),它的很多特性是當今許多商(shāng)業數據庫的前身。postgresql最早開(kāi)始于bsd的ingres項目。postgresql 的特性覆蓋了sql-2/sql-92和sql-3。首先,它包括了可以說是目前世界上最豐富的數據類型的支持;其次,目前postgresql 是唯一(yī)支持事務、子查詢、多版本并行控制系統、數據完整性檢查等特性的唯一(yī)的一(yī)種自由軟件的數據庫管理系統.
7.mysql
mysql是一(yī)個小(xiǎo)型關系型數據庫管理系統,開(kāi)發者爲瑞典mysql ab公司。在2008年1月16号被sun公司收購。目前mysql被廣泛地應用在internet上的中(zhōng)小(xiǎo)型網站中(zhōng)。由于其體(tǐ)積小(xiǎo)、速度快、總體(tǐ)擁有成本低,尤其是開(kāi)放(fàng)源碼這一(yī)特點,許多中(zhōng)小(xiǎo)型網站爲了降低網站總體(tǐ)擁有成本而選擇了mysql作爲網站數據庫。mysql的官方網站的網址是: www.mysql.com
[編輯本段]數據庫發展史
數據庫技術從誕生(shēng)到現在,在不到半個世紀的時間裏,形成了堅實的理論基礎、成熟的商(shāng)業産品和廣泛的應用領域,吸引越來越多的研究者加入。數據庫的誕生(shēng)和發展給計算機信息管理帶來了一(yī)場巨大(dà)的革命。三十多年來,國内外(wài)已經開(kāi)發建設了成千上萬個數據庫,它已成爲企業、部門乃至個人日常工(gōng)作、生(shēng)産和生(shēng)活的基礎設施。同時,随着應用的擴展與深入,數據庫的數量和規模越來越大(dà),數據庫的研究領域也已經大(dà)大(dà)地拓廣和深化了。30年間數據庫領域獲得了三次計算機圖靈(c.w. bachman,e.f.codd, j.gray),更加充分(fēn)地說明了數據庫是一(yī)個充滿活力和創新精神的領域。就讓我(wǒ)們沿着曆史的軌迹,追溯一(yī)下(xià)數據庫的發展曆程。
一(yī)、數據庫發展簡史
1. 數據管理的誕生(shēng)
數據庫的曆史可以追溯到五十年前,那時的數據管理非常簡單。通過大(dà)量的分(fēn)類、比較和表格繪制的機器運行數百萬穿孔卡片來進行數據的處理,其運行結果在紙(zhǐ)上打印出來或者制成新的穿孔卡片。而數據管理就是對所有這些穿孔卡片進行物(wù)理的儲存和處理。然而,1 9 5 1 年雷明頓蘭德公司(remington rand inc.)的一(yī)種叫做univac i 的計算機推出了一(yī)種一(yī)秒鍾可以輸入數百條記錄的磁帶驅動器,從而引發了數據管理的革命。1956 年ibm生(shēng)産出第一(yī)個磁盤驅動器—— the model 305 ramac。此驅動器有50 個盤片,每個盤片直徑是2 英尺,可以儲存5mb的數據。使用磁盤最大(dà)的好處是可以随機地存取數據,而穿孔卡片和磁帶隻能順序存取數據。
1951: univac系統使用磁帶和穿孔卡片作爲數據存儲。
數據庫系統的萌芽出現于60 年代。當時計算機開(kāi)始廣泛地應用于數據管理,對數據的共享提出了越來越高的要求。傳統的文件系統已經不能滿足人們的需要。能夠統一(yī)管理和共享數據的數據庫管理系統(dbms)應運而生(shēng)。數據模型是數據庫系統的核心和基礎,各種dbms 軟件都是基于某種數據模型的。所以通常也按照數據模型的特點将傳統數據庫系統分(fēn)成網狀數據庫、層次數據庫和關系數據庫三類。
最早出現的是網狀 dbms,是美國通用電(diàn)氣公司bachman等人在1961年開(kāi)發成功的ids(integrated datastore)。1961年通用電(diàn)氣公司(general electricco.)的charles bachman 成功地開(kāi)發出世界上第一(yī)個網狀dbms也是第一(yī)個數據庫管理系統—— 集成數據存儲(integrated datastore ids),奠定了網狀數據庫的基礎,并在當時得到了廣泛的發行和應用。ids 具有數據模式和日志(zhì)的特征。但它隻能在ge主機上運行,并且數據庫隻有一(yī)個文件,數據庫所有的表必須通過手工(gōng)編碼來生(shēng)成。之後,通用電(diàn)氣公司一(yī)個客戶——bf goodrich chemical 公司最終不得不重寫了整個系統。并将重寫後的系統命名爲集成數據管理系統(idms)。
網狀數據庫模型對于層次和非層次結構的事物(wù)都能比較自然的模拟,在關系數據庫出現之前網狀dbms要比層次dbms用得普遍。在數據庫發展史上,網狀數據庫占有重要地位。
層次型dbms是緊随網絡型數據庫而出現的。最著名最典型的層次數據庫系統是ibm 公司在1968 年開(kāi)發的ims
(information management system),一(yī)種适合其主機的層次數據庫。這是ibm公司研制的最早的大(dà)型數據庫系統程序産品。從60 年代末産生(shēng)起,如今已經發展到imsv6,提供群集、n路數據共享、消息隊列共享等先進特性的支持。這個具有3 0 年曆史的數據庫産品在如今的www應用連接、商(shāng)務智能應用中(zhōng)扮演着新的角色。
1973 年cullinane 公司(也就是後來的cullinet軟件公司),開(kāi)始出售goodrich 公司的idms 改進版本,并且逐漸成爲當時世界上最大(dà)的軟件公司。
2. 關系數據庫的由來
網狀數據庫和層次數據庫已經很好地解決了數據的集中(zhōng)和共享問題,但是在數據獨立性和抽象級别上仍有很大(dà)欠缺。用戶在對這兩種數據庫進行存取時,仍然需要明确數據的存儲結構,指出存取路徑。而後來出現的關系數據庫較好地解決了這些問題。
1970年,ibm的研究員(yuán)e.f.codd博士在刊物(wù)《communication of the acm》上發表了一(yī)篇名爲“a relational model of data for large shared data banks”的論文,提出了關系模型的概念,奠定了關系模型的理論基礎。盡管之前在1968年childs已經提出了面向集合的模型,然而這篇論文被普遍認爲是數據庫系統曆史上具有劃時代意義的裏程碑。codd的心願是爲數據庫建立一(yī)個優美的數據模型。後來codd又(yòu)陸續發表多篇文章,論述了範式理論和衡量關系系統的12條标準,用數學理論奠定了關系數據庫的基礎。關系模型有嚴格的數學基礎,抽象級别比較高,而且簡單清晰,便于理解和使用。但是當時也有人認爲關系模型是理想化的數據模型,用來實現 dbms是不現實的,尤其擔心關系數據庫的性能難以接受,更有人視其爲當時正在進行中(zhōng)的網狀數據庫規範化工(gōng)作的嚴重威脅。爲了促進對問題的理解,1974 年acm牽頭組織了一(yī)次研讨會,會上開(kāi)展了一(yī)場分(fēn)别以codd和bachman爲首的支持和反對關系數據庫兩派之間的辯論。這次著名的辯論推動了關系數據庫的發展,使其最終成爲現代數據庫産品的主流。
1969: edgar f。“ted” codd發明了關系數據庫
1970年關系模型建立之後,ibm公司在san jose實驗室增加了更多的研究人員(yuán)研究這個項目,這個項目就是著名的system r。其目标是論證一(yī)個全功能關系dbms的可行性。該項目結束于1979年,完成了第一(yī)個實現sql的 dbms。然而ibm對ims的承諾阻止了system r的投産,一(yī)直到1980年system r才作爲一(yī)個産品正式推向市場。ibm産品化步伐緩慢(màn)的三個原因:ibm重視信譽,重視質量,盡量減少故障;ibm是個大(dà)公司,官僚體(tǐ)系龐大(dà);ibm内部已經有層次數據庫産品,相關人員(yuán)不積極,甚至反對。
然而同時,1973年加州大(dà)學伯克利分(fēn)校的michael stonebraker和eugene wong利用system r已發布的信息開(kāi)始開(kāi)發自己的關系數據庫系統ingres。他們開(kāi)發的ingres項目最後由oracle公司、ingres公司以及矽谷的其他廠商(shāng)所商(shāng)品化。後來,system r和ingres系統雙雙獲得acm的1988年“軟件系統獎”。
1976年霍尼韋爾公司(honeywell)開(kāi)發了第一(yī)個商(shāng)用關系數據庫系統——multics relational data store。關系型數據庫系統以關系代數爲堅實的理論基礎,經過幾十年的發展和實際應用,技術越來越成熟和完善。其代表産品有oracle、ibm公司的 db2、微軟公司的ms sql server以及informix、adabasd等等。
3. 結構化查詢語言 (sql)
1974 年,ibm的ray boyce和don chamberlin将codd關系數據庫的12條準則的數學定義以簡單的關鍵字語法表現出來,裏程碑式地提出了sql(structured query language)語言。sql語言的功能包括查詢、操縱、定義和控制,是一(yī)個綜合的、通用的關系數據庫語言,同時又(yòu)是一(yī)種高度非過程化的語言,隻要求用戶指出做什麽而不需要指出怎麽做。sql集成實現了數據庫生(shēng)命周期中(zhōng)的全部操作。sql提供了與關系數據庫進行交互的方法,它可以與标準的編程語言一(yī)起工(gōng)作。自産生(shēng)之日起,sql語言便成了檢驗關系數據庫的試金石,而sql語言标準的每一(yī)次變更都指導着關系數據庫産品的發展方向。然而,直到二十世紀七十年代中(zhōng)期,關系理論才通過sql在商(shāng)業數據庫oracle和db2中(zhōng)使用。
1986年,ansi把sql作爲關系數據庫語言的美國标準,同年公布了标準sql文本。目前sql标準有3個版本。基本sql定義是ansix3135-89,“database language - sql with integrity enhancement”[ans89],一(yī)般叫做sql-89。sql-89定義了模式定義、數據操作和事務處理。
sql- 89和随後的ansix3168-1989,“database language-embedded sql”構成了第一(yī)代sql标準。ansix3135-1992[ans92]描述了一(yī)種增強功能的sql,現在叫做sql-92标準。sql-92包括模式操作,動态創建和sql語句動态執行、網絡環境支持等增強特性。在完成sql-92标準後,ansi和iso即開(kāi)始合作開(kāi)發sql3标準。sql3的主要特點在于抽象數據類型的支持,爲新一(yī)代對象關系數據庫提供了标準。
1969:edgar f. codd發明了關系數據庫
1976 年ibm e.f.codd發表了一(yī)篇裏程碑的論文“r系統:數據庫關系理論”,介紹了關系數據庫理論和查詢語言sql。oracle的創始人ellison非常仔細地閱讀了這篇文章,被其内容震驚,這是第一(yī)次有人用全面一(yī)緻的方案管理數據信息。作者e.f.codd十年前就發表了關系數據庫理論,并在ibm 研究機構開(kāi)發原型,這個項目就是r系統,存取數據表的語言就是sql。ellison看完後,敏銳意識到在這個研究基礎上可以開(kāi)發商(shāng)用軟件系統。而當時大(dà)多數人認爲關系數據庫不會有商(shāng)業價值。ellison認爲這是他們的機會:他們決定開(kāi)發通用商(shāng)用數據庫系統oracle,這個名字來源于他們曾給中(zhōng)央情報局做過的項目名。幾個月後,他們就開(kāi)發了oracle 1.0 。但這隻不過是個玩具,除了完成簡單關系查詢不能做任何事情,他們花相當長的時間才使oracle變得可用,維持公司運轉主要靠承接一(yī)些數據庫管理項目和做顧問咨詢工(gōng)作。而ibm卻沒有計劃開(kāi)發,爲什麽藍(lán)色巨人放(fàng)棄了這個價值上百億的産品,原因有很多:ibm的研究人員(yuán)大(dà)多是學術出身,他們最感興趣的是理論,而非推向市場的産品,從學術上看,研究成果應公開(kāi),發表論文和演講能使他們成名,爲什麽不呢?還有一(yī)個很主要的原因就是ibm 當時有一(yī)個銷售得還不錯的層次數據庫産品ims。直到1985年i b m 才發布了關系數據庫d b 2 ,ellision那時已經成了千萬富翁。ellison曾将ibm 選擇microsoft 的ms-dos作爲ibm-pc機的操作系統比爲:“世界企業經營曆史上最嚴重的錯誤,價值超過了上千億美元。”ibm 發表r系統論文,而且沒有很快推出關系數據庫産品的錯誤可能僅僅次之。oracle 的市值在1996年就達到了280億美元。
目前sql标準有3個版本。基本sql定義是ansix3135-89,“databaselan guage —— sql with integrityenhancement”[ans89],一(yī)般叫做sql-89。sql-89 定義了模式定義、數據操作和事務處理。s q l - 8 9 和随後的ansix3168-1989,“database language——embedded sql”構成了第一(yī)代sql标準。ansix3135-1992[ans92]描述了一(yī)種增強功能的sql,現在叫做sql-92标準。sql-92 包括模式操作,動态創建和sql語句動态執行、網絡環境支持等增強特性。在完成sql-92标準後,ansi和iso即開(kāi)始合作開(kāi)發sql3标準。 sql3的主要特點在于抽象數據類型的支持,爲新一(yī)代對象關系數據庫提供了标準。
4. 面向對象數據庫
随着信息技術和市場的發展,人們發現關系型數據庫系統雖然技術很成熟,但其局限性也是顯而易見的:它能很好地處理所謂的“表格型數據”,卻對技術界出現的越來越多的複雜(zá)類型的數據無能爲力。九十年代以後,技術界一(yī)直在研究和尋求新型數據庫系統。但在什麽是新型數據庫系統的發展方向的問題上,産業界一(yī)度是相當困惑的。受當時技術風潮的影響,在相當一(yī)段時間内,人們把大(dà)量的精力花在研究“面向對象的數據庫系統(object oriented database)”或簡稱“oo數據庫系統”。值得一(yī)提的是,美國stonebraker教授提出的面向對象的關系型數據庫理論曾一(yī)度受到産業界的青睐。而stonebraker本人也在當時被informix花大(dà)價錢聘爲技術總負責人。
然而,數年的發展表明,面向對象的關系型數據庫系統産品的市場發展的情況并不理想。理論上的完美性并沒有帶來市場的熱烈反應。其不成功的主要原因在于,這種數據庫産品的主要設計思想是企圖用新型數據庫系統來取代現有的數據庫系統。這對許多已經運用數據庫系統多年并積累了大(dà)量工(gōng)作數據的客戶,尤其是大(dà)客戶來說,是無法承受新舊(jiù)數據間的轉換而帶來的巨大(dà)工(gōng)作量及巨額開(kāi)支的。另外(wài),面向對象的關系型數據庫系統使查詢語言變得極其複雜(zá),從而使得無論是數據庫的開(kāi)發商(shāng)家還是應用客戶都視其複雜(zá)的應用技術爲畏途。
5. 數據管理的變革
二十世紀六十年代後期出現了一(yī)種新型數據庫軟件:決定支持系統(dss),其目的是讓管理者在決策過程中(zhōng)更有效地利用數據信息。于是在1970年, 第一(yī)個聯機分(fēn)析處理工(gōng)具——express誕生(shēng)了。其他決策支持系統緊随其後,許多是由公司的it部門開(kāi)發出來的。
1985年,第一(yī)個商(shāng)務智能系統(business intelligence)由metaphor計算機系統有限公司爲procter & gamble公司開(kāi)發出來,主要是用來連接銷售信息和零售的掃描儀數據。同年, pilot 軟件公司開(kāi)始出售第一(yī)個商(shāng)用客戶/服務器執行信息系統——command center。同樣在這年,加州大(dà)學伯克利分(fēn)校ingres項目演變成postgres,其目标是開(kāi)發出一(yī)個面向對象的數據庫。此後一(yī)年, graphael公司開(kāi)發了第一(yī)個商(shāng)用的對象數據庫系統—gbase。
1988年,ibm公司的研究者barry devlin和paul murphy發明了一(yī)個新的術語—信息倉庫,之後,it的廠商(shāng)開(kāi)始構建實驗性的數據倉庫。1991年,w.h. "bill" inmon出版了一(yī)本“如何構建數據倉庫”的書(shū),使得數據倉庫真正開(kāi)始應用。
1991: w.h.“bill” inmon發表了”構建數據倉庫”
二十世紀九十年代,随着基于pc的客戶/服務器計算模式和企業軟件包的廣泛采用,數據管理的變革基本完成。數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。internet的異軍突起以及xml語言的出現,給數據庫系統的發展開(kāi)辟了一(yī)片新的天地。
[編輯本段]數據庫未來發展趨勢
随着信息管理内容的不斷擴展,出現了豐富多樣的數據模型(層次模型,網狀模型,關系模型,面向對象模型,半結構化模型等),新技術也層出不窮(數據流,web數據管理,數據挖掘等)。目前每隔幾年,國際上一(yī)些資(zī)深的數據庫專家就會聚集一(yī)堂,探讨數據庫研究現狀,存在的問題和未來需要關注的新技術焦點。過去(qù)已有的幾個類似報告包括:1989 年future directions indbms research-the laguna beachparticipants ,1990 年databasesystems : achievements and opportunities ,1995 年的database 1991:w.h. inmon 發表了《構建數據倉庫》