程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> Sybase與Oracle的性能比對決

Sybase與Oracle的性能比對決

編輯:SyBase綜合文章

數據庫市場份額比較

Sybase公司成立於1986年,立足於在開放系統平台上研制具有ClIEnt/Server體系結構的數據庫系統軟件產品。當時的Sybase公司由於有效地汲取了其它RDBMS設計過程中的先進技術和概念,以滿足聯機事務處理(OLTP)應用的高性能要求為目標,同時加強聯網對異構數據源的開放互聯,使Sybase取得了很大成功,特別是Sybase有效的拓展市場行動,使Sybase曾一度成為世界數據庫市場增長最快的產品。然而,由於產品本身的技術問題,不能提供對大型多處理器系統的支持,使得Sybase的市場份額急劇下降,並出現連續的虧損。1997年虧損額為5540萬美元,1998年僅第一季度就虧損了8120萬美元。1999年初,Sybase裁員又600人,將近其全體員工的10%。2001年第一季度沒有虧損,但令人擔心的是比2000年同期許可證(license)收入下降了10.7%。 早在1997年,著名的市場分析公司Gartner Group就已將Sybase從”Big 5” DBMS市場領先者的名單中刪除。

根據Gartner/Dataquest近期發布的2001年度數據庫市場份額統計報告, 在Gartner/Dataquest報告中Oracle依然在主流操作系統Unix和Linux, Windows NT/2000/XP上的關系數據庫市場上占據絕對的領先地位,在UNIX上占63%, Windows+Unix上占49.9%。在關系型數據庫市場(包括AS/400,Mainframe),Oracle以39.8%仍然處於領先地位。

根據最新的FactPoint的調查,Oracle數據庫依然是Fortune 100公司的首選數據庫,其中51%的Fortune 100公司選用Oracle Database作為構建企業的傳統應用和電子商務平台。

FactPoint Group報告的調查結果:

1、 Oracle仍然是Fortune 100公司的首選數據庫平台,Oracle的數據庫市場份額遠遠超過其它競爭對手,其市場份額是第二名的2.5倍。

2、 51%的Fortune 100公司選用Oracle數據庫來構建企業的傳統應用和電子商務應用平台。

3、 Fortune 100所選用的主流應用軟件絕大多數選用Oracle數據庫平台,其中:100%的Oracle 應用產品;76%的SAP; 72%的PeopleSoft; 81%的SIEbel; 73%的i2都選用Oracle數據庫平台。

4、 Oracle數據庫產品滲透到Furtune100公司的各個業務領域, 其中75%的財務應用, 72%的人力資源應用, 68%的客戶關系管理應用和72%的供應鏈管理應用都采用Oracle數據庫平台。

5、 Oracle數據庫被Furtune100的客戶評選為技術最好和與主流應用軟件集成最好的數據庫平台。

FactPoint Group調查涉及了與Fortune100公司的IT經理們的400次會談,其調查結果根據Fortune 100公司的數據庫產品的使用狀況,真實體現了當今企業中數據庫部署與使用的狀況,根據FactPoint Group的調查Oracle數據庫技壓群雄,仍然保持了企業數據庫市場份額的領頭羊地位。

Oracle 與 Sybase 技術先進性的比較

Oracle數據庫與Sybase數據庫相比,無論從體系架構、並行支持、完整性控制等各方面均有很大的優勢。

1、體系結構的比較

Oracle采用多線索多進程體系結構,直接在內核中支持分布式數據庫操作、多線索處理、並行處理以及聯機事務處理等 。Oracle企業級服務器從結構上說,同時支持集中式多用戶環境、ClIEnt/Server、分布式處理和Internet計算結構;從技術上說,為應用程序及系統開發人員實現了透明的網絡環境、混合網絡結構以及分布式數據管理等

Sybase采用單進程多線索體系結構,其核心是SQL Server(現在為與Microsoft SQL Server區別,改名為Adaptive Server Enterprise),在ClIEnt/ Server體系結構的基礎上,架構了復制服務器(Replication Server)和多功能通用網關(Omni SQL Gateway,現在叫Enterprise CONNECT)等部件,從而形成了軟件產品系列。

2、多線索多進程與單進程多線索的比較

Oracle和Sybase都采用多線索。采用多線索的模式,能用較少的線索管理大量的用戶進程;並且,線索進程是動態可調整的,當用戶數增加時, 線索進程也會階段性地自動增加;當用戶數減少時,線索進程也會自動減少。多線 索結構,大大降低了Oracle和Sybase對系統資源的占用,提高了系統資源的利用率。

