數據庫專題研究報告:Oracle數據庫分析

(溫馨提示:文末有下載方式)

1、為什麼研究 Oracle 數據庫?

數據庫作為計算機架構的核心底層軟件,從 1970 年左右發展到現在,已經有五十年左右的時間。那個時候,軟件還並沒有很正式的作為單獨的產品進行銷售,更多的是與硬件和解決方案一起賣給客戶。數據庫產品發展到現在,中間經過各種計算載體和計算架構的變化,但數據庫的核心重要位置依然沒有變化。同時,我們看到在這個過程中,數據庫領域進進出出的廠商有很多,但 Oracle 的行業領導地位也一直沒有發生變化。

如果我們讀過數據庫的發展歷史,我們也會好奇,是哪些因素造就了Oracle 的在數據庫領域長達 40 多年的行業領導地位,並不斷保持產品性能的領先?同時,隨著計算場景和計算架構的變化,新的數據庫模型不斷湧現,對傳統關係型數據庫帶來一定挑戰。未來 Oracle 的數據庫產品又該如何應對?

在目前自主可控的背景下,大家也比較關心國產數據庫的發展和應用情況。國內數據庫的參與者主要包括南大通用、武漢達夢、北京凱星辰、人大金倉、廣州巨杉等。與海外主流數據庫相比,目前國內的數據庫處於什麼競爭水平?通過研究 Oracle 的數據庫產品,可以使我們對數據庫這個行業有一個初步的認識,來進一步分析在關鍵的 IT 底層環節,未來國內自主可控的路徑和可能性。

從 Oracle 公司自身來看,Oracle 可以說是全球軟件巨頭,體量雖然沒有 Microsoft 那麼大,但,(1)在數據庫和應用軟件領域,Oracle 的確實有其難以撼動的地位。(2)在 IT 佈局的完備性方面,Oracle 應該是繼 IBM 之後(在 IBM 發展中,其業務發生多次調整和分拆),在全球 IT巨頭中佈局最為完整、最為完善的一家。我們這裡所說的 IT 完備性主要是基於 IT 基礎產業鏈角度。

在 Oracle 的發展過程中,其業務種類越來越多樣化,既包括軟件、也包括硬件;軟件中既包括應用軟件、也包括基礎軟件。如何更好的理解Oracle 的每個業務。從這篇文章開始,我們將把 Oracle 的主要業務,做一系列的講解。以便於我們對國內相應市場和相應公司的產品做比較。

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

數據庫是 Oracle 創立之初的業務,也是 Oracle 其他業務發展的基礎。即使目前,數據庫業務收入在 Oracle 各業務中佔比最大,也是 Oracle最賺錢的業務之一。從下面這個數據我們可以看出,數據庫業務收入佔比在 35%-40%左右。可知,數據庫業務對於 Oracle 而言是非常重要的業務。

數據庫專題研究報告:Oracle數據庫分析

2、如何理解數據庫?

如何理解數據庫?從 IT 基礎架構來看,數據庫是計算機底層架構的核心基礎軟件。我們通常說計算機三大基礎軟件:操作系統、數據庫、中間件。如果沒有數據庫,計算機的數據處理速度(讀寫的速度)可能就沒有這麼迅速。對於非 IT 專業的人,經常會問,數據庫有什麼用?

數據庫,從字面來理解就是保存數據的倉庫。按照正式語言來定義,數據庫是按照一定的結構,來組織、存儲和管理數據的倉庫。在計算機中,它一般是由一個或者一組文件構成。在以上的描述中,我們需要關注幾個關鍵詞:結構、組織、存儲、管理。

為什麼需要數據庫?從本質來看,計算機解決的是數據計算和數據處理問題。數據庫是計算機應用系統中的一種專門管理數據資源的系統。數據有多種形式,包括文字、數碼、符號、圖形、圖像以及聲音等。數據是所有計算機系統所要處理的對象。

在計算機發展的過程中,人們也一直在想如何解決計算機產生的大量數據的存儲和管理問題。在早期,一種解決方法是製作文件,即將處理過程編成程序文件,將所涉及的數據按程序要求組織成數據文件,用程序文件來調用。數據文件與程序文件保持著一定的對應關係。

但在計算機應用快速發展的背景下,這種文件式方法表現出一定的不足。比如,在這種模式中,數據通用性較差,不便於移植,在不同文件中存儲大量重複信息、浪費存儲空間、更新不便等。

數據庫專題研究報告:Oracle數據庫分析

如果引入文件管理系統,文件管理系統作為應用程序與數據文件的接口,這些應用程序只需要與文件管理系統交互就可以帶來一些靈活性。不過這種方式還是解決不了“數據冗餘、處理效率低”的問題,特別是在較大規模的系統中更加明顯。

數據庫系統便能解決上述問題。數據庫系統不從具體的應用程序出發,而是立足於數據本身的管理,它將所有數據保存在數據庫中,進行科學的組織,並藉助於數據庫管理系統,以它為中介,與各種應用程序或應用系統接口,使之能方便地使用數據庫中的數據。

數據庫專題研究報告:Oracle數據庫分析

Oracle 數據庫服務器大致分為兩個主要部分:

1)Oracle instance (數據庫實例,上半部分)

2)Database(數據庫,下半部分)。

Oracle 服務器=實例+數據庫。

實例=SGA(實例內存)+後臺進程

內存=SGA+PGA

SGA=Database Buffer Cache (數據庫高速緩存區緩存)+Share Pool (共享池)+Redo Log Buffer(日誌緩存區)

數據庫專題研究報告:Oracle數據庫分析

用戶不能直接連接到數據庫,而是用戶先發出一個用戶進程, 用戶進程和 Oracle 服務器發出的服務器進程交互,然後服務器進程再和實例交互,最後實例和底層數據庫交互,從而實現用戶和數據庫的交互。具體過程看下圖:

數據庫專題研究報告:Oracle數據庫分析

我們以 Oracle 數據庫為例,來介紹下數據庫的體系結構,這樣更有利於我們對數據庫的理解。

