關系型數據庫管理系統
本書是講述SQL的它是一種關系型數據庫或者關系型數據庫管理系統(RDBMS)的語言自從Codd博士在世紀年代奠定關系型數據庫的理論基礎以來已經產生了相當多的關系型數據庫實現一些新的關系型數據庫實現也不斷出現
很多人將DB視為所有數據庫的鼻祖IBM的研究員Edgar Frank Codd博士在年的一份IBM的研究報告中發表他的論文Derivability Redundancy and Consistency of Relations Stored inLarge Data Banks時給這種數據庫理論定義了一個非常恰當的術語關系型關系型數據庫被其他兩種技術競爭一種是Honeywell Information Systems在年銷售的Multics RelationalData Store另一種是密歇根大學從年起作為實驗性設計的Micro DBMS(它開創了Codd博士兩年之後提出的規范化理論)Micro DBMS的最後一個產品已經於年退役這兩種技術演變成了年發布的Oracle V商業數據庫在通往RDBMS的道路上包含了很多其他公司的產品所樹立的裡程碑(當然偶爾也有墓碑)這些產品包括IBM PRTV()IBM SQL/DS()QBE()Informix()Sybase()Teradata()Ingres一個給其他很多成功的系統帶來靈感的開源項目例如PostgreSQL()Nonstop SQL()和MicrosoftSQL Server()等這些系統使用了原始SQL的不同方言SEQUELQUELInformixSQL等直到年人們才第一次試圖為SQL語言制定標准毫無疑問各個廠商關於SQL語言的戰爭仍在繼續
當前的RDBMS市場已經被幾個重量級的專有關系型數據庫瓜分Oracle(%)IBM(%)和Microsoft(%)更小的專有數據庫系統Teradata和Sybase每種不到%的市場份額其他數據庫廠商包括開源數據庫大約占有%的市場份額
對於大型企業來說選擇一個數據庫產品作為應用程序的基礎並不是一個簡單的任務這不僅僅是因為數據庫系統軟件需要花費好幾萬美元的許可證費用幾十萬美金的維護和技術支持費而且在於與其他軟件硬件和人力資源投資相比數據庫軟件的投資還是一個決定整個企業架構的關鍵要素盡管近年來從一個RDBMS遷移到另一個RDBMS變得更加容易但考慮選擇哪一種數據庫依然會給CFO帶來噩夢
IBM DB LUW
從帶有MVS系列操作系統的大型機到z/OS以及後來的UNIX和Windows系統IBM在RDBMS領域都是一個長期的領跑者IBM數據庫的當前版本是IBM DB LUW(LinuxUNIX和Windows)
IBM DB 在事務處理速度上保持了絕對領先的記錄(更多信息請參見第章)它具有多個不同的版本從Advanced Server Enterprise版本到免費的DB ExpressC版本(盡管功能上有限制)免費的DB ExpressC版本可用於運行本書中的示例
直到DB的版本依然遵循ANSI/ISO SQL Entry標准(請參考本章後面的內容)並支持由其他標准化組織制定的一些高級功能例如Open Geospatial Consortium(開放地理信息聯盟)JDBCX/Open XA它還包含了最新SQL:標准的部分功能除了自己內置的過程化擴展語言SQL PL之外它還支持使用Oracle的PL/SQL語言Java語言甚至Microsoft的NET家族的語言來創建存儲過程(更多內容請參見第章)
Oracle
Oracle數據庫可以追溯到年第一次發布的Oracle V開始時用於VAX/VMS系統並於年支持UNIX系統經過多年發展對於SQL標准定義的絕大多數功能Oracle數據庫都添加了相應的支持在最新發布的Oracle g版本中功能支持達到了極致它聲稱遵循最新SQL:標准的很多功能
在高性能事務處理的標桿上Oracle占據了第二名的位置它是企業生態系統的核心Oracle是一個安全的健壯的可伸縮的高性能的數據庫系統它統治UNIX市場長達數十年除了對SQL標准的支持之外Oracle還提供了一種內置的過程化語言PL/SQL(關於過程化擴展的更多內容請參見第章)另外它還支持通用的程序設計語言例如Java
在寫作本書之時Oracle的最新版本是Oracle g只有Oracle g有免費的速成版該版本在數據存儲的容量和RDBMS能夠利用的處理器(CPU)數量上存在一定的限制速成版完全支持本書所討論的所有SQL功能
Microsoft SQL Server
SQL Server來源於MicrosoftAshtonTate和Sybase合作的結果開始的目標是改寫已有的僅適用於UNIX的Sybase SQL Server數據庫使之適用於新的IBM操作系統OS/AshtonTate隨後退出了這一合作IBM OS/操作系統也逐漸被人淡忘Microsoft和Sybase為了分享成果開始小心地避免觸犯彼此Microsoft致力於發展並支持Windows和OS/系統上的SQL Server而Sybase則致力於UNIX平台盡管在SQL Server的核心技術上Microsoft依然采用了相當多的Sybase技術但雙方的合作關系於年正式結束Microsoft於年發布了Microsoft SQLServer 它消除了Sybase余留的痕跡為世界(Windows系統的世界)帶來了一個完全嶄新的RDBMS系統時至今日Microsoft占據了RDBMS大約%的市場份額而在Windows系統上它占據了至高無上的位置
在寫作本書之時最新版本是Microsoft SQL Server Release Microsoft還提供了一個免費但有限制的Express版本它支持本書所介紹的全部SQL功能
Microsoft Access
Microsoft Access也被稱為Microsoft Office Access它是一個桌面型關系數據庫(相對來說是關系型的)Microsoft Access的設計目標是成為一個集成的解決方案結合關系型數據庫引擎的要素和應用程序開發的基礎結構(配套有內置的程序設計語言和程序設計模型)並作為一個報表平台與本書中討論的其他RDBMS不同的是Microsoft Access是一個基於文件的數據庫因此它在性能和可伸縮性方面都存在固有的局限例如雖然最新版本的Access理論上允許最多個並發用戶但在實踐中超過多個用戶就會減慢Access的性能Access僅支持SQL標准的一個子集它提供了許多僅在Access環境中有效的功能
Access提供的功能之一就是從遠程數據庫鏈接表的能力該功能使Access可以作為應用程序
的前端訪問任何與ODBC/OLEDB兼容的數據庫
PostgreSQL
PostgreSQL是從美國加州伯克利大學的Michael Stonebraker所領導的一個項目演變而來的Michael Stonebraker是關系型數據庫理論的先驅在最初的Ingres項目以及其繼任者PostgreSQL中采用的那些原則也以各種方式被其他RDBMS產品采用例如SybaseInformixEnterpriseDB和Greenplum
PostgreSQL的第一個版本發布於年之後第二年以版本的名義發布並保留了一個由一組專門的開發人員維護的開源項目PostgreSQL具有很多個商業版本最著名的是EnterpriseDB一個私人公司為該產品提供企業支持(以及大量專有的管理工具)在一些苛刻的企業級應用環境中很多高端客戶(例如Sony和Vonage)都采用了開源的RDBMS這充分證明了EnterpriseDB的性能
在對SQL標准的支持方面PostgreSQL可以說是最接近SQL標准的另外它還提供了很多在其他數據庫中所沒有的功能與它的開源伙伴(例如MySQL)不同PostgreSQL從一開始就提供了參照完整性和事務支持PostgreSQL內置了對PL/pgSQL過程化擴展語言的支持另外實際上還具有適配其他任何語言來實現過程化擴展的功能
MySQL
MySQL最先是由Michael Widenius和David Axmark於年開發的並於年發布了第一個版本MySQL最初定位為一個輕量級的快速數據庫用於作為數據驅動型網站的後台數據庫盡管MySQL缺乏更加成熟的RDBMS產品所具有的許多功能但在提供信息服務的速度上非常快對於很多場合來說都已經足夠好(為了達到真正的快速MySQL避開了參照完整性約束和事務支持更多內容請參見第章和第章)另外MySQL有著無法抗拒的價格它是免費的因此在中小規模的用戶群中MySQL成為最流行的關系型數據庫在數據庫產品的市場上很多其他的免費產品在功能上都有所缺乏或者帶有近乎商業炒作的宣傳數據庫產品的巨人OracleIBMMicrosoft和Sybase在那時也都沒有提供各自RDBMS產品的免費速成版在年Sun Microsystems公司收購了MySQL隨後Sun公司又被Oracle收購
目前Oracle提供了一個帶有商業支持的MySQL版本和一個Community Edition版本伴隨著這一收購出現了大量分支版本例如MariaDB和 Percona Server它們在通用公共許可證(General PublicLicenseGPL)下繼續保持免費狀態GPL是一種限制最小的開源許可證
MySQL的最新版本是MySQL 也已經指日可待它是多平台的(Linux/UNIX/Windows)並且支持SQL:的絕大多數功能其中一些功能依賴於選定的配置選項(例如存儲引擎)
存儲引擎選項是MySQL獨一無二的特性它允許采用不同的方式處理不同的表類型每一種引擎都有獨特的功能和一定的限制(例如事務支持聚集索引存儲限制等)可以采用不同的存儲引擎選項來創建MySQL數據庫中的表默認使用的是MyISAM引擎
HSQLDB和OpenOffice BASE
超結構化查詢語言數據庫(Hyper Structured Query Language DatabaseHSQLDB)是一個用Java程序設計語言實現的關系型數據庫管理系統它是伯克利軟件發行(BSD)許可證(這個許可證相當寬松)下的一個開源數據庫
HSQLDB是OpenOfficeorg BASE自帶的默認RDBMS引擎OpenOfficeorg BASE是一個桌面型數據庫被定位於和Microsoft Access進行市場競爭OpenOfficeorg BASE也是一個關系型數據庫它健壯功能豐富且相當快速支持多種平台包括Linux各種版本的UNIX和Microsoft WindowsOpenOfficeorg BASE聲稱幾乎完全遵循SQL:標准該標准包含了本書所討論的絕大多數SQL子集
改寫過的HSQLDB可以作為OpenOfficeorg套件組件BADE的一個嵌入的後端並從版本開始成為OpenOfficeorg套件中的一部分與Microsoft Access類似假如有適當的驅動程序的話OpenOffice BASE可以連接到多種不同的RDBMS在OpenOffice BASE產品中已經包含了大量可用的Java Database Connectivity(JDBC)和ODBC(Open Database Connectivity)驅動程序
隨著Oracle收購了OpenOffice而其在Oracle的資助下作為開源項目的狀態並不明確OpenOfficeorg社區決定啟動一個名為LibreOffice的新項目意圖在原來的BSD許可證的授權下將LibreOffice作為一個免費軟件實現OpenOffice的所有功能
關系型數據庫並不是數據庫領域中唯一的主角一些似乎已經被關系型數據庫理論打敗的舊技術在更快和更便宜的硬件以及軟件創新的幫助下卷土重來對更高性能和更容易創建應用程序的需求催生了對列式數據庫(columnar database)和面向對象數據庫使將所有數據放在一個桶中方法可行的框架特定領域擴展(例如測地數據管理或多媒體)以及各種數據訪問機制的研究第章將討論這些話題
返回目錄SQL實戰新手入門
編輯推薦
Oracle索引技術
高性能MySQL
數據倉庫與數據挖掘培訓視頻教程
From:http://tw.wingwit.com/Article/program/SQL/201311/16492.html