對於Oracle的體系結構,在集中式多用戶環境下,每個用戶單獨占用一個服務器進程;在ClIEnt/Server 和Internet方式下可以采用多個用戶共享進程,以多線索方式執行用戶的請求。另外,針對特別級別的用戶,可以單獨占用一個 服務器進程,實現最優級別的用戶請求。Oracle的服務器進程是用來同時處理 數據庫請求的,它們從請求隊列中拿出申請,進行語法分析、權限檢查以及一系列的內部操作,並協調Oracle其他後台進程,以共同完成申請的處理,並把操 作結果返回到回答隊列。Oracle多服務器進程結構,能實現數據庫事務的並行 處理,提高並發事務處理的響應速度。並且多服務器結構具有非常靈活的擴充 性,當硬件平台處理能力提高時,服務器進程的個數也能隨之增加,數據庫性 能也隨之提高。多服務器結構,避免了單服務器結構中很容易造成的服務器進 程瓶頸現象,也避免了因此而引起的單服務器進程死鎖的現象。

Sybase采用單進程多線索方式,用戶請求都由一個進程來進 行總的調度和管理。在單服務器並采用單一的ClIEnt/Server模式下其對數據庫的管理比較簡單,內存資源占用較少,在並發用戶數較少的情況下,其對系統資源的利用率比采用多進程方式要高;但同時,當並發用戶數達到一定的數量時,會引起系統處理性能大大下降,和服務器進程瓶頸及死鎖等現象;同時系統的可擴展余地非常狹窄。

3、系統集成度

Oracle服務器上的Oracle多線索多進程結構以及並行查詢,分布式數據庫、高級復制等功能都是 直接在Oracle核心中實現的,無需添加額外的服務器,不要求額外的系統配置 ,也不會帶來額外的的系統管理負擔,更不會產生由API帶來編程的變化。

Sybase由實現不同功能的不同服務器組成(ASE, Replication Server, Enterprise Connect, IQ等) ,眾多的服務器要 求能協調一致地工作,同時又要滿足高可靠性和高可用性的要求。這不僅對硬件設備提出了很高的要求,對系統管理來講也提出了極高的要求。Sybase對用戶是不透明的,許多操作需要編程人員來管理和操縱,而且後來引入的應用程 序接口(API) CT- Lib與以前版本(DB-Lib)不兼容,大大加重了編程人員的負擔,延長了開發周期。

4、聯機事務處理

聯機事務處理是比較特殊的一類應用,一般體現為同時工作的用戶數較 多,對數據的操作申請比較簡單,但要求比較快的響應時間。針對這類應用, 計算機系統必須提供一個能支持大量同時工作的用戶,並提供比較大的系統吞吐量來消化用戶的大量申請。具體來說,就是要有較好的用戶管理手段、有效的內存緩沖區管理、優化的I/0進程控制、有效的系統封鎖處理、快速的網絡管理功能等等。因此,為了在聯機事務處理應用中達到較好的性能,應以適用於聯機事務處理的硬件平台、操作系統、網絡環境為基礎,配合數據庫處理,才能實現理想的聯機事務處理。

Oracle的多線索技術在相同硬件環境下,所支持的用戶數是其他數據庫 系統的5至10倍。Oracle的多進程技術從根本上加快每一個用戶申請的處理速度,特別是在大量申請需要處理的情況下,它能保持內存中請求隊列在大部分時間處於隊列空的狀態。更為靈活的是,Oracle多進程的數量是動態可調整的,使用相應的系統參數,可以控制服務器進程個數、當應用環境、工作量、硬件環境等發生變化時,可以構造不同的Oracle服務器進程,使用戶的申請在任何時候都能保持較快的處理效率。

數據庫共享緩存管理,是影響聯機事務處理性能的一個關鍵因素,能充分且有效地利用高速緩存,就能大大減少許多重復操作,大大減少不必要的I/O,從而提高語句的執行速度。Oracle有一套十分有效的內存高速緩存管理的技術,編譯後的SQL語句共享緩沖區、預讀入技術、日志記錄緩存等。

在多用戶並發工作的情況下,寫/寫沖突及讀/寫沖突是主要的影響實時操作效果的因素,是聯機事務需要解決的主要問題。Oracle采用行級封鎖來解決寫/寫沖突,當用戶要對一張表進行修改或更新操作時,會自動鎖定要修改的記錄“行”,而不是整張表。當其他用戶同時也要修改同一張表時,也鎖定各自需要修改的記錄“行”,只有在兩個或多個用戶需要修改同一記錄行時,才會出現排隊等待鎖資源釋放的現象。這種行級封鎖大大降低了沖突的機率,與頁級鎖或表級鎖相比,大大提高了系統的吞吐量。