從存儲結構上,oracle 數據庫可以分為物理存儲結構和邏輯存儲結構。

物理存儲結構:主要由數據文件,控制文件,重做日誌文件 3 種類型的文件組成。

1)數據文件:存儲數據庫數據的文件。數據庫中的所有數據最終都保存在數據文件中。但一個數據文件只對應一個數據庫,而一個數據庫可以包含多個數據文件。

2)控制文件:是一個很小的二進制文件,用於維護和描述數據庫的物理結構。控制文件十分重要,存放著數據庫中的數據文件和日誌文件,一旦該文件受損,數據庫將無法正常工作。

3)重做日誌文件:用於記錄數據庫中所有修改信息的文件,簡稱日誌文件。該文件是進行數據庫備份與恢復的重要手段,可以保證數據庫的安全,並且該文件不是唯一存在的,在一個日誌文件組中,日誌文件最多可以有五個。

除了上述文件,還有參數文件,備份文件,歸檔重做日誌文件,警告、跟蹤日誌文件。

數據庫專題研究報告:Oracle數據庫分析

邏輯存儲結構:主要包括表空間,段,區和數據塊,它們的關係為:數據庫=N*表空間=N*段=N*區=N*數據塊

1)表空間:Oracle 中最大的邏輯存儲結構,與物理上的一個或多個數據文件相對應,大小等於所有數據文件大小的總和。

2)段:一般是數據庫終端用戶將處理的最小存儲單位,段的數據空間是以數據區為單位的,根據存儲數據的特徵,可以分為 4 種類型(數據段,索引段,臨時段,回退段)。

3)區:磁盤空間分配的最小單位,有一個或多個數據塊組成。

4)數據塊:用來管理存儲空間的最基本單位,也是最小的邏輯存儲單位數據塊由塊頭部,表目錄,行目錄,空閒空間,行空間組成。

數據庫專題研究報告:Oracle數據庫分析

從實例結構上,Oracle 可以分為進程結構和內存結構。

進程結構:主要包括:DBWn 進程,LGWR 進程,CKPT 進程,SMON進程,PMON 進程,ARCn 進程。

DBWn 進程:(Database writer,數據庫寫入)進程,用於管理數據緩衝區,以便用戶總能找到空閒的緩衝區,通過延遲寫優化磁盤 I/O 讀寫,將所有修改後的緩衝區數據寫入數據文件。

LGWR 進程:(log writer,日誌寫入)進程,負責管理日誌緩衝區的一個後臺程序,用於將緩衝區的數據寫入磁盤的日誌文件。

CKPT 進程:(check point,檢查點或檢驗點)進程,一般在日誌切換時自動產生,用於縮短實例恢復所需時間。

SMON 進程:(system monitor,系統監控)用於數據庫實例出現故障或系統崩潰時,通過將聯機重做日誌文件中的條目應用於數據文件,執行崩潰恢復,還用於系統重新啟動期間清理所有表空間的臨時段。

PMON 進程:(process monitor,進程監控)進程,用於在用戶出現故障時執行進程恢復操作,負責清理內存存儲區和釋放該進程所使用的資源。

ARCO 進程:(archive process,歸檔)進程,用於將寫滿的日誌文件複製到歸檔日誌文件中,防止日誌文件組中的日誌信息由於日誌文件組的循環使用而被覆蓋。只有當 oracle 數據庫運行在歸檔模式下是才會產生ARCN 進程。

RECO 進程:(recovery,恢復)進程,存在於分佈式數據庫系統中,用於自動解決在分佈式數據庫中出現的事務故障。

內存結構:主要分為系統全局區(SGA),程序全局區(PGA)。內存結構是影響數據庫性能的主要因素之一。

系統全局區(system global area)是 Oracle 為系統分配的一組共享的內存結構,可以包含一個數據庫實例的數據或控制信息。在一個數據庫實例中,可以有多個用戶進程,這些用戶進程可以共享系統全局區的數據。該區域包括的分區::

1)數據緩衝區:用於存儲從磁盤文件中讀取的數據,供所有用戶共享。

2)日誌緩衝區:用於存儲數據庫的修改操作信息。

3)共享池:用於保存最近執行的 SQL 語句,PL/SQL 程序的數據字典信息,它是對 SQL 語句和 PL/SQL 程序進行語法分析,編譯和執行的內存區域。

4)大型池:用於提供一個大的緩衝區功數據庫的備份與恢復數據使用,是 SGA 的可選區域。

5)JAVA 池:用於在數據庫中支持 JAVA 的執行。

程序全局區(program global area):是 oracle 系統分配給一個進程的私有內存區域。

3、數據庫的發展歷程

數據管理方式的演變。今天我們看到的數據庫是隨著數據管理方式的演變、成熟和完善之後的產品形態。數據庫其實就是對數據進行存儲、管理、處理的載體。而這些數據的載體也隨著數據管理方式的不同而呈現出不同的產品形態。為了更好地理解數據庫在 IT 領域的角色和作用。我們可以瞭解下,在人類歷史上,數據管理方式的演變過程。

打卡機。在 19 世紀末,美國為了解決人口普查問題,利用打孔卡上的孔來表示數據,當時 Hollerith 發明了分揀機、製表機和記錄機,記錄完整的數據。

數據庫專題研究報告:Oracle數據庫分析

從打卡機到數據捲筒和數據鼓。從 1910 年到 1960 年代中期,打卡和製表機是企業辦公的前提條件。與此同時,IBM 在大規模定製企業的解決方案,來自 IBM 托馬斯·J·沃森領導其公司組織員工銷售其解決方案。IBM 從此發展壯大起來。

數據庫專題研究報告:Oracle數據庫分析

文件系統。文件系統被認為是一個與文件櫃極為相似的範例。記錄被視為離散的對象,可以放在文件夾(或目錄)中。這些文件夾本身可以放置在其他文件夾中,創建一個終止於包含所有記錄和子文件夾的單個目錄的層次結構。但文件系統具有我們上面提到的一些缺陷:不利於大規模數據的查詢和管理。

