文章詳情頁
從各個方面產(chǎn)品對比SYBASE & ORACLE
瀏覽:158日期:2023-11-07 15:54:03
數(shù)據(jù)庫市場份額比較 Sybase公司成立于1986年,立足于在開放系統(tǒng)平臺上研制具有Client/Server體系結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng)軟件產(chǎn)品。 當時的Sybase公司由于有效地汲取了其它RDBMS設(shè)計過程中的先進技術(shù)和概念,以滿足聯(lián)機事務(wù)處理(OLTP)應(yīng)用的高性能要求為目標,同時加強聯(lián)網(wǎng)對異構(gòu)數(shù)據(jù)源的開放互聯(lián),使Sybase取得了很大成功,非凡是Sybase有效的拓展市場行動,使Sybase曾一度成為世界數(shù)據(jù)庫市場增長最快的產(chǎn)品。然而,由于產(chǎn)品本身的技術(shù)問題,不能提供對大型多處理器系統(tǒng)的支持,使得Sybase的市場份額急劇下降,并出現(xiàn)連續(xù)的虧損。1997年虧損額為5540萬美元,1998年僅第一季度就虧損了8120萬美元。1999年初,Sybase裁員又600人,將近其全體員工的10%。2001年第一季度沒有虧損,但令人擔(dān)心的是比2000年同期許可證(license)收入下降了10.7%。 早在1997年,聞名的市場分析公司Gartner Group就已將Sybase從”Big 5” DBMS市場領(lǐng)先者的名單中刪除。根據(jù)Gartner/Dataquest近期發(fā)布的2001年度數(shù)據(jù)庫市場份額統(tǒng)計報告, 在Gartner/Dataquest報告中Oracle依然在主流操作系統(tǒng)Unix和Linux, Windows NT/2000/XP上的關(guān)系數(shù)據(jù)庫市場上占據(jù)絕對的領(lǐng)先地位,在UNIX上占63%, Windows+Unix上占49.9%。在關(guān)系型數(shù)據(jù)庫市場(包括AS/400,Mainframe),Oracle以39.8%仍然處于領(lǐng)先地位。根據(jù)最新的FactPoint的調(diào)查,Oracle數(shù)據(jù)庫依然是Fortune 100公司的首選數(shù)據(jù)庫,其中51%的Fortune 100公司選用Oracle Database作為構(gòu)建企業(yè)的傳統(tǒng)應(yīng)用和電子商務(wù)平臺。FactPoint Group報告的調(diào)查結(jié)果:1、 Oracle仍然是Fortune 100公司的首選數(shù)據(jù)庫平臺,Oracle的數(shù)據(jù)庫市場份額遠遠超過其它競爭對手,其市場份額是第二名的2.5倍。2、 51%的Fortune 100公司選用Oracle數(shù)據(jù)庫來構(gòu)建企業(yè)的傳統(tǒng)應(yīng)用和電子商務(wù)應(yīng)用平臺。3、 Fortune 100所選用的主流應(yīng)用軟件絕大多數(shù)選用Oracle數(shù)據(jù)庫平臺,其中:100%的Oracle 應(yīng)用產(chǎn)品;76%的SAP; 72%的PeopleSoft; 81%的Siebel; 73%的i2都選用Oracle數(shù)據(jù)庫平臺。4、 Oracle數(shù)據(jù)庫產(chǎn)品滲透到Furtune100公司的各個業(yè)務(wù)領(lǐng)域, 其中75%的財務(wù)應(yīng)用, 72%的人力資源應(yīng)用, 68%的客戶關(guān)系治理應(yīng)用和72%的供給鏈治理應(yīng)用都采用Oracle數(shù)據(jù)庫平臺。5、 Oracle數(shù)據(jù)庫被Furtune100的客戶評選為技術(shù)最好和與主流應(yīng)用軟件集成最好的數(shù)據(jù)庫平臺。FactPoint Group調(diào)查涉及了與Fortune100公司的IT經(jīng)理們的400次會談,其調(diào)查結(jié)果根據(jù)Fortune 100公司的數(shù)據(jù)庫產(chǎn)品的使用狀況,真實體現(xiàn)了當今企業(yè)中數(shù)據(jù)庫部署與使用的狀況,根據(jù)FactPoint Group的調(diào)查Oracle數(shù)據(jù)庫技壓群雄,仍然保持了企業(yè)數(shù)據(jù)庫市場份額的領(lǐng)頭羊地位。ORACLE 與 SYBASE 技術(shù)先進性的比較Oracle數(shù)據(jù)庫與Sybase數(shù)據(jù)庫相比,無論從體系架構(gòu)、并行支持、完整性控制等各方面均有很大的優(yōu)勢。1、體系結(jié)構(gòu)的比較Oracle采用多線索多進程體系結(jié)構(gòu),直接在內(nèi)核中支持分布式數(shù)據(jù)庫操作、多線索處理、并行處理以及聯(lián)機事務(wù)處理等 。Oracle企業(yè)級服務(wù)器從結(jié)構(gòu)上說,同時支持集中式多用戶環(huán)境、Client/Server、分布式處理和Internet計算結(jié)構(gòu);從技術(shù)上說,為應(yīng)用程序及系統(tǒng)開發(fā)人員實現(xiàn)了透明的網(wǎng)絡(luò)環(huán)境、混合網(wǎng)絡(luò)結(jié)構(gòu)以及分布式數(shù)據(jù)治理等Sybase采用單進程多線索體系結(jié)構(gòu),其核心是SQL Server(現(xiàn)在為與Microsoft SQL Server區(qū)別,改名為Adaptive Server Enterprise),在Client/ Server體系結(jié)構(gòu)的基礎(chǔ)上,架構(gòu)了復(fù)制服務(wù)器(Replication Server)和多功能通用網(wǎng)關(guān)(Omni SQL Gateway,現(xiàn)在叫Enterprise CONNECT)等部件,從而形成了軟件產(chǎn)品系列。2、多線索多進程與單進程多線索的比較Oracle和Sybase都采用多線索。采用多線索的模式,能用較少的線索治理大量的用戶進程;并且,線索進程是動態(tài)可調(diào)整的,當用戶數(shù)增加時, 線索進程也會階段性地自動增加;當用戶數(shù)減少時,線索進程也會自動減少。多線 索結(jié)構(gòu),大大降低了Oracle和Sybase對系統(tǒng)資源的占用,提高了系統(tǒng)資源的利用率。對于Oracle的體系結(jié)構(gòu),在集中式多用戶環(huán)境下,每個用戶單獨占用一個服務(wù)器進程;在Client/Server 和Internet方式下可以采用多個用戶共享進程,以多線索方式執(zhí)行用戶的請求。另外,針對非凡級別的用戶,可以單獨占用一個 服務(wù)器進程,實現(xiàn)最優(yōu)級別的用戶請求。Oracle的服務(wù)器進程是用來同時處理 數(shù)據(jù)庫請求的,它們從請求隊列中拿出申請,進行語法分析、權(quán)限檢查以及一系列的內(nèi)部操作,并協(xié)調(diào)Oracle其他后臺進程,以共同完成申請的處理,并把操 作結(jié)果返回到回答隊列。Oracle多服務(wù)器進程結(jié)構(gòu),能實現(xiàn)數(shù)據(jù)庫事務(wù)的并行 處理,提高并發(fā)事務(wù)處理的響應(yīng)速度。并且多服務(wù)器結(jié)構(gòu)具有非常靈活的擴充 性,當硬件平臺處理能力提高時,服務(wù)器進程的個數(shù)也能隨之增加,數(shù)據(jù)庫性 能也隨之提高。多服務(wù)器結(jié)構(gòu),避免了單服務(wù)器結(jié)構(gòu)中很輕易造成的服務(wù)器進 程瓶頸現(xiàn)象,也避免了因此而引起的單服務(wù)器進程死鎖的現(xiàn)象。Sybase采用單進程多線索方式,用戶請求都由一個進程來進 行總的調(diào)度和治理。在單服務(wù)器并采用單一的Client/Server模式下其對數(shù)據(jù)庫的治理比較簡單,內(nèi)存資源占用較少,在并發(fā)用戶數(shù)較少的情況下,其對系統(tǒng)資源的利用率比采用多進程方式要高;但同時,當并發(fā)用戶數(shù)達到一定的數(shù)量時,會引起系統(tǒng)處理性能大大下降,和服務(wù)器進程瓶頸及死鎖等現(xiàn)象;同時系統(tǒng)的可擴展余地非常狹窄。3、系統(tǒng)集成度Oracle服務(wù)器上的Oracle多線索多進程結(jié)構(gòu)以及并行查詢,分布式數(shù)據(jù)庫、高級復(fù)制等功能都是 直接在Oracle核心中實現(xiàn)的,無需添加額外的服務(wù)器,不要求額外的系統(tǒng)配置 ,也不會帶來額外的的系統(tǒng)治理負擔(dān),更不會產(chǎn)生由API帶來編程的變化。Sybase由實現(xiàn)不同功能的不同服務(wù)器組成(ASE, Replication Server, Enterprise Connect, IQ等) ,眾多的服務(wù)器要 求能協(xié)調(diào)一致地工作,同時又要滿足高可靠性和高可用性的要求。這不僅對硬件設(shè)備提出了很高的要求,對系統(tǒng)治理來講也提出了極高的要求。Sybase對用戶是不透明的,許多操作需要編程人員來治理和操縱,而且后來引入的應(yīng)用程 序接口(API) CT- Lib與以前版本(DB-Lib)不兼容,大大加重了編程人員的負擔(dān),延長了開發(fā)周期。4、聯(lián)機事務(wù)處理聯(lián)機事務(wù)處理是比較非凡的一類應(yīng)用,一般體現(xiàn)為同時工作的用戶數(shù)較 多,對數(shù)據(jù)的操作申請比較簡單,但要求比較快的響應(yīng)時間。針對這類應(yīng)用, 計算機系統(tǒng)必須提供一個能支持大量同時工作的用戶,并提供比較大的系統(tǒng)吞吐量來消化用戶的大量申請。具體來說,就是要有較好的用戶治理手段、有效的內(nèi)存緩沖區(qū)治理、優(yōu)化的I/0進程控制、有效的系統(tǒng)封鎖處理、快速的網(wǎng)絡(luò)治理功能等等。因此,為了在聯(lián)機事務(wù)處理應(yīng)用中達到較好的性能,應(yīng)以適用于聯(lián)機事務(wù)處理的硬件平臺、操作系統(tǒng)、網(wǎng)絡(luò)環(huán)境為基礎(chǔ),配合數(shù)據(jù)庫處理,才能實現(xiàn)理想的聯(lián)機事務(wù)處理。Oracle的多線索技術(shù)在相同硬件環(huán)境下,所支持的用戶數(shù)是其他數(shù)據(jù)庫 系統(tǒng)的5至10倍。Oracle的多進程技術(shù)從根本上加快每一個用戶申請的處理速度,非凡是在大量申請需要處理的情況下,它能保持內(nèi)存中請求隊列在大部分時間處于隊列空的狀態(tài)。更為靈活的是,Oracle多進程的數(shù)量是動態(tài)可調(diào)整的,使用相應(yīng)的系統(tǒng)參數(shù),可以控制服務(wù)器進程個數(shù)、當應(yīng)用環(huán)境、工作量、硬件環(huán)境等發(fā)生變化時,可以構(gòu)造不同的Oracle服務(wù)器進程,使用戶的申請在任何時候都能保持較快的處理效率。數(shù)據(jù)庫共享緩存治理,是影響聯(lián)機事務(wù)處理性能的一個要害因素,能充分且有效地利用高速緩存,就能大大減少許多重復(fù)操作,大大減少不必要的I/O,從而提高語句的執(zhí)行速度。Oracle有一套十分有效的內(nèi)存高速緩存治理的技術(shù),編譯后的SQL語句共享緩沖區(qū)、預(yù)讀入技術(shù)、日志記錄緩存等。 在多用戶并發(fā)工作的情況下,寫/寫沖突及讀/寫沖突是主要的影響實時操作效果的因素,是聯(lián)機事務(wù)需要解決的主要問題。Oracle采用行級封鎖來解決寫/寫沖突,當用戶要對一張表進行修改或更新操作時,會自動鎖定要修改的記錄“行”,而不是整張表。當其他用戶同時也要修改同一張表時,也鎖定各自需要修改的記錄“行”,只有在兩個或多個用戶需要修改同一記錄行時,才會出現(xiàn)排隊等待鎖資源釋放的現(xiàn)象。這種行級封鎖大大降低了沖突的機率,與頁級鎖或表級鎖相比,大大提高了系統(tǒng)的吞吐量。Oracle采用讀一致快照技術(shù)來解決讀/寫沖突,而不是采用傳統(tǒng)的讀鎖方式。當一用戶對某一記錄進行修改時,系統(tǒng)會自動生成一個該記錄的拷貝, 稱為讀一致性快照。而另一用戶同時要讀取這一記錄行時,讀操作將讀取讀一致快照的內(nèi)容,而不用加讀鎖。因此讀操作將不被寫操作所阻塞;同樣,寫操作也同樣不會被讀操作所阻塞。可見Oracle的行級封鎖及讀一致性快照技術(shù),使得在大量用戶并發(fā)工作的聯(lián)機事務(wù)處理環(huán)境下,用戶發(fā)生沖突而排隊等候的現(xiàn)象減少到了最低,大大提高了系統(tǒng)的吞吐量,提高實時響應(yīng)的速度。另外,Oracle還有靈活的查詢優(yōu)化機制,確保查詢操作的快速完成, 如基于成本的智能優(yōu)化、哈希方法、分布式查詢優(yōu)化等,都能以不同的使用方法,為不同層次的用戶自動提供最佳的優(yōu)化方案, 而無需用戶編程指明。為了能提高事務(wù)的吞吐量和低的響應(yīng)時間,Sybase主要采用了支持存儲過程(Stored Procedure)、Log成組提交以及基于成本的優(yōu)化等技術(shù)。其設(shè)計思想分別和Oracle中數(shù)據(jù)庫共享緩存治理以及查詢優(yōu)化機制相似,從功能處理上沒有Oracle的全面和有效。長期以來,Sybase采用頁級封鎖機制來解決寫/寫沖突,使用戶的并發(fā)事務(wù)受到很大限制,集中體現(xiàn)在用戶的并發(fā)事務(wù)達到一定數(shù)量時,系統(tǒng)實現(xiàn)上輕易陷入癱瘓的狀態(tài)。在ASE的新版本中才引入行級鎖,然而,Sybase的行級鎖并不徹底,它采用可升級的行級鎖,可升級的行級鎖隨著系統(tǒng)活動級別的增加,為治理內(nèi)存的使用,會升級原有鎖的級別——當系統(tǒng)并發(fā)訪問較多時,會引起行級鎖升級為頁級鎖。所以系統(tǒng)對大量并發(fā)的控制并沒有實質(zhì)的改善。例如,用戶A在修改某個客戶信息,將可能影響用戶B修改其它客戶信息。不必要的資源競爭 ,較低的系統(tǒng)并發(fā)性,對要害業(yè)務(wù)的OLTP系統(tǒng)是無法忍受的。由于缺少讀一致性的多版本模式,Sybase不能提供一致性和并發(fā)性兼得的解決方案。為了使讀操作不阻塞寫操作,Sybase使用臟讀(Dirty Read)技術(shù)。雖然提高了性能和并發(fā)性,但帶來了讀到的數(shù)據(jù)可能與數(shù)據(jù)庫中的數(shù)據(jù)不一致的結(jié)果。另一方面,假如要保證讀一致性,Sybase采用加讀鎖技術(shù),而用戶A的讀鎖不能與用戶B的寫鎖同時加在同一個數(shù)據(jù)塊上,因此,用戶A必須等待,直到用戶B的事務(wù)處理結(jié)束,釋放寫鎖后,才能繼續(xù)進行讀操作。或者用戶B必須等待用戶A讀操作完成后才能進行寫操作。讀和寫操作互相阻塞,大大增加了死鎖的可能。5、硬件平臺及操作系統(tǒng)的適用性O(shè)racle能支持幾乎所有常見的硬件平臺及操作系統(tǒng),這種支持不是簡單 的內(nèi)核移植,而是針對不同的硬件平臺及操作系統(tǒng),充分利用不同硬件平臺以及操作系統(tǒng)的優(yōu)勢,并在數(shù)據(jù)處理方面加以發(fā)揮。根據(jù)近年來美國TPC組織提供的測試報告,Oracle在目前國際上流行的絕大多數(shù)硬件平臺上均獲得了最高的TPC-C測試值。其中最新的測試值為824,164 tpmC。這些創(chuàng)記錄的結(jié)果,在數(shù)據(jù)庫市場中尚無其他數(shù)據(jù)庫產(chǎn)品能望其項背。另據(jù)美國聞名的<>對幾家主要數(shù)據(jù)庫廠家的測試結(jié)果,Oracle在數(shù)據(jù)庫的數(shù)據(jù)裝載、數(shù)據(jù)查詢、數(shù)據(jù)庫讀/寫操作等方面,都獲得絕對優(yōu)勢,并連續(xù)幾年占據(jù)評選的第一名?,F(xiàn)在絕大多數(shù)硬件公司都以O(shè)racle為數(shù)據(jù)庫基礎(chǔ)平臺進行測試,也說明Oracle的確讓不同的硬件平臺發(fā)揮出其最佳的效能。Sybase支撐的硬件平臺及操作系統(tǒng)則比較有限,缺乏對MPP系統(tǒng)的支持。其最高的TPC-C測試值僅為60,366tpmC.6、并行處理Oracle的體系結(jié)構(gòu)不僅能大大加快系統(tǒng)的處理速度,增大系統(tǒng)的吞吐量 ,還能充分利用計算機硬件資源。以對稱多處理SMP結(jié)構(gòu)中,Oracle的多服務(wù)器進程能均衡地分散在多個CPU上,使SMP中的多個CPU同時處理請求隊列中的用戶請求,從而達到利用所有CPU同時工作,并且均分負載的目的。Oracle的并行查詢功能將SQL的查詢語句,索引建立語句,數(shù)據(jù)加載,備份/恢復(fù)以及用戶程序進行分解,分配給多個CPU同時工作以實現(xiàn)語句級的并行處理,并且均分負載的,以上的并行處理過程,對用戶來說是透明的,完全集成在數(shù)據(jù)庫內(nèi)核中完成;支持應(yīng)用程序及數(shù)據(jù)庫的性能縮放,即CPU個數(shù)增加時,數(shù)據(jù)庫的處理速度和應(yīng)用程序的執(zhí)行速度能隨之增加,反之亦然,均不需要修改程序或重構(gòu)數(shù)據(jù)庫系統(tǒng)。通過數(shù)據(jù)分區(qū)技術(shù),Oracle還可以支持并行的DML操作(插入、刪除、修改)。在松散藕合型的Cluster及海量并行處理結(jié)構(gòu)中,Oracle并行服務(wù)器(Real Application Cluster,以前稱為OPS)能充分發(fā)揮松散藕合型計算機結(jié)構(gòu)的特點。Oracle公司在1989年率先推出Parallel Server選件,以支持這種體系結(jié)構(gòu)(Oracle6.2版)。隨著Cluster技術(shù)自身的成熟,以及Oracle對這一技術(shù)的經(jīng)驗,Oracle Parallel Server目前已能支持幾乎所有的Cluster群機系統(tǒng)。在share-nothing或shared-disk模式的群機系統(tǒng)上,Oracle Parallel Server均可以實現(xiàn)多節(jié)點共享數(shù)據(jù)庫,并自動并行處理及均分負載,在數(shù)據(jù)庫故障時進行容錯和無斷點恢復(fù)處理。Oracle并行服務(wù)器利用共享磁盤的技術(shù),數(shù)據(jù)庫駐留在共享磁盤中,松散耦合中的所有計算機均能同時對同一份數(shù)據(jù)庫映像進行存儲。另外,Oracle與松散耦合型計算機結(jié)構(gòu)相結(jié)合,還能大大提高系統(tǒng)的可靠性及容錯能力,當某一臺計算機出現(xiàn)故障時,由于數(shù)據(jù)庫是同一份共享的映像,所以不需要系統(tǒng)的重新恢復(fù),從而繼續(xù)整個系統(tǒng)的運行,達到不間斷運行的效果。Oracle9i最新的并行服務(wù)器技術(shù) Real Application Clusters設(shè)計了快捷高效的共享集群高速緩存,從而提供了透明的應(yīng)用程序可擴展性。Real Application Clusters是五年多研發(fā)工作的結(jié)晶,其中包含了13項獨家專利和18項已申報的專利請求。Real Application Clusters獨特之處在于:a)“開箱即用”,提供接近線性的可伸縮性b)與應(yīng)用程序的良好兼容性,無需重新設(shè)計c)快速增長的集群,可快速增添節(jié)點和磁盤Oracle Real Application Cluster能支持的節(jié)點數(shù)目受操作系統(tǒng)的約束,一般最大可以達256個。為了能充分發(fā)揮對稱多處理機SMP中多CPU硬件平臺的高性能,Sybase采用了虛擬服務(wù)器體系結(jié)構(gòu)(VSA),用單一的進程來模擬多進程處理,當多個CPU同分片的進程處于協(xié)調(diào)一致時,可以利用多個CPU的高性能;但同時,假如不處于協(xié)調(diào)一致時,也會成為服務(wù)器進程瓶頸。Sybase不能支持Cluster系統(tǒng)的可伸縮性。Sybase Adaptive Server Enterprise只能提供在Cluster系統(tǒng)上的切換功能,提高系統(tǒng)的可用性。Sybase最近公布它的Companion Server Option可以支持Cluster系統(tǒng)的并行處理。但事實是怎樣的呢?Companion Server Option只能支持2個節(jié)點的Cluster系統(tǒng), 包含一個Primary Database節(jié)點和一個Proxy Database節(jié)點。雖然用戶可以通過Proxy Database節(jié)點訪問數(shù)據(jù)庫,但Proxy Database上只有數(shù)據(jù)字典是直接訪問的,其對數(shù)據(jù)的訪問是通過對Primary Database的遠過程調(diào)用實現(xiàn),所以最終仍然都需經(jīng)過主數(shù)據(jù)庫(Primary Database)節(jié)點。Primary Database的負載并沒有減輕。所以這種配置不能真正提高系統(tǒng)的可伸縮性。7、數(shù)據(jù)分區(qū)技術(shù)Oracle從Oracle8開始引入 了數(shù)據(jù)分區(qū)(Partitioning),這項技術(shù)對大規(guī)模數(shù)據(jù)庫(VLDB), 并行處理和數(shù)據(jù)倉庫都有重大的意義。Oracle數(shù)據(jù)分區(qū)選件將大表和索引分成可以治理的小塊,從而避免了對每個大表只能作為一個單獨的對象進行治理。分區(qū)(partitioning)是一種“分而置之”的技術(shù),它為大量數(shù)據(jù)提供了可伸縮的性能。分區(qū)通過將操作分配給更小的存儲單元,減少了需要進行治理操作的時間,并通過增強的并行處理提高了性能,通過包含故障的影響還增加了可用性。它支持靈活的按不同要害字進行分區(qū)的能力。分區(qū)使治理員更輕易治理大數(shù)據(jù)量的表。治理員可以指定每個分區(qū)的存儲屬性,分區(qū)在宿主文件系統(tǒng)中的放置情況,這樣便增加了對超大型數(shù)據(jù)庫的控制粒度。分區(qū)可以被單獨地卸出或裝入,備份,恢復(fù),導(dǎo)出和導(dǎo)入,以及加載;因此減少了需要進行治理操作的時間??梢詫Ψ謪^(qū)實施靈活的增刪改等治理工作。對表分區(qū)還可以創(chuàng)建單獨的索引分區(qū),從而限制了需要進行索引維護操作的時間。此外,還提供了種類繁多的局部和全局的索引技術(shù)。分區(qū)技術(shù)還提高了數(shù)據(jù)的可用性。當部分數(shù)據(jù)由于故障或其它原因不可用時,其它分區(qū)內(nèi)的數(shù)據(jù)可用不收影響繼續(xù)使用。分區(qū)對應(yīng)用是透明的,可以通過標準的SQL語句對分區(qū)表進行操作。Oracle 的優(yōu)化器在訪問數(shù)據(jù)時會分析數(shù)據(jù)的分區(qū)情況,在進行查詢時,那些不包含任何查詢數(shù)據(jù)的分區(qū)將被忽略,從而大大提高系統(tǒng)的性能。有了分區(qū)以后可以將對數(shù)據(jù)表的操作,例如DML操作,在多個分區(qū)上實現(xiàn)并行,且分區(qū)間的并行可做到均衡負載,從而提高系統(tǒng)的性能。Oracle支持的分區(qū)包括:a) Range Partitioning—對指定要害字按取值范圍分區(qū),Oracle自動將記錄插入相應(yīng)的分區(qū)。b) Hash Partitioning—基于Hash算法,使用者只需要指定用作Hash 分區(qū)的要害字和分區(qū)數(shù)量,Oracle 把每條記錄均勻插入各個分區(qū)。c) Composite Partitioning—是Range Partitioning和Hash Partitioning的組合,使用者可以指定先按某個要害字做Range Partitioning,然后再按另外一些要害字做Hash Partitioning。從而提供更好的并行處理能力。d) List Partitioning—當指定要害字的取值可以列表時,可以使用這種分區(qū)。Oracle自動將記錄插入相應(yīng)的分區(qū)。Sybase也宣稱有數(shù)據(jù)分區(qū)的功能。但Sybase的分區(qū)與Oracle, IBM, Informix等數(shù)據(jù)庫的分區(qū)定義有本質(zhì)的不同。實際上,Sybase的分區(qū)稱為頁鏈更為合適。在Sybase中,表的存儲是以頁為單位的,頁間以指針連接構(gòu)成頁鏈。而將一個表分區(qū)實際就是為一個表建多個頁鏈。在Oracle中早就實現(xiàn)了這種技術(shù)(一個表建多個Free List)。這種“分區(qū)”雖然可以提高查詢的并行度,但它沒有常規(guī)意義上的分區(qū)所帶來的易于治理和隔離故障的好處。在并行方面,它也不能象Hash分區(qū)那樣使數(shù)據(jù)均勻地分布,所以I/O在各個數(shù)據(jù)庫設(shè)備不能均勻地分布,并行操作仍然存在瓶頸。Sybase的所謂“分區(qū)”并不是數(shù)據(jù)庫行業(yè)里公認的分區(qū),既不能按鍵值范圍分區(qū),也不能通過Hash函數(shù)分區(qū),只是為表的插入增加多個插入點,彌補其頁級鎖在OLTP環(huán)境下難以支持大量并發(fā)操作的缺陷。8、數(shù)據(jù)庫高可靠性O(shè)racle有一套較完整的容錯機制來保證系統(tǒng)的可靠性,它支持聯(lián)機備份與恢復(fù)。Oracle聯(lián)機方式的備份,是由一個獨立的后臺進程完成的,由于該后臺進程與負責(zé)數(shù)據(jù)庫日常工作的其它進程處于并行工作方式因此,聯(lián)機備 份能保證在做備份時,不影響前臺交易進行的速度,并且該后臺進程能保證對 整個數(shù)據(jù)庫做出完整的備份。Oracle的聯(lián)機恢復(fù)方式,是以不影響其他用戶的交易為前提的。當局部發(fā)生故障時,進行局部修復(fù),不影響同一數(shù)據(jù)庫中其 他用戶的交易,更不影響網(wǎng)絡(luò)中其他節(jié)點的日常工作。另外,Oracle的恢復(fù)功能,還能將整個數(shù)據(jù)庫恢復(fù)到某一時間,還原數(shù)據(jù)庫的某一歷史狀態(tài)。Oracle Real Application Cluster使系統(tǒng)的可靠性有更顯著的提高。由于是共享磁盤的結(jié)構(gòu),除非Cluster中所有節(jié)點都停機,才會使系統(tǒng)不能被訪問。當任一個節(jié)點發(fā)生故障時,RAC的其它各個節(jié)點都已隨時預(yù)備好接管它的連接用戶,而無需重新啟動進程。Oracle 還提供了透明的應(yīng)用切換,使客戶端應(yīng)用可以被迅速切換到有效節(jié)點上,而無需重新連接數(shù)據(jù)庫。Sybase沒有獨立的后臺進程可供單獨工作,所以,在Adaptive Server Enterprise中內(nèi)構(gòu) 了一個備份服務(wù)器(Backup Server)以實現(xiàn)數(shù)據(jù)庫的聯(lián)機備份,但由于與其他用戶 共享進程,在一定程度是影響了其他用戶的工作效率,而且還不能確保得到完整的數(shù)據(jù)備份。此外,由于Sybase缺乏對數(shù)據(jù)庫的一致性作持續(xù)檢查的機制,有可能造成實際上已分配給某表的存儲空間仍然被標示為“未使用空間”,一旦被重復(fù)分配,就會造成數(shù)據(jù)庫損壞(corruption)。按照Sybase的用戶服務(wù)合同,在進行備份保存之前,為了檢測數(shù)據(jù)庫一致性問題需要運行DBCC。在DBCC操作過程中,數(shù)據(jù)庫必須保持脫機狀態(tài)。DBCC必須經(jīng)常地運行,以保證數(shù)據(jù)庫的一致性。尤其備份之前一定要運行。但DBCC需要脫機運行,數(shù)據(jù)庫需處在單用戶方式下,而且運行很慢。這給一些需要高可用性(24x7)或?qū)嵤¬LDB(大規(guī)模數(shù)據(jù)庫)的用戶帶來了嚴重的影響。除了聯(lián)機備份/恢復(fù)的手段外,Oracle和Sybase還有一定的容錯能力,實現(xiàn)基于軟件的數(shù)據(jù)庫鏡像及日志文件的鏡像功能,不依靠于計算機硬件平臺,即使在硬件平臺不提供容錯功能的時候,也能為數(shù)據(jù)庫實現(xiàn)容錯的保護。9、分布式處理技術(shù)分布式環(huán)境下的各節(jié)點必須具有很好的自治能力,以防止某一個點或服務(wù)器故障而影響其它服務(wù)器正常工作。Oracle和Sybase都具有這種自治能力。Oracle分布式數(shù)據(jù)庫從Client/Server出發(fā),經(jīng)過內(nèi)核的重新改造,技術(shù) 上又邁進一大步,成功地支持超越 Client/Server的大規(guī)模分布式處理。Oracle分布式數(shù)據(jù)庫不僅支持Client/Server的通訊模式,還有極具特色的服務(wù)器與服務(wù)器間的透明通訊。這種服務(wù)器自動通訊的方式,使得物理上存放在多個計算機上的數(shù)據(jù),對應(yīng)用程序及開發(fā)人員來說,就如同所有的數(shù)據(jù)僅存放在一臺服務(wù)器上一樣,這就是所謂的“一個邏輯數(shù)據(jù) 庫整體”的含義。Oracle具有極強的分布式處理能力。如透明的分布式查詢、透明的分布式修改和分布式數(shù)據(jù)復(fù)制。透明的分布式查詢由數(shù)據(jù)庫同義詞及數(shù)據(jù)庫鏈路(Database Link) 支持,能實現(xiàn)數(shù)據(jù)庫的自動尋址,用戶勿需關(guān)心數(shù)據(jù)的物理存放位置。透明的分布式更新是通過自動的兩階段提交技術(shù)實現(xiàn)的。Oracle自動協(xié)調(diào)各服務(wù)器事務(wù),操作要么一起成功,要么一起失敗,以保護分布式環(huán)境下的數(shù)據(jù)在任一時刻都于一致的狀態(tài)。分布式數(shù)據(jù)復(fù)制技術(shù)有實時復(fù)制(Real-time Replication)、存儲轉(zhuǎn)發(fā)復(fù)制(Stored-and-forward Replication)、以及基于時間的復(fù)制(Time-based Replication)等三種方式。如實時復(fù)制,根據(jù)應(yīng)用實際需要,在本地服務(wù)器上生成一個數(shù)據(jù)庫觸發(fā)器(Database trigger),一旦本地數(shù)據(jù)庫有數(shù)據(jù)操作,立即將所需復(fù)制數(shù)據(jù)一次復(fù)制到多個分布式節(jié)點上,而且是與本地操作同步執(zhí)行。存儲轉(zhuǎn)發(fā)復(fù)制,由Oracle提供的復(fù)制日志實現(xiàn),即把所有需要復(fù)制的數(shù)據(jù)記錄在日志中,若日志記錄中的數(shù)據(jù)量達到一定的程度時,Oracle自動將日志記錄復(fù)制到各目的地上?;跁r間的復(fù)制,由Oracle數(shù)據(jù)庫參數(shù)實現(xiàn),由該參數(shù)決定數(shù)據(jù)刷新的時間或間隔,Oracle會自動按此間隔時間定期將遠地節(jié)點的相差數(shù)據(jù)傳適到本地快照表中,并且自動刷新,本地用戶可以利用此快照表數(shù)據(jù),并結(jié)合本地數(shù)據(jù)進行復(fù)雜的分布式查詢。以上三種方法復(fù)制的數(shù)據(jù),在使用方法上,均可做為本地數(shù)據(jù)來使用。 可對其進行查詢,修改等。對復(fù)制數(shù)據(jù)的修改,可以進一步廣播到其他復(fù)制版及原版上,這就是所謂的數(shù)據(jù)N-向復(fù)制。對于N-向復(fù)制,Oracle有一些自動實現(xiàn)的沖突檢測和解決技術(shù),保護N-向數(shù)據(jù)復(fù)制時的分布數(shù)據(jù)一致性。Oracle的兩階段提交加上復(fù)制技術(shù),為分布式環(huán)境下不同的應(yīng)用需求提供了靈活的選擇。例如,對于聯(lián)機事務(wù)處理的分布環(huán)境,可以選用兩階段提 交或?qū)崟r復(fù)制技術(shù),以保證分布式數(shù)據(jù)的實時的一致性。對于實時要求不太嚴格的環(huán)境,可以使用另外兩種復(fù)制技術(shù),甚至在同一種系統(tǒng)中某些數(shù)據(jù)操作可選用實時的方法,某些數(shù)據(jù)操作可以選用異步的方法。Oracle以完整而且靈活的分布式處理技術(shù),來滿足不同應(yīng)用環(huán)境的需要。除此這外,Oracle還有分布式環(huán)境下的自動查詢優(yōu)化,分布式死鎖檢測和自動解鎖、分布式環(huán)境下的數(shù)據(jù)庫治理、分布式數(shù)據(jù)庫全局命名機制等。 所有這些功能,均從更大范圍實現(xiàn)了數(shù)據(jù)庫的分布式處理。在Sybase中, Adaptive Server Enterprise是RDBMS的核心,主要是為Client/Server結(jié)構(gòu)設(shè)計的 ,為了適應(yīng)分布式數(shù)據(jù)庫系統(tǒng)環(huán)境,另外提供了復(fù)制服務(wù)(Replication Server)和 多功能通用網(wǎng)關(guān)(Enterprise Connect)。其中,復(fù)制服務(wù)器(Replication Server)從功能處理上同Oracle中的存儲轉(zhuǎn)發(fā)復(fù)制(Stored-and-forward Replication)類似,它提供分布式條件下的異步復(fù)制,它通過不斷地將主表上的更新傳遞到復(fù)制的備份上,當系統(tǒng)的局部出現(xiàn)故障時,不致影響整個系統(tǒng)。一旦網(wǎng)絡(luò)上故障排除,這種服務(wù)器將可以以同步方式恢復(fù)分布式數(shù)據(jù)庫。但復(fù)制服務(wù)器本身成為一個單故障點,假如它出了問題,整個系統(tǒng)的所有復(fù)制均無法進行。多功能通用網(wǎng)關(guān)(Enterprise Connect)解決地點的透明性和數(shù)據(jù)庫的透明性。這兩個產(chǎn)品并不集成在數(shù)據(jù)庫核心中,需額外的許可證費用。Sybase不具備自動的服務(wù)器與服務(wù)器之間自動協(xié)調(diào)和兩階段提交技術(shù) ,分布式條件下的查詢和更新必須由ASE和多功能通用網(wǎng)關(guān)以及復(fù)制服務(wù)器共同協(xié)調(diào)實現(xiàn)。所以,Sybase提供給用戶大量的編程庫,用戶可通過編程實現(xiàn)分布式處理。Sybase強調(diào)其靈活性,強調(diào)用戶能做任何事情,但這是與高集成性 的發(fā)展趁勢背道而馳的,用戶需要做大量的編程工作,這也是Sybase不足之處。10、數(shù)據(jù)完整性控制Oracle具有一套完整的數(shù)據(jù)庫完整性控制機制,這些控制也是直接嵌入Oracle核心中實現(xiàn)的。如:實體完整性約束、自動對表中字段的取值進行正確與否的判定、自動的引用完整性約束、可自動對多張表進行相互制約的控 制等。實體完整性以及引用完整性均為申明式的,就是說,只要簡單地建立或修改表的定義完整性規(guī)則,以后Oracle DBMS會自動實施這些約束。這樣把應(yīng)用開發(fā)和維護成本降到了最低(因為沒有代碼),也改善了應(yīng)用可靠性(由DBMS 來確保實施),并且降低實施開銷(Oracle優(yōu)化約束實施操作)。另外,Oracle還提供用PL/SQL書寫的存儲過程的觸發(fā)器,在多個層次上實施很復(fù)雜的商業(yè)規(guī)則。存儲過程及觸發(fā)器可以包含一條或多條SQL語句, 也可以包含多個PL/SQL程序塊,它們經(jīng)編譯后存儲在Oracle中。存儲過程 可以被其他Oracle工具調(diào)用,并支持遠程客戶的調(diào)用,這就是遠過程調(diào)用。觸發(fā)器則會在每次對數(shù)據(jù)進行插入、更新、刪除時,自動被觸發(fā)。Oracle觸發(fā)器有很強的功能,如每當一種特定部件的庫存下降超過一定界限時,一個觸發(fā)器可以自動生成一個新的定單,觸發(fā)器可用于維護導(dǎo)出數(shù)據(jù),執(zhí)行基于內(nèi)容的審計,以及執(zhí)行同步的表副本復(fù)制。觸發(fā)器可在觸發(fā)語句之前或之后執(zhí)行(或稱事前觸發(fā)及事后觸發(fā));既可以是由一條語句也可以是由每一行觸發(fā)執(zhí)行。Oracle強有力的觸發(fā)器嚴格遵從ANSI SQL中的標準定義。在Sybase中,由Adaptive Server集中實現(xiàn)數(shù)據(jù)完整性控制。支持申明 定義完整性約束。用Datatype、Default、Rule等來提供字段完整性及字段與表的關(guān)系,用觸發(fā)器實現(xiàn)參照完整性。Sybase中的數(shù)據(jù)完整性控制相對Oracle來說顯得非常有限。實體完整性提供的功能顯得非常不足,往往需要用戶在程序中加入很多有關(guān)實體完整性的控制代碼,執(zhí)行效率不高,系統(tǒng)可適應(yīng)性不好,如加或減一個實體約束往往需要修應(yīng)用程序。其觸發(fā)器實現(xiàn)的是事后回退方式,假如一個事務(wù)引進一連串的事務(wù)回退,勢必降低事務(wù)的處理能力。11、數(shù)據(jù)庫安全控制Oracle的安全控制機制,是由系統(tǒng)權(quán)限、數(shù)據(jù)權(quán)限、角色權(quán)限這三級體系結(jié)構(gòu)組成的。所謂系統(tǒng)權(quán)限,是指對數(shù)據(jù)庫系統(tǒng)及數(shù)據(jù)結(jié)構(gòu)的操作權(quán),例如 :創(chuàng)建/刪除數(shù)據(jù)鏈路、同義詞、審計、索引、存儲過程、觸發(fā)器等等。所謂數(shù)據(jù)權(quán)限,是指用戶對數(shù)據(jù)的操作權(quán),如查詢、更新、完整性約束、運行存儲過程等等。所謂角色權(quán)限,是把幾個相關(guān)的權(quán)限組織成角色,角色之間可以進一步組合而成為多層次的樹型結(jié)構(gòu),這是Oracle把現(xiàn)實世界中的行政治理方式融入RDBMS中。角色權(quán)限除了限制操作權(quán)、控制權(quán)外,還能限制執(zhí)行某些應(yīng)用程序的權(quán)限。這樣安全控制體系,使得整個系統(tǒng)的治理人員及程序開發(fā)人員能控制系統(tǒng)命令的運行、數(shù)據(jù)的操作以及應(yīng)用程度的執(zhí)行。這一安全體系已通過了美國計算機(NCSC)C2級標準的測試。實際上,對命令運行權(quán)及應(yīng)用執(zhí)行權(quán)的控制,已超出了C2級標準。在一些安全級別達到B1級標準的操作系統(tǒng)平臺上, Oracle還有以B1級標準建立的Oracle產(chǎn)品,B1級產(chǎn)品的主要特點是除了以對象名(表名、列名、索引等)為基礎(chǔ)來限制存取的離散型安全治理外,還有以數(shù)據(jù)安全程度為基礎(chǔ)來限制存取的強制型安全治理。Oracle還提供了虛擬私有數(shù)據(jù)庫(Virtual Private Database), 實現(xiàn)了行級加密。不同的用戶訪問同一張表將是不同的數(shù)據(jù)集,再也無需在應(yīng)用里作任何控制。另外,Oracle可按系統(tǒng)和用戶的要求,可對表及視圖進行各種審計,完成對數(shù)據(jù)庫系統(tǒng)的審計追蹤,如:什么用戶參與了哪些操作,操作的對象,操作數(shù)據(jù)的記錄及操作成功與否等。以此可以檢測異?;蚩梢捎脩舻牟僮鳎约拔词跈?quán)的訪問。除了保障數(shù)據(jù)庫一級的安全性外,Oracle公司還提供了安全的網(wǎng)絡(luò)服務(wù)。通過Oracle安全網(wǎng)絡(luò)服務(wù),在網(wǎng)絡(luò)上傳遞的SQL語句、查詢結(jié)果、存儲過程調(diào)用、數(shù)據(jù)復(fù)制、用戶口令等所有信息,都可以經(jīng)RC4或DES加密傳遞,使數(shù)據(jù)在傳送過程中,不被泄密。同時,Oracle公司的安全網(wǎng)絡(luò)服務(wù)還支持帶有序列號的校驗和算法(MD5),保證數(shù)據(jù)在傳送過程中不被非法修改;數(shù)據(jù)包不被重發(fā),漏發(fā)。Oracle的安全網(wǎng)絡(luò)服務(wù)是通過純軟件的方式實現(xiàn),具有成本低、硬件無關(guān)、協(xié)議無關(guān)的特點。Oracle公司是唯一一家提供安全網(wǎng)絡(luò)服務(wù)的數(shù)據(jù)庫公司。Sybase對數(shù)據(jù)庫的安全性控制是比較初級的。其主要特性有 :明確的登錄識別、加密的口令和口令的截止日期、命名的系統(tǒng)治理員以及系統(tǒng)是否登錄成功、用戶在數(shù)據(jù)庫中的活動等等。Sybase的安全控制定位于NCSC的C2級安全標準。12、數(shù)據(jù)倉庫的支持對數(shù)據(jù)倉庫的支持是Oracle數(shù)據(jù)庫的傳統(tǒng)的應(yīng)用領(lǐng)域,也有許多成功的范例。數(shù)據(jù)倉庫應(yīng)用一般體現(xiàn)為操作比較復(fù)雜,涉及到的數(shù)據(jù)量比較大,但并發(fā)工作的程度不太多,對速度的要求也不太強烈,這類應(yīng)用除了要求數(shù)據(jù)庫系統(tǒng)有較強的數(shù)據(jù)治理手段,如:完整性控制、安全性控制、 可靠性保障等之外,還非凡要求數(shù)據(jù)庫系統(tǒng)能支持大數(shù)據(jù)量,支持有效的語句優(yōu)化,強有力的統(tǒng)計功能以及較強的批處理能力等,在分布式環(huán)境的應(yīng)用中,還要求數(shù)據(jù)庫能支持較強的穿透查詢(透明查詢)等。Oracle對數(shù)據(jù)庫對于數(shù)據(jù)完整性控制、安全性、可靠性等,均有較完善的技術(shù)。分布式透明查詢,表和索引的分區(qū)也是Oracle的優(yōu)點,針對決策支持系統(tǒng),Oracle還有許多相適應(yīng)的機制,保證決策支持系統(tǒng)的成功及效率。Oracle能支持大型及超大型數(shù)據(jù)庫系統(tǒng),在應(yīng)用實例中,Oracle支持的最大數(shù)據(jù)庫為幾十個TB。從技術(shù)的角度上著,Oracle所支持的數(shù)據(jù)庫最大容量的限制為512PB(1PB=1024TB),所以實際上只取決于硬盤空間。當數(shù)據(jù)庫需要擴充時,Oracle只需要一條命令就可擴充數(shù)據(jù)庫,而不需要引起整個數(shù)據(jù)庫的重構(gòu)。另外,Oracle還提供了豐富的數(shù)據(jù)分區(qū)技術(shù),使對大量歷史數(shù)據(jù)的治理更加方便,處理更有效率。對于超大規(guī)模數(shù) 據(jù)量的支持,以及有效的數(shù)據(jù)分區(qū)手段,為決策支持應(yīng)用系統(tǒng)奠定了堅實的基 礎(chǔ)。決策支持系統(tǒng)一般會涉及到許多不同要求的統(tǒng)計以及科學(xué)計算等,Oracle提供的SQL語句,在滿足了SQL評議的標準要求之外,還有豐富的函數(shù)及計算功能,如單值函數(shù)(數(shù)字型、字符型等等)、強有力的集合運算、日期函數(shù) ,Cube和Rollup, Rank (Top-N ), Rate, Sample(取樣)等等,這些函數(shù)的靈活運用,不僅能大大簡化應(yīng)用程序的編程,并且可以直接在Oracle的內(nèi)存緩沖區(qū)直接計算,減少了大量數(shù)據(jù)在數(shù)據(jù)庫及應(yīng)用程序之間的交換,加快運行的效率。另外,Oracle還有靈活的查詢優(yōu)化機制,確保查詢操作的快速完成。對涉及到較大的數(shù)據(jù)量,可能需要較長時間來處理的查詢語句,Oracle能自動將其分解成幾個部分,利用Oracle核心的多線索多進程結(jié)構(gòu),進行多線索的并行處理。同時,對于大數(shù)據(jù)量的I/O操作,Oracle也能充分利用并行的I/O處理,把較浪費時間的I/O,操作利用并行的方式降低系統(tǒng)等待的時間。Oracle已申請專利的位圖索引,星型并行查詢技術(shù)尤其適用于數(shù)據(jù)倉庫的查詢。Oracle還具有支持極強的批處理能力,如數(shù)據(jù)庫核心中的SQL*Loader,提高了數(shù)據(jù)庫批量加截的速度,SQL*Plus也具有極強的處理能力,能以批處理方式進行數(shù)據(jù)訪問,及數(shù)據(jù)更新。Sybase支持大型及超大型數(shù)據(jù)庫的能力很差,完整性約束依靠事后觸發(fā)回退、復(fù)制服務(wù)器、多功能通用網(wǎng)關(guān)以及用戶編程一起協(xié)調(diào)實現(xiàn);分布式處理條件下的查詢和修改均不是以自動透明方式進行,復(fù)制無法利用兩階段提交技術(shù),只能采用異步方式;查詢 優(yōu)化單一,語句的分解優(yōu)化過重依靠于用戶來提高性能;并行處理能力以及批處理能力都很弱。從這些數(shù)據(jù)倉庫應(yīng)用的要害技術(shù)來說,可以說Sybase ASE的數(shù)據(jù)倉庫支持能力是非常差的。所以Sybase購買了一個產(chǎn)品來彌補這方面的缺陷,并改名為Sybase IQ. 但這個產(chǎn)品與Sybase ASE并不兼容,不能象訪問ASE一樣通過T-SQL訪問。它通過建立基于位的索引加快查詢。但它只能用于查詢,而且當數(shù)據(jù)量超過GB級以后性能會有明顯的下降。并發(fā)訪問的用戶很有限,因為每個連接都會消耗大量內(nèi)存。所以Sybase IQ的可伸縮性較差,不適用于大規(guī)模的數(shù)據(jù)倉庫。
標簽:
Oracle
數(shù)據(jù)庫
排行榜