Oracle采用讀一致快照技術來解決讀/寫沖突,而不是采用傳統的讀鎖方式。當一用戶對某一記錄進行修改時,系統會自動生成一個該記錄的拷貝, 稱為讀一致性快照。而另一用戶同時要讀取這一記錄行時,讀操作將讀取讀一致快照的內容,而不用加讀鎖。因此讀操作將不被寫操作所阻塞;同樣,寫操作也同樣不會被讀操作所阻塞。可見Oracle的行級封鎖及讀一致性快照技術,使得在大量用戶並發工作的聯機事務處理環境下,用戶發生沖突而排隊等候的現象減少到了最低,大大提高了系統的吞吐量,提高實時響應的速度。

另外,Oracle還有靈活的查詢優化機制,確保查詢操作的快速完成, 如基於成本的智能優化、哈希方法、分布式查詢優化等,都能以不同的使用方法,為不同層次的用戶自動提供最佳的優化方案, 而無需用戶編程指明。

為了能提高事務的吞吐量和低的響應時間,Sybase主要采用了支持存儲過程(Stored Procedure)、Log成組提交以及基於成本的優化等技術。其設計思想分別和Oracle中數據庫共享緩存管理以及查詢優化機制相似,從功能處理上沒有Oracle的全面和有效。長期以來,Sybase采用頁級封鎖機制來解決寫/寫沖突,使用戶的並發事務受到很大限制,集中體現在用戶的並發事務達到一定數量時,系統實現上容易陷入癱瘓的狀態。在ASE的新版本中才引入行級鎖,然而,Sybase的行級鎖並不徹底,它采用可升級的行級鎖,可升級的行級鎖隨著系統活動級別的增加,為管理內存的使用,會升級原有鎖的級別——當系統並發訪問較多時,會引起行級鎖升級為頁級鎖。所以系統對大量並發的控制並沒有實質的改善。例如,用戶A在修改某個客戶信息,將可能影響用戶B修改其它客戶信息。不必要的資源競爭 ,較低的系統並發性,對關鍵業務的OLTP系統是無法忍受的。

由於缺少讀一致性的多版本模式,Sybase不能提供一致性和並發性兼得的解決方案。為了使讀操作不阻塞寫操作,Sybase使用髒讀(Dirty Read)技術。雖然提高了性能和並發性,但帶來了讀到的數據可能與數據庫中的數據不一致的結果。另一方面,如果要保證讀一致性,Sybase采用加讀鎖技術,而用戶A的讀鎖不能與用戶B的寫鎖同時加在同一個數據塊上,因此,用戶A必須等待,直到用戶B的事務處理結束,釋放寫鎖後,才能繼續進行讀操作。或者用戶B必須等待用戶A讀操作完成後才能進行寫操作。讀和寫操作互相阻塞,大大增加了死鎖的可能。

5、硬件平台及操作系統的適用性

Oracle能支持幾乎所有常見的硬件平台及操作系統,這種支持不是簡單 的內核移植,而是針對不同的硬件平台及操作系統,充分利用不同硬件平台以及操作系統的優勢,並在數據處理方面加以發揮。

根據近年來美國TPC組織提供的測試報告,Oracle在目前國際上流行的絕大多數硬件平台上均獲得了最高的TPC-C測試值。其中最新的測試值為824,164 tpmC。這些創記錄的結果,在數據庫市場中尚無其他數據庫產品能望其項背。另據美國著名的媒體對幾家主要數據庫廠家的測試結果,Oracle在數據庫的數據裝載、數據查詢、數據庫讀/寫操作等方面,都獲得絕對優勢,並連續幾年占據評比的第一名。現在絕大多數硬件公司都以Oracle為數據庫基礎平台進行測試,也說明Oracle的確讓不同的硬件平台發揮出其最佳的效能。

Sybase支撐的硬件平台及操作系統則比較有限,缺乏對MPP系統的支持。其最高的TPC-C測試值僅為60,366tpmC.

6、並行處理