數據管理系統。20 世紀 60 年代,隨著 IT 技術的發展,以及客戶需求的改變,數據庫管理系統(DBMS)出現。DBMS 或現代數據庫允許用戶編組大量的數據。在存儲介質上組織記錄,以實現最佳訪問。

數據庫專題研究報告:Oracle數據庫分析

在數據庫發展歷史上,曾經出現了多位大師級人物。在這裡,我們重點提及四位。這四位分別因為其在數據庫領域的貢獻,而獲得圖靈獎。通過對這四位大師級人物的瞭解,我們會進一步加深對數據庫產品演進和發展進程的理解。

數據庫專題研究報告:Oracle數據庫分析

第一位:Charles W. Bachman(查爾斯 • 巴赫曼):1973 主持設計與開發了最早的網狀數據庫管理系統 IDS。

巴赫曼 1924 年 12 月 11 日生於堪薩斯州的曼哈頓。1948 年在密歇根州立大學取得工程學士學位,1950 年在賓夕法尼亞大學取得碩士學位。20世紀 50 年代在 Dow 化工公司工作,1961—1970 年在通用電氣公司任程序設計部門經理,1970—1981 年在 Honeywell 公司任總工程師,同時兼任 Cullinet 軟件公司的副總裁和產品經理。1973 年獲得圖靈獎

巴赫曼在數據庫領域的貢獻,主要體現在兩個方面:

第一,1964 年,巴赫曼開發了最早期的網狀數據庫管理系統 IDS。當時巴赫曼還在通用電氣公司。IDS 推出之後,成為了當時最受歡迎的數據庫之一。

第二,推動了數據庫標準的制定。巴赫曼曾擔任美國國家標準學會-標準規劃和規定委員會(ANSI-SPARC)的 DBMS 研究組副主席,並嘗試將數據庫管理語言標準化。1971 年 DBTG 小組提出了 DBTG 報告,描述了網狀數據庫系統參數接口和協議,以支持與數據無關的概念。DBTG首 次 確 定 了 數 據 庫 的 三 層 體 系 結 構 , 明 確 了 數 據 庫 管 理 員

DBA(DataBase Administrator)的概念,規定了 DBA 的作用與地位。

第二位:Edgar F. Codd(埃德加 • 科德) 1981 年提出關係型數據庫。科德被譽為“關係數據庫之父”,並因為在數據庫管理系統的理論和實踐方面的傑出貢獻 於 1981 年獲圖靈獎

1970 年,科德發表題為“大型共享數據庫的關係模型”的論文,文中首次提出了數據庫的關係模型。由於關係模型簡單明瞭、具有堅實 的數學理論基礎,所以一經推出就受到了學術界和產業界的高度重視和廣泛響應,並很快成為數據庫市場的主流。20 世紀 80 年代以來,計算機廠商推出的數據庫 管理系統幾乎都支持關係模型,數據庫領域當前的研究工作大都以關係模型為基礎。

1970 年以後,科德繼續致力於完善和發展關係理論。1972 年,他提出了關係代數和關係演算,為日後成為標準的結構化查詢語言 SQL 奠定了基礎。

第三位:James Gray(詹姆斯 • 格雷) 1998 解決了數據的完整性、安全性、並行性,以及從故障恢復方面發揮了十分關鍵的作用,提出並實現數據庫事務處理。

格雷先後在貝爾實驗室、IBM、Tandem、DEC 等公司工作。在 IBM 期間,格雷主持和參與了 IMS、System R、SQL、DB2 等項目的開發。格雷對數據庫領域的貢獻主要表現在,數據庫基礎理論向產品的轉化,這個過程中需要解決一系列技術問題。格雷於 1999 年 5 月 4 日在亞特蘭大舉行的 ACM 全國會議上接受圖靈獎。

第四位:Michael Stonebraker (邁克爾.斯通布雷克) 2014 創造了數據庫系統一系列奠基性基本概念和實際技術。

Michael Stonebraker 在 1992 年提出對象關係數據庫模型,也是 SQL Server/Sysbase 的奠基人。1987 年左右,Sybase 聯合微軟共同開發SQL Server。Stonebraker 創立了多家數據庫公司,其中包括 Ingres、Illustra、Cohera、StreamBase Systems 和 Vertica 等,成功地商業化了他關於數據庫技術的開創性工作。2015 年,因“對現代數據庫系統概念與實踐所做出的基礎性貢獻,Michael Stonebraker 獲得 2015 年圖靈獎。

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

數據庫:關係型數據庫&非關係型數據庫。在數據庫產品的演進中,其基於的數據模型也在發生變化。根據數據模型的不同,數據庫可以分為關係型數據庫和非關係型數據庫。關係型數據庫的底層數據模型是關係模型。非關係型數據庫是一個大類,其又可以分為不同種類的數據庫。比如,面向高性能併發讀寫的 key-value 數據庫,面向海量數據訪問的面向文檔數據庫,面向可擴展性的分佈式數據庫等。

數據庫專題研究報告:Oracle數據庫分析

關係型數據庫,是指以關係數學模型來表示的數據,關係數學模型中以二維表的形式來描述數據。關係型數據庫是存儲在計算機上的、可共享的、有組織的關係型數據的集合。

關係模型就是指二維表格模型,因而一個關係型數據庫就是由二維表及其之間的聯繫組成的一個數據組織。當前主流的關係型數據庫有 Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮 K-DB 等。

關係型數據庫必須具備 ACID 特性,ACID 分別是:Atomic 原子性,Consistency 一致性,Isolation 隔離性,Durability 持久性。

數據庫專題研究報告:Oracle數據庫分析

數據庫與 SQL 的關係?SQL 的全稱叫 Structured Query Language,中文名叫結構化查詢語言。它是一種特殊目的的編程語言,用來支持數據庫查詢、更新和管理。SQL 語言是 1974 年由 Boyce 和 Chamberlin 提出的一種介於關係代數與關係演算之間的結構化查詢語言,是一個通用的、功能極強的關係型數據庫語言。