Oracle的體系結構不僅能大大加快系統的處理速度,增大系統的吞吐量 ,還能充分利用計算機硬件資源。以對稱多處理SMP結構中,Oracle的多服務器進程能均衡地分散在多個CPU上,使SMP中的多個CPU同時處理請求隊列中的用戶請求,從而達到利用所有CPU同時工作,並且均分負載的目的。Oracle的並行查詢功能將SQL的查詢語句,索引建立語句,數據加載,備份/恢復以及用戶程序進行分解,分配給多個CPU同時工作以實現語句級的並行處理,並且均分負載的,以上的並行處理過程,對用戶來說是透明的,完全集成在數據庫內核中完成;支持應用程序及數據庫的性能縮放,即CPU個數增加時,數據庫的處理速度和應用程序的執行速度能隨之增加,反之亦然,均不需要修改程序或重構數據庫系統。通過數據分區技術,Oracle還可以支持並行的DML操作(插入、刪除、修改)。

在松散藕合型的Cluster及海量並行處理結構中,Oracle並行服務器(Real Application Cluster,以前稱為OPS)能充分發揮松散藕合型計算機結構的特點。Oracle公司在1989年率先推出Parallel Server選件,以支持這種體系結構(Oracle6.2版)。隨著Cluster技術自身的成熟,以及Oracle對這一技術的經驗,Oracle Parallel Server目前已能支持幾乎所有的Cluster群機系統。在share-nothing或shared-disk模式的群機系統上,Oracle Parallel Server均可以實現多節點共享數據庫,並自動並行處理及均分負載,在數據庫故障時進行容錯和無斷點恢復處理。

Oracle並行服務器利用共享磁盤的技術,數據庫駐留在共享磁盤中,松散耦合中的所有計算機均能同時對同一份數據庫映像進行存儲。另外,Oracle與松散耦合型計算機結構相結合,還能大大提高系統的可靠性及容錯能力,當某一台計算機出現故障時,由於數據庫是同一份共享的映像,所以不需要系統的重新恢復,從而繼續整個系統的運行,達到不間斷運行的效果。

Oracle9i最新的並行服務器技術 Real Application Clusters設計了快捷高效的共享集群高速緩存,從而提供了透明的應用程序可擴展性。Real Application Clusters是五年多研發工作的結晶,其中包含了13項獨家專利和18項已申報的專利請求。Real Application Clusters獨特之處在於:

a)“開箱即用”,提供接近線性的可伸縮性

b)與應用程序的良好兼容性,無需重新設計

c)快速增長的集群,可快速增添節點和磁盤

Oracle Real Application Cluster能支持的節點數目受操作系統的約束,一般最大可以達256個。

為了能充分發揮對稱多處理機SMP中多CPU硬件平台的高性能,Sybase采用了虛擬服務器體系結構(VSA),用單一的進程來模擬多進程處理,當多個CPU同分片的進程處於協調一致時,可以利用多個CPU的高性能;但同時,如果不處於協調一致時,也會成為服務器進程瓶頸。

Sybase不能支持Cluster系統的可伸縮性。Sybase Adaptive Server Enterprise只能提供在Cluster系統上的切換功能,提高系統的可用性。

Sybase最近宣布它的Companion Server Option可以支持Cluster系統的並行處理。但事實是怎樣的呢?Companion Server Option只能支持2個節點的Cluster系統, 包含一個Primary Database節點和一個Proxy Database節點。雖然用戶可以通過Proxy Database節點訪問數據庫,但Proxy Database上只有數據字典是直接訪問的,其對數據的訪問是通過對Primary Database的遠過程調用實現,所以最終仍然都需經過主數據庫(Primary Database)節點。Primary Database的負載並沒有減輕。所以這種配置不能真正提高系統的可伸縮性。

7、數據分區技術

Oracle從Oracle8開始引入 了數據分區(Partitioning),這項技術對大規模數據庫(VLDB), 並行處理和數據倉庫都有重大的意義。

Oracle數據分區選件將大表和索引分成可以管理的小塊,從而避免了對每個大表只能作為一個單獨的對象進行管理。分區(partitioning)是一種“分而置之”的技術,它為大量數據提供了可伸縮的性能。分區通過將操作分配給更小的存儲單元,減少了需要進行管理操作的時間,並通過增強的並行處理提高了性能,通過包含故障的影響還增加了可用性。它支持靈活的按不同關鍵字進行分區的能力。

分區使管理員更容易管理大數據量的表。管理員可以指定每個分區的存儲屬性,分區在宿主文件系統中的放置情況,這樣便增加了對超大型數據庫的控制粒度。分區可以被單獨地卸出或裝入,備份,恢復,導出和導入,以及加載;因此減少了需要進行管理操作的時間。可以對分區實施靈活的增刪改等管理工作。對表分區還可以創建單獨的索引分區,從而限制了需要進行索引維護操作的時間。此外,還提供了種類繁多的局部和全局的索引技術。