非關係型數據庫:指非關係型的、分佈式的、且一般不保證遵循 ACID原則的數據存儲系統。非關係型數據庫以鍵值存儲,且結構不固定。每一個元組可以有不一樣的字段,每個元組可以根據需要增加一些自己的鍵值對,不侷限於固定的結構,可以減少一些時間和空間的開銷。

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

非關係型數據庫,又被稱為 NoSQL,是 Not Only SQL 的簡寫,意思是說不僅僅是 SQL。下邊列出了非關係型數據庫的四大分類,分別是鍵值對存儲型、文檔存儲型、基於列的數據庫、圖形數據庫。

1)鍵值對存儲:Redis

2)文檔存儲:MongoDB

3)基於列的數據庫:Cassandra、HBase

4)圖形數據庫:Neo4j

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

事務型數據庫&分析型數據庫。數據庫根據數據處理方式的不同,可以分為事務型數據庫和分析型數據庫。兩者面向的目標不一樣。目前大部分的數據庫是事務型數據庫。

數據庫專題研究報告:Oracle數據庫分析

數據處理大致可以分成兩大類:聯機事務處理 OLTP(on-line transaction processing)、聯機分析處理 OLAP(On-Line Analytical Processing)。OLTP 是傳統的關係型數據庫的主要應用,主要是基本的、日常的事務處理,例如銀行交易。OLAP 是數據倉庫系統的主要應用,支持複雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果。

OLTP 是傳統的關係型數據庫的主要應用,主要是基本的、日常的事務處理,記錄即時的增、刪、改、查,比如在銀行存取一筆款,就是一個事務交易。

OLAP 即聯機分析處理,是數據倉庫的核心部心,支持複雜的分析操作,側重決策支持,並且提供直觀易懂的查詢結果。典型的應用就是複雜的動態報表系統。

OLTP 實時性要求高,OLTP 數據庫旨在使事務應用程序僅寫入所需的數據,以便儘快處理單個事務。OLAP 的實時性要求不是很高,很多應用頂多是每天更新一下數據。

我們可以這樣來理解:OLTP 是一個在線交易系統,OLAP 是一個在線檢索和分析系統。OLTP 和 OLAP 並非解決同一問題,不存在競爭關係,而是相互補充的過程。

數據庫專題研究報告:Oracle數據庫分析

4、Oracle 的數據庫

Oracle 的數據庫產品。Oracle 的數據庫產品是公司最起家的業務。Oracle 的數據庫業務發展歷程,與全球數據庫發展歷史交織在一起,也與 Oracle 整個公司的發展綁定在一起。

Oracle 的數據庫產品包括兩種。第一個是 Oracle 自己的數據庫產品,也就是 Oracle Database。第二個是 MySQL。關於 MySQL 與 Oracle的關係,也是從原來的競爭對手,通過 Sun 這家公司而成為 Oracle 自己的產品。

2008 年 Sun 以 10 億美元收購 MySQL,MySQL 總部位於瑞典,在當時,IBM、SAP、Oracle 佔據企業數據庫市場 80%以上的市場份額。與 IBM、SAP 和甲骨文所不同,MySQL 並不推出功能大而全的數據庫軟件,而是開發能適合中小型企業實際需求的‘小而精’產品,這也是開源數據庫軟件受到中小型企業用戶歡迎的原因之一,功能越簡化,便於使用和管理。

2009 年,Oracle 以 74 億美元收購 Sun。

數據庫專題研究報告:Oracle數據庫分析

Oracle 數據庫的發展歷程。

1)Oracle 數據發展的歷史,要從 1970 年 IBM 的一篇論文開始。1970年 6 月,IBM 的研究員埃德加·考特(Edgar Frank Codd) 在Communications of ACM 上發表了著名的《大型共享數據庫數據的關係模型》(A Relational Model ofData for Large Shared Data Banks)的論文。這篇論文可以說是數據庫發展歷史的轉折,因為在這之前,數據庫基本是層狀和網狀的數據庫,還沒有關係型數據庫。

2)對於關係型數據庫,IBM 在 1973 年就啟動了 System R 項目,來研究關係型數據庫的可行性,但並沒有推出關係型數據庫產品。因為當時IBM 還有一個款銷售不錯的層次數據庫產品 IMS。如果推出關係型數據庫產品,勢必會對該產品帶來影響。

3)1977 年 6 月,Larry Ellison 與 Bob Miner 和 Ed Oates 在硅谷共同創辦了一家名為軟件開發實驗室(Software Development Laboratories,SDL)的計算機公司(Oracle 的前身)。Oates 最先看到埃德加·考特的那篇著名的論文,並推薦 Ellison 和 Miner 閱讀。Ellison 和 Miner 預見到數據庫軟件的很大潛力,於是,SDL 開始策劃構建可商用的關係型數據庫管理系統(RDBMS)。

4)Ellison 和 Miner 根據在上一家公司為 FBI 做過的一個項目,將它們的數據庫產品取名為 Oracle,1979 年,SDL 更名為關係軟件有限公司(Relational Software,Inc.,RSI),1982 年,為了突出公司的核心產品,RSI 再次更名為 Oracle。

5)1978 年,埃裡森的公司在 DEC 的小型機 PDP-11 上開發出一個基於關係型數據庫的系統,項目代號為 Oracle1,但是這個軟件從來沒有面市。1979 年,又推出了 Oracle2,這是計算機軟件史上第一個由純軟件公司開發的商用關係型數據庫管理系統。很快,埃裡森利用他過去為軍方開發項目的關係,將這個數據庫軟件賣給了美國空軍。

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

經歷過以上幾個重要發展階段,Oracle 數據庫的下游需求逐步擴大,即使在競爭對手產品不斷湧現的情況下,Oracle 的數據庫依然是市場份額最大的產品。