分區技術還提高了數據的可用性。當部分數據由於故障或其它原因不可用時,其它分區內的數據可用不收影響繼續使用。

分區對應用是透明的,可以通過標准的SQL語句對分區表進行操作。Oracle 的優化器在訪問數據時會分析數據的分區情況,在進行查詢時,那些不包含任何查詢數據的分區將被忽略,從而大大提高系統的性能。有了分區以後可以將對數據表的操作,例如DML操作,在多個分區上實現並行,且分區間的並行可做到均衡負載,從而提高系統的性能。

Oracle支持的分區包括:

a) Range Partitioning—對指定關鍵字按取值范圍分區,Oracle自動將記錄插入相應的分區。

b) Hash Partitioning—基於Hash算法,使用者只需要指定用作Hash 分區的關鍵字和分區數量,Oracle 把每條記錄均勻插入各個分區。

c) Composite Partitioning—是Range Partitioning和Hash Partitioning的組合,使用者可以指定先按某個關鍵字做Range Partitioning,然後再按另外一些關鍵字做Hash Partitioning。從而提供更好的並行處理能力。

d) List Partitioning—當指定關鍵字的取值可以列表時,可以使用這種分區。Oracle自動將記錄插入相應的分區。

Sybase也宣稱有數據分區的功能。但Sybase的分區與Oracle, IBM, Informix等數據庫的分區定義有本質的不同。實際上,Sybase的分區稱為頁鏈更為合適。在Sybase中,表的存儲是以頁為單位的,頁間以指針連接構成頁鏈。而將一個表分區實際就是為一個表建多個頁鏈。在Oracle中早就實現了這種技術(一個表建多個Free List)。這種“分區”雖然可以提高查詢的並行度,但它沒有常規意義上的分區所帶來的易於管理和隔離故障的好處。在並行方面,它也不能象Hash分區那樣使數據均勻地分布,所以I/O在各個數據庫設備不能均勻地分布,並行操作仍然存在瓶頸。Sybase的所謂“分區”並不是數據庫行業裡公認的分區,既不能按鍵值范圍分區,也不能通過Hash函數分區,只是為表的插入增加多個插入點,彌補其頁級鎖在OLTP環境下難以支持大量並發操作的缺陷。

8、數據庫高可靠性

Oracle有一套較完整的容錯機制來保證系統的可靠性,它支持聯機備份與恢復。Oracle聯機方式的備份,是由一個獨立的後台進程完成的,由於該後台進程與負責數據庫日常工作的其它進程處於並行工作方式因此,聯機備 份能保證在做備份時,不影響前台交易進行的速度,並且該後台進程能保證對 整個數據庫做出完整的備份。Oracle的聯機恢復方式,是以不影響其他用戶的交易為前提的。當局部發生故障時,進行局部修復,不影響同一數據庫中其 他用戶的交易,更不影響網絡中其他節點的日常工作。另外,Oracle的恢復功能,還能將整個數據庫恢復到某一時間,還原數據庫的某一歷史狀態。

Oracle Real Application Cluster使系統的可靠性有更顯著的提高。由於是共享磁盤的結構,除非Cluster中所有節點都停機,才會使系統不能被訪問。當任一個節點發生故障時,RAC的其它各個節點都已隨時准備好接管它的連接用戶,而無需重新啟動進程。Oracle 還提供了透明的應用切換,使客戶端應用可以被迅速切換到有效節點上,而無需重新連接數據庫。

Sybase沒有獨立的後台進程可供單獨工作,所以,在Adaptive Server Enterprise中內構 了一個備份服務器(Backup Server)以實現數據庫的聯機備份,但由於與其他用戶 共享進程,在一定程度是影響了其他用戶的工作效率,而且還不能確保得到完整的數據備份。

此外,由於Sybase缺乏對數據庫的一致性作持續檢查的機制,有可能造成實際上已分配給某表的存儲空間仍然被標示為“未使用空間”,一旦被重復分配,就會造成數據庫損壞(corruption)。按照Sybase的用戶服務合同,在進行備份保存之前,為了檢測數據庫一致性問題需要運行DBCC。在DBCC操作過程中,數據庫必須保持脫機狀態。

DBCC必須經常地運行,以保證數據庫的一致性。尤其備份之前一定要運行。但DBCC需要脫機運行,數據庫需處在單用戶方式下,而且運行很慢。這給一些需要高可用性(24x7)或實施VLDB(大規模數據庫)的用戶帶來了嚴重的影響。

除了聯機備份/恢復的手段外,Oracle和Sybase還有一定的容錯能力,實現基於軟件的數據庫鏡像及日志文件的鏡像功能,不依賴於計算機硬件平台,即使在硬件平台不提供容錯功能的時候,也能為數據庫實現容錯的保護。

9、分布式處理技術

分布式環境下的各節點必須具有很好的自治能力,以防止某一個點或服務器故障而影響其它服務器正常工作。Oracle和Sybase都具有這種自治能力。

Oracle分布式數據庫從Client/Server出發,經過內核的重新改造,技術 上又邁進一大步,成功地支持超越 ClIEnt/Server的大規模分布式處理。

Oracle分布式數據庫不僅支持ClIEnt/Server的通訊模式,還有極具特色的服務器與服務器間的透明通訊。這種服務器自動通訊的方式,使得物理上存放在多個計算機上的數據,對應用程序及開發人員來說,就如同所有的數據僅存放在一台服務器上一樣,這就是所謂的“一個邏輯數據 庫整體”的含義。

Oracle具有極強的分布式處理能力。如透明的分布式查詢、透明的分布式修改和分布式數據復制。透明的分布式查詢由數據庫同義詞及數據庫鏈路(Database Link) 支持,能實現數據庫的自動尋址,用戶勿需關心數據的物理存放位置。透明的分布式更新是通過自動的兩階段提交技術實現的。Oracle自動協調各服務器事務,操作要麼一起成功,要麼一起失敗,以保護分布式環境下的數據在任一時刻都於一致的狀態。分布式數據復制技術有實時復制(Real-time Replication)、存儲轉發復制(Stored-and-forward Replication)、以及基於時間的復制(Time-based Replication)等三種方式。如實時復制,根據應用實際需要,在本地服務器上生成一個數據庫觸發器(Database trigger),一旦本地數據庫有數據操作,立即將所需復制數據一次復制到多個分布式節點上,而且是與本地操作同步執行。存儲轉發復制,由Oracle提供的復制日志實現,即把所有需要復制的數據記錄在日志中,若日志記錄中的數據量達到一定的程度時,Oracle自動將日志記錄復制到各目的地上。基於時間的復制,由Oracle數據庫參數實現,由該參數決定數據刷新的時間或間隔,Oracle會自動按此間隔時間定期將遠地節點的相差數據傳適到本地快照表中,並且自動刷新,本地用戶可以利用此快照表數據,並結合本地數據進行復雜的分布式查詢。

以上三種方法復制的數據,在使用方法上,均可做為本地數據來使用。 可對其進行查詢,修改等。對復制數據的修改,可以進一步廣播到其他復制版及原版上,這就是所謂的數據N-向復制。對於N-向復制,Oracle有一些自動實現的沖突檢測和解決技術,保護N-向數據復制時的分布數據一致性。

Oracle的兩階段提交加上復制技術,為分布式環境下不同的應用需求提供了靈活的選擇。例如,對於聯機事務處理的分布環境,可以選用兩階段提 交或實時復制技術,以保證分布式數據的實時的一致性。對於實時要求不太嚴格的環境,可以使用另外兩種復制技術,甚至在同一種系統中某些數據操作可選用實時的方法,某些數據操作可以選用異步的方法。Oracle以完整而且靈活的分布式處理技術,來滿足不同應用環境的需要。

除此這外,Oracle還有分布式環境下的自動查詢優化,分布式死鎖檢測和自動解鎖、分布式環境下的數據庫管理、分布式數據庫全局命名機制等。 所有這些功能,均從更大范圍實現了數據庫的分布式處理。

在Sybase中, Adaptive Server Enterprise是RDBMS的核心,主要是為ClIEnt/Server結構設計的 ,為了適應分布式數據庫系統環境,另外提供了復制服務(Replication Server)和 多功能通用網關(Enterprise Connect)。其中,復制服務器(Replication Server)從功能處理上同Oracle中的存儲轉發復制(Stored-and-forward Replication)類似,它提供分布式條件下的異步復制,它通過不斷地將主表上的更新傳遞到復制的備份上,當系統的局部出現故障時,不致影響整個系統。一旦網絡上故障排除,這種服務器將可以以同步方式恢復分布式數據庫。但復制服務器本身成為一個單故障點,如果它出了問題,整個系統的所有復制均無法進行。多功能通用網關(Enterprise Connect)解決地點的透明性和數據庫的透明性。這兩個產品並不集成在數據庫核心中,需額外的許可證費用。