隨著 IT 架構、終端設備形態的不斷變化和遷移,Oracle 的數據庫產品也在不斷更新迭代。從 Oracle 數據庫產品服務的計算載體的形態來看,經歷了小型機與大型機、客戶機/服務器(PC 與服務器)、互聯網架構/瘦客戶端、數據庫雲/大數據四個階段。目前 Oracle 的數據產品已經更新到 18c。從以往 Oracle 更新的版本來看,我們可以將其劃分為幾個不同時代的產品。

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

階段一:Oracle 9i 之前,支持傳統的 C-S 架構

Oracle 的數據庫產品主要解決的是數據庫的高可靠性問題(注:衡量數據庫產品的核心指標在於五個方面:高可用性(High Availability)、高性能(High Performance)、高可管理(High Manageability)、高安全(High Security Ability)、高數據服務能力(High Data Service Ability)五個領域)。Oracle 數據庫核心優勢在於高效、安全、穩定等。

數據庫專題研究報告:Oracle數據庫分析

階段二:9i-12c,支持互聯網計算環境

從 Oracle 9i 開始,Oracle 引入新的技術:Oracle RAC,RAC 是指 real application clusters,譯為“實時應用集群”。RAC 是 Oracle 新版數據庫中採用的一項新技術,是高可用性的一種,也是 Oracle 數據庫支持網格計算環境的核心技術。用來在集群環境下,實現多機共享數據庫,以保證應用的高可用性。同時可以自動實現並行處理及負載均衡,並能實現數據庫在故障時的容錯和無斷點恢復。它是 Oracle 數據庫支持網絡計算環境的核心技術。

數據庫專題研究報告:Oracle數據庫分析

Oracle RAC 主要支持 Oracle9i、10g、11g,12C 版本,可以支持 24 x 7 有效的數據庫應用系統,在低成本服務器上構建高可用性數據庫系統,並且自由部署應用,無需修改代碼。

數據庫專題研究報告:Oracle數據庫分析

從 Oracle 12c 開始,Oracle 逐步開始推出 Options 產品線,推動企業數據中心的整合、數據集中和網格計算的發展。這一段 Oracle 的數據庫進一步強化了數據的高可靠性,同時重點發展的地方在數據庫的速度和應對雲計算對數據庫的需求。(1)Exadata 數據庫一體機和內存選件(in-memory Option)的推出,用來提高性能、簡化架構,提高數據庫的速度。(2)Oracle 12c 的多租戶和 DBaaS 則讓數據庫混合雲成為可能,客戶可以在不同的雲環境中進行切換。

階段三:12c 之後,支持雲計算環境,進入自治時代

12c 引入了 CDB 與 PDB 的新特性,在 Oracle 12C 數據庫引入的多租用戶環境(Multitenant Environment)中,允許一個數據庫容器(CDB)承載多個可插拔數據庫(PDB)。CDB 全稱為 Container Database,中文翻譯為數據庫容器,PDB 全稱為 Pluggable Database,即可插拔數據庫。在 Oracle 12c 之前,實例與數據庫是一對一或多對一關係(RAC):即一個實例只能與一個數據庫相關聯,數據庫可以被多個實例所加載。而實例與數據庫不可能是一對多的關係。當進入 Oracle 12c 後,實例與數據庫可以是一對多的關係。

數據庫專題研究報告:Oracle數據庫分析

2018 年,Oracle 推出數據庫最新版本 Oracle 18c。

Oracle 18c是 Oracle 最新一代數據庫,可以部署在本地或 Oracle雲中,運行在專用於 Oracle Exadata 和 Oracle 數據庫機等數據庫工作負載的通用硬件或工程系統上。它為各種規模的企業提供了訪問世界上最快,最具可擴展性和可靠性的數據庫技術,以便在雲,本地和混合雲配置中安全,經濟地部署事務和分析工作負載。

Oracle Database 18c是在以前Oracle Database 12c中引入的功能添加了新功能和增強功能,包括:

1)多租戶架構可大幅節省成本和靈活性。

2)內存列存儲,可實現實時分析的性能提升。

3)本機數據庫分片,可實現大規模 Web 應用程序的高可用性。

4)增強數據庫性能,可用性,安全性,分析和應用程序開發的更多關鍵功能。

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

Oracle 數據庫最新產品:Oracle Database 18c

Oracle 最新一代的數據庫 Oracle Database 18c 是在 Oracle Database 12c 基礎上開發的新版本。其獨特的多租戶架構,雙格式內存列存儲和本機分片使客戶能夠在內部和雲中部署其數據庫。

數據庫專題研究報告:Oracle數據庫分析

Oracle Database 18c 提供了一個高性能、高可靠和高安全的平臺,可以在雲,本地或混合雲進行部署。它提供了在本地和雲中運行的相同熟悉的數據庫軟件,使客戶能夠使用其內部開發的 Oracle 應用程序和 ISV應用程序,並在 Oracle 雲上運行它們,而不會導致任何應用程序更改。

Oracle Multitenant 是面向下一代數據庫雲的架構。它提供了隔離、敏捷性和規模經濟。在這個架構中,一個多租戶容器數據庫可容納多個可插拔數據庫。現有數據庫可以直接採用,無需更改應用。Oracle Multitenant 是對 Oracle Real Application Clusters 和 Oracle Active Data Guard 等選件的全面補充。

數據庫專題研究報告:Oracle數據庫分析

內存優化,支持實時分析。Oracle Database In-Memory 優化了分析和混合負載 OLTP,不僅提供出色的事務處理性能,還支持實時分析、商務智能和報告。

Oracle Database In-Memory 提供了一個獨特的雙格式架構,可以同時使用傳統的行格式和新的內存中列格式在內存中表示表。Oracle SQL 優化器自動將分析查詢路由到列格式,將 OLTP 查詢路由到行格式,從而透明地提供兩全其美的性能優勢。Oracle Database 自動維護行格式和列格式間的完全事務一致性,就像它現在維護表和索引間的一致性一樣。

數據庫專題研究報告:Oracle數據庫分析

自治數據庫雲

2017 年 10 月,Oracle 推出自治數據庫雲,這是一系列針對特定數據倉庫,OLTP 和 NoSQL 工作負載量身定製的數據庫服務。通過利用機器學習技術的現有數據庫功能,自治數據庫雲可以提供手動管理的數據庫難以提供的性能和可靠性。自治數據庫雲專門設計用於通過以下方式自動執行日常管理任務並消除人為錯誤,從而以更低的成本為客戶提供更高水平的服務:

Self-Driving:用戶只需定義工作負載和策略,數據庫自動化就可以實現。

Self-Securing:防止外部攻擊和內部用戶。

Self-Repairing:自動保護所有停機時間。

在連續的數據庫版本中,Oracle 引入了創新的自動化功能,幫助管理員為最終用戶提供卓越的服務。這些創新包括:

1)基於成本的優化。自動 SQL 查詢優化,自動統計信息收集,自動查詢重寫自動 SQL 計劃管理和自動 SQL 調優。

2)性能調整和診斷。自動內存和資源管理,自動索引和物化視圖顧問程序,自動數據庫診斷監視器,自動數據庫工作負載捕獲和重放以及自動工作負載存儲庫。

3)數據優化。自動撤消管理,自動段空間管理,自動存儲管理,自動數據優化和自動列式緩存。

4)雲規模運營。 Cluster Health Advisor 中的自動備用管理(代理),診斷框架,多租戶架構,自動數據庫克隆刷新和機器學習。

Oracle 最高可用性架構。Oracle 最高可用性架構 (MAA) 是 Oracle 的最佳實踐方案,它基於成熟的 Oracle 高可用性技術、專家建議和客戶體驗。MAA 的目的是以最低的成本和複雜性實現最佳的高可用性架構。

數據庫專題研究報告:Oracle數據庫分析

主流數據庫簡介

Oraccle:適用於大型企業/中高端客戶。是目前市場最為成熟,使用也最為廣泛的數據庫,其在兼容性、可移植性、可聯結性、開放性等方面表出現較強的有點。Oracle 採用標準 SQL,,並經過美國國家標準技術所(NIST)測試。與 IBMSQL/DS,DB2,INGRES,IDMS/R 等兼容。Oracle 的產品可運行於很寬範圍的硬件與操作系統平臺上。可以安裝在70 種以上不同的大、中、小型機上;可在 VMS、DOS、UNIX、WINDOWS等多種操作系統下工作。能與多種通訊網絡相連,支持各種協議(TCP/IP、DECnet、LU6.2 等)。Oracle 提供了多種開發工具,能極大的方便用戶進行進一步的開發。

其缺點在於 Oracle 比較昂貴,一般中小企業可能不一定能夠承受。

SQL Server:適用於中型企業。SQLServer 是微軟公司開發的大型關係型數據庫系統。SQLServer 的功能比較全面,效率高,可以作為中型企業或單位的數據庫平臺。SQLServer 可以與 Windows 操作系統緊密集成,不論是應用程序開發速度還是系統事務處理運行速度,都能得到較大的提升。對於在 Windows 平臺上開發的各種企業級信息管理系統來說,不論是 C/S(客戶機/服務器)架構還是 B/S(瀏覽器/服務器)架構,SQLServer 都是一個很好的選擇。由於其易操作性及友好的界面,贏得了廣大用戶的青睞,尤其是 SQLServer 與其它數據庫,如 Access、FoxPro、Excel 等有良好的 ODBC 接口,可以把上述數據庫轉成 SQLServer 的數據庫,因此使用 SQLServer 的客戶也在增加。

SQLServer 的缺點是隻能在 Windows、Linux 系統下運行。

MySQL:適用於小型網站。MySQL 是瑞典 MySQLAB 公司開發的小型關係型數據庫管理系統。2008 年 1 月被 Sun 公司收購。目前 MySQL被廣泛地應用在 Internet 上的中小型網站中。由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了 MySQL 作為網站數據庫。

DB2:作為關係數據庫領域的開拓者和領航人,IBM 在 1977 年完成了System R 系統的原型,1980 年開始提供集成的數據庫服務器——System/38,隨後是 SQL/DSforVSE 和 VM,其初始版本與 SystemR 研究原型密切相關。DB2 forMVSV1 在 1983 年推出。該版本的目標是提供這一新方案所承諾的簡單性,數據不相關性和用戶生產率。1988 年DB2 for MVS 提供了強大的在線事務處理(OLTP)支持,1989 年和1993 年分別以遠程工作單元和分佈式工作單元實現了分佈式數據庫支持。最近推出的 DB2 Universal Database 6.1 則是通用數據庫的典範,是第一個具備網上功能的多媒 體關係數據庫管理系統,支持包括 Linux在內的一系列平臺。

PostgreSQL。PostgreSQL 是一種特性非常齊全的自由軟件的對象——關係性數據庫管理系統(ORDBMS),它的很多特性是當今許多商業數據庫的前身。PostgreSQL 最早開始於 BSD 的 Ingres 項目。

PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3。首先,它包括了可以說是目前世界上最豐富的數據類型的支持;其次,目前 PostgreSQL 是唯一支持事務、子查詢、多版本並行控制系統、數據完整性檢查等特性的唯一的一種自由軟件的數據庫管理系統。

數據庫專題研究報告:Oracle數據庫分析

5、Oracle 數據庫面臨的競爭

如何理解 Oracle 數據庫面臨的競爭?

在數據庫領域,商業數據庫一直面臨著來自於開源數據庫的競爭,關係型數據庫(SQL)也面臨著來自於非關係型數據庫(NoSQL)的競爭。數據庫領域的競爭格局,雖然 Oracle、MySQL、SQL Server 一直牢牢穩居行業前三,但市場格局也在不斷髮生一些變化。

特別是,最近幾年,在新的計算環境下,Oracle 的數據庫產品面臨的外部挑戰和外部競爭也越來越大。我們也經常看到,亞馬遜、阿里、Salesforce 等雲計算廠商也都在基於開源數據庫,研發自主的數據庫產品。那麼這些背後的原因是什麼?

我們認為,理解上述這個問題,根源在於理解計算環境的變化,以及關係型數據庫其存在的計算場景限制。

關係型數據庫,是上世紀 60 年代左右的 IT 技術,到目前已經有半個多世紀的應用。即使目前我們看到互聯網的發展、大數據的應用已經雲計算機的普及,湧現出越來越多的新型數據庫,然而關係型數據庫仍然佔據主導地位。最主要的原因之一就是關係型數據庫採用了 SQL 標準,這種高級的非過程化編程接口語言,將計算機科學和易於人類理解認知的數據管理方式完美的銜接在了一起,目前還難以超越。

根據我們前面介紹,SQL 語言是一種介於關係代數與關係演算之間的結構化查詢語言,其本質是用一種類似於自然語言的關鍵字和語法來定義和操作數據,進行可編程的數據存儲、查詢以及管理。這種抽象編程接口,將具體的數據問題與數據的存放、查詢實現的細節解耦開來,使得商業業務邏輯以及信息管理的計算模式能夠被大量複製和應用,節省了大量的編程壓力,推動商業關係型數據庫的快速發展。

2010年左右,隨著計算的架構逐步從傳統的CS架構向雲計算架構遷移,關係型數據庫逐步暴露出一些不能滿足雲計算模式下的需求。在傳統 IT架構下,計算力(例如用關係型數據庫來處理結構化數據等)是服務於系統硬件隔離環境下的多用戶使用場景。而云計算時代是多客戶租用環境,各種計算負載場景更加複雜。因此,我們面臨的一個問題是,在計算負載變遷的環境下,如何解決傳統計算架構的技術產物與雲計算時代應用環境的適配問題。也就是說如何將傳統的關係數據庫應用在雲計算環境下。

在雲環境下,隨著用戶的增多,以及用戶業務和數據的增長,備份、性能、遷移、升級、只讀實例、磁盤容量、日誌 延遲等相關問題漸漸顯現出來。這些都與關係型數據天生的缺陷有關:1、為了維護一致性所付出的代價就是其讀寫性能比較差;2、固定的表結構;3、不能很好滿足高併發讀寫需求;4、不能很好滿足海量數據的高效率讀寫需求。

數據庫專題研究報告:Oracle數據庫分析

基於此,亞馬遜、阿里等雲計算廠商紛紛開始,根據自身業務需求,逐步開發適用於自身業務計算環境下的數據庫產品。我們看到,亞馬遜開發有 Amazon Aurora 數據庫、Amazon Dynamo DB 數據庫,阿里開發了阿里雲 Polar DB 數據庫。

Amazon DynamoDB 是一個鍵/值和文檔數據庫,可以在任何規模的環境中提供個位數的毫秒級性能。它是一個完全託管的多區域多主數據庫,具有適用於 Internet 規模的應用程序的內置安全性、備份和恢復和內存緩存。DynamoDB 每天可處理超過 10 萬億個請求,並可支持每秒超過 2000 萬個請求的峰值。

許多全球發展最快的企業,如 Lyft、Airbnb 和 Redfin,以及 Samsung、Toyota 和 Capital One 等企業,都依靠 DynamoDB 的規模和性能來支持其關鍵任務工作負載。超過 100000 位 AWS 客戶選擇DynamoDB 作為鍵/值和文檔數據庫,用於其移動、Web、遊戲、廣告技術、物聯網以及其他需要任何規模的低延遲數據訪問的應用程序

另外,以下幾個原因也有可能是新型數據庫不斷湧現的原因。

1)從數據庫產品架構演化來看,考慮到工程效率和運維成本,未來的數

據庫產品最好能夠以一種通用的產品來應對不同計算場景的應用需求。

2)Oracle 數據庫高昂的費用和維護成本。

3)數據安全。

數據庫專題研究報告:Oracle數據庫分析

6、數據庫市場格局演化情況

根據數據庫排名權威網站 DB-Engines,其對全球數據庫進行實時排名。該排名參考 6 個方面的考慮:1)數據庫相關網站數量,2)公眾關注度,3)技術討論活躍度,4)招聘職位,5)專業檔案,6)社交網絡信息等。該排名在業界引用得非常多,權威性也很高,總體比較客觀。

數據庫總體排名。根據 DB-Engines 數據,數據庫總體排名前五的分別是:Oracle、MySQL、SQL Server、PostgreSQL、MongoDB。其中前四個都是關係型數據庫,第五個 MongoDB 是文件數據庫。

數據庫專題研究報告:Oracle數據庫分析

關係型數據庫總體排名。根據 DB-Engines 數據,關係型數據庫總體排名前五的分別是:Oracle、MySQL、SQL Server、PostgreSQL、IBM的 DB2。從評分來看,前三名數據庫的分數顯著高於後面其他數據庫。

數據庫專題研究報告:Oracle數據庫分析

key-value 存儲數據庫總體排名。根據 DB-Engines 數據,分佈式數據庫總體排名前五的分別是:Redis、DynamoDB、Cosmos DB、Memcached、Hazelcast。

數據庫專題研究報告:Oracle數據庫分析

文件數據庫(Document Database)排名。根據 DB-Engines 數據,文件型數據庫總體排名前五的分別是:MongoDB、DynamoDB、Couchbase、Cosmos DB、CouchDB。

數據庫專題研究報告:Oracle數據庫分析

MongoDB 是文檔型數據庫,NoSQL 領域的領導者之一,是當前最成功的 NoSQL 數據庫。MongoDB 成立於 2007 年,提供非關係型數據庫軟件。2017 年 10 月,MongoDB 在納斯達克 IPO,目前市值達到 92 億美元。股價從 2018 年初的 20 多美元漲到現在的 160 多美元。2018 年MongoDB 營業收入為 2.67 億美元,同比增長 61%,淨利潤為-0.99 億元。

2007年,MongoDB公司的前身10gen正式成立。2009年2月,MongoDB數據庫首次在數據庫領域亮相,打破了關係型數據庫一統天下的局面。2014 年 12 月, MongoDB 收購了 WiredTiger 存儲引擎,大幅提升了MongoDB 的寫入性能。2016 年, MongoDB 推出 Atlas,在 AWS、Azure 和 GCP 上的 MongoDB 託管服務。2018 年 6 月, MongoDB 推出 ACID事務支持,成為第一個支持強事務的 NoSQL 數據庫。2018 年 11 月,MongoDB 將其開源授權修改為 SSPL。

數據庫專題研究報告:Oracle數據庫分析

從數據庫使用情況來看,一些新型的數據庫的使用程度在不斷提升。DB2、Sybase 等使用者方面有些流失。開源類數據庫使用情況有所增加。比如 MySQL 的使用程度在不斷增加。而在開源數據庫中,近幾年使用者增加比較明顯的主要在:MongoDB 、PostgreSQL、Redis 等。

MongoDB(文檔型數據庫,2009 年發佈第一版本)、PostgreSQL(關係型數據庫,1989 年發佈第一版本)、Redis(鍵值型數據庫,2009 年發佈第一個版本)等。

數據庫專題研究報告:Oracle數據庫分析

商業數據庫 VS 開源數據庫。根據是否開源,數據庫可以分為商業數據庫(收費)和開源數據庫。根據 DB-Engines 數據,其統計了 350 種不同的數據,其中商業數據庫數量為 179 個,開源數據庫為 171 個。相比2018 年都有所增加。

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

從 DB-Engines 的統計數據來看,開源數據庫的受歡迎程度不斷增加。從近幾年數據庫產品發展以及下游需求來看,開源數據庫的種類的逐步增加,也出現了一些受市場歡迎的優秀的數據庫產品,比如 MongoDB等。而且,雲計算的快速應用也使得傳統的關係型數據庫的使用遇到場景限制。

數據庫專題研究報告:Oracle數據庫分析

商業數據庫和開源數據,在不同的數據模型中,其佔比也有很大不同。數據模型一般就是我們所說的關係數據模型還是非關係數據模型。由於關係數據模型佔據行業主導位置,所以我們就將關係數據模型之外的都統稱為菲關係數據模型。非關係數據庫模型的種類包括很多,比如,文檔型、鍵值、圖像等。

通過下圖,我們可以看出,我們用的比較多的關係型數據庫中,商業數據庫的佔比在 60%左右,其餘的是開源數據庫。

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

數據庫專題研究報告:Oracle數據庫分析

7、總結

通過以上,我們試圖想把數據庫的起源、演化過程、市場格局以及未來發展趨勢介紹清楚。在自主可控的背景下,便於我們對相應國內相應的數據庫產品進行研究。

幾個常識小問題。1)是不是數據庫產品 Oracle 是最好的?在關係型數據庫領域,Oracle 的產品可以說是最好的(從產品性能和穩定性角度,我們可以這樣認為,但 Oracle 數據庫比較適合大型企業客戶,小企業客戶不一定適用,當然也是因為 Oracle 收費比較高),但隨著計算場景的多樣化,互聯網/雲計算場景下對新的數據模型的需求增加,關係型數據庫不一定是最合適的。2)開源的數據庫是不是都是免費的?這個不一定。我們現在有一些商業化的軟件都是在開源代碼基礎上開發的。數據庫軟件也是一樣。比如開源數據庫 MySQL,它有不同的版本,如社區版本(免費)、企業版本(收費)、集群版本(免費)、高級集群版本(收費)等;類似於還有開源數據庫 MongoDB。3)是不是 NoSQL 數據庫比關係型數據庫更好?也不是。這是兩種不同類型的數據庫,沒有誰比誰更好,只是適用的場景不同。非關係型數據庫具有天然的多樣性,除了一些共性外,很大一部分都是針對某些特定的應用需求出現的,因此,對於該類應用,具有較高的性能。

IT 領域,在國內 IT 產品進行國產化替代過程中,我們一直會覺得操作系統、數據庫很難被替代。對於操作系統比較難替代,大家容易理解。因為在傳統的 IT 架構下,操作系統已經與基礎底層芯片形成完美適配和偶合。同時,由於操作系統支撐著上層應用,操作系統要實現廣泛應用,需要上層應用來豐富操作系統的應用生態。但對於數據庫而言,之所以很難被替代,是因為數據庫與業務直接關聯,企業的業務數據是寫入數據庫而被查詢和管理的,替換風險比較大。

Oracle 數據庫成功的要素。Oracle 數據庫成功的要素有很多,除了埃裡森具有的一些特質之外。如果從行業角度來看,我們認為其中值得關注的一個因素是:Oracle 簡單的商業模式:只賣軟件,不靠服務費。Oracle把自己的 Oracle2 推向市場的時間是在 1979-1980 年左右。那個時候,IBM 的數據庫產品 System R 佔據市場統治地位,而且軟件並沒有單獨作為產品銷售,而是跟硬件一起搭售,不僅如此,銷售軟硬件的同時,也一起把服務銷售給客戶。而 Oracle 簡單的只賣軟件的模式,不強行搭售服務,便於客戶再數據庫系統上進行二次開發,容易獲得客戶認可和使用。

相比海外數據庫廠商,國內的數據庫企業還有很長的路需要走。從第三方數據庫廠商來看,目前國內主要是南大通用、人大金倉、達夢、巨杉等。南大通用在分析型數據領域,與海外競爭對手處於同一競爭水平。在事務型數據庫領域通過不斷消化吸收 Informix 產品,其產品性能也在逐步提升。而對於國內雲廠商自主研發的數據庫而言,逐步在擺脫海外數據庫廠商的約束,開發適用於高併發、海量數據、可擴展、實時性的分佈式數據庫。

溫馨提示:如需原文檔,可在PC端登陸未來智庫www.vzkoo.com搜索下載本報告。

(報告來源:中泰證券;分析師:謝春生/楊亞宇)

相關推薦

推薦中...