Sybase不具備自動的服務器與服務器之間自動協調和兩階段提交技術 ,分布式條件下的查詢和更新必須由ASE和多功能通用網關以及復制服務器共同協調實現。所以,Sybase提供給用戶大量的編程庫,用戶可通過編程實現分布式處理。Sybase強調其靈活性,強調用戶能做任何事情,但這是與高集成性 的發展趁勢背道而馳的,用戶需要做大量的編程工作,這也是Sybase不足之處。

10、數據完整性控制

Oracle具有一套完整的數據庫完整性控制機制,這些控制也是直接嵌入Oracle核心中實現的。如:實體完整性約束、自動對表中字段的取值進行正確與否的判斷、自動的引用完整性約束、可自動對多張表進行相互制約的控 制等。實體完整性以及引用完整性均為申明式的,就是說,只要簡單地建立或修改表的定義完整性規則,以後Oracle DBMS會自動實施這些約束。這樣把應用開發和維護成本降到了最低(因為沒有代碼),也改善了應用可靠性(由DBMS 來確保實施),並且降低實施開銷(Oracle優化約束實施操作)。

另外,Oracle還提供用PL/SQL書寫的存儲過程的觸發器,在多個層次上實施很復雜的商業規則。存儲過程及觸發器可以包含一條或多條SQL語句, 也可以包含多個PL/SQL程序塊,它們經編譯後存儲在Oracle中。存儲過程 可以被其他Oracle工具調用,並支持遠程客戶的調用,這就是遠過程調用。觸發器則會在每次對數據進行插入、更新、刪除時,自動被觸發。Oracle觸發器有很強的功能,如每當一種特定部件的庫存下降超過一定界限時,一個觸發器可以自動生成一個新的定單,觸發器可用於維護導出數據,執行基於內容的審計,以及執行同步的表副本復制。觸發器可在觸發語句之前或之後執行(或稱事前觸發及事後觸發);既可以是由一條語句也可以是由每一行觸發執行。Oracle強有力的觸發器嚴格遵從ANSI SQL中的標准定義。

在Sybase中,由Adaptive Server集中實現數據完整性控制。支持申明 定義完整性約束。用Datatype、Default、Rule等來提供字段完整性及字段與表的關系,用觸發器實現參照完整性。

Sybase中的數據完整性控制相對Oracle來說顯得非常有限。實體完整性提供的功能顯得非常不足,往往需要用戶在程序中加入很多有關實體完整性的控制代碼,執行效率不高,系統可適應性不好,如加或減一個實體約束往往需要修應用程序。其觸發器實現的是事後回退方式,如果一個事務引進一連串的事務回退,勢必降低事務的處理能力。

11、數據庫安全控制

Oracle的安全控制機制,是由系統權限、數據權限、角色權限這三級體系結構組成的。所謂系統權限,是指對數據庫系統及數據結構的操作權,例如 :創建/刪除數據鏈路、同義詞、審計、索引、存儲過程、觸發器等等。所謂數據權限,是指用戶對數據的操作權,如查詢、更新、完整性約束、運行存儲過程等等。所謂角色權限,是把幾個相關的權限組織成角色,角色之間可以進一步組合而成為多層次的樹型結構,這是Oracle把現實世界中的行政管理方式融入RDBMS中。角色權限除了限制操作權、控制權外,還能限制執行某些應用程序的權限。這樣安全控制體系,使得整個系統的管理人員及程序開發人員能控制系統命令的運行、數據的操作以及應用程度的執行。這一安全體系已通過了美國計算機(NCSC)C2級標准的測試。實際上,對命令運行權及應用執行權的控制,已超出了C2級標准。在一些安全級別達到B1級標准的操作系統平台上, Oracle還有以B1級標准建立的Oracle產品,B1級產品的主要特點是除了以對象名(表名、列名、索引等)為基礎來限制存取的離散型安全管理外,還有以數據安全程度為基礎來限制存取的強制型安全管理。

Oracle還提供了虛擬私有數據庫(Virtual Private Database), 實現了行級加密。不同的用戶訪問同一張表將是不同的數據集,再也無需在應用裡作任何控制。

另外,Oracle可按系統和用戶的要求,可對表及視圖進行各種審計,完成對數據庫系統的審計追蹤,如:什麼用戶參與了哪些操作,操作的對象,操作數據的記錄及操作成功與否等。以此可以檢測異常或可疑用戶的操作,以及未授權的訪問。

除了保障數據庫一級的安全性外,Oracle公司還提供了安全的網絡服務。通過Oracle安全網絡服務,在網絡上傳遞的SQL語句、查詢結果、存儲過程調用、數據復制、用戶口令等所有信息,都可以經RC4或DES加密傳遞,使數據在傳送過程中,不被洩密。同時,Oracle公司的安全網絡服務還支持帶有序列號的校驗和算法(MD5),保證數據在傳送過程中不被非法修改;數據包不被重發,漏發。Oracle的安全網絡服務是通過純軟件的方式實現,具有成本低、硬件無關、協議無關的特點。Oracle公司是唯一一家提供安全網絡服務的數據庫公司。

Sybase對數據庫的安全性控制是比較初級的。其主要特性有 :明確的登錄識別、加密的口令和口令的截止日期、命名的系統管理員以及系統是否登錄成功、用戶在數據庫中的活動等等。Sybase的安全控制定位於NCSC的C2級安全標准。

12、數據倉庫的支持

對數據倉庫的支持是Oracle數據庫的傳統的應用領域,也有許多成功的范例。數據倉庫應用一般體現為操作比較復雜,涉及到的數據量比較大,但並發工作的程度不太多,對速度的要求也不太強烈,這類應用除了要求數據庫系統有較強的數據管理手段,如:完整性控制、安全性控制、 可靠性保障等之外,還特別要求數據庫系統能支持大數據量,支持有效的語句優化,強有力的統計功能以及較強的批處理能力等,在分布式環境的應用中,還要求數據庫能支持較強的穿透查詢(透明查詢)等。Oracle對數據庫對於數據完整性控制、安全性、可靠性等,均有較完善的技術。分布式透明查詢,表和索引的分區也是Oracle的長處,針對決策支持系統,Oracle還有許多相適應的機制,保證決策支持系統的成功及效率。

Oracle能支持大型及超大型數據庫系統,在應用實例中,Oracle支持的最大數據庫為幾十個TB。從技術的角度上著,Oracle所支持的數據庫最大容量的限制為512PB(1PB=1024TB),所以實際上只取決於硬盤空間。

當數據庫需要擴充時,Oracle只需要一條命令就可擴充數據庫,而不需要引起整個數據庫的重構。另外,Oracle還提供了豐富的數據分區技術,使對大量歷史數據的管理更加方便,處理更有效率。對於超大規模數 據量的支持,以及有效的數據分區手段,為決策支持應用系統奠定了堅實的基 礎。

決策支持系統一般會涉及到許多不同要求的統計以及科學計算等,Oracle提供的SQL語句,在滿足了SQL評議的標准要求之外,還有豐富的函數及計算功能,如單值函數(數字型、字符型等等)、強有力的集合運算、日期函數 ,Cube和Rollup, Rank (Top-N ), Rate, Sample(取樣)等等,這些函數的靈活運用,不僅能大大簡化應用程序的編程,並且可以直接在Oracle的內存緩沖區直接計算,減少了大量數據在數據庫及應用程序之間的交換,加快運行的效率。

另外,Oracle還有靈活的查詢優化機制,確保查詢操作的快速完成。對涉及到較大的數據量,可能需要較長時間來處理的查詢語句,Oracle能自動將其分解成幾個部分,利用Oracle核心的多線索多進程結構,進行多線索的並行處理。同時,對於大數據量的I/O操作,Oracle也能充分利用並行的I/O處理,把較浪費時間的I/O,操作利用並行的方式降低系統等待的時間。Oracle已申請專利的位圖索引,星型並行查詢技術尤其適用於數據倉庫的查詢。

Oracle還具有支持極強的批處理能力,如數據庫核心中的SQL*Loader,提高了數據庫批量加截的速度,SQL*Plus也具有極強的處理能力,能以批處理方式進行數據訪問,及數據更新。

Sybase支持大型及超大型數據庫的能力很差,完整性約束依靠事後觸發回退、復制服務器、多功能通用網關以及用戶編程一起協調實現;分布式處理條件下的查詢和修改均不是以自動透明方式進行,復制無法利用兩階段提交技術,只能采用異步方式;查詢 優化單一,語句的分解優化過重依賴於用戶來提高性能;並行處理能力以及批處理能力都很弱。從這些數據倉庫應用的關鍵技術來說,可以說Sybase ASE的數據倉庫支持能力是非常差的。

所以Sybase購買了一個產品來彌補這方面的缺陷,並改名為Sybase IQ. 但這個產品與Sybase ASE並不兼容,不能象訪問ASE一樣通過T-SQL訪問。它通過建立基於位的索引加快查詢。但它只能用於查詢,而且當數據量超過GB級以後性能會有明顯的下降。並發訪問的用戶很有限,因為每個連接都會消耗大量內存。所以Sybase IQ的可伸縮性較差,不適用於大規模的數據倉庫。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved