定義
關係型數據是指以關係數學模型來表示的數據,關係數學模型中以二維表的形式來描述數據。關係型資料庫是存儲在計算機上的、可共享的、有組織的關係型數據的集合。例如視圖,存儲過程,索引等的集合。在關係型資料庫中,信息存放在二維表中,一個關係型資料庫包括多個二維表。關係型資料庫所包含的表之間是有關聯的,關聯主要有主碼和外碼所體現的參照關係實現。關係模型由關係數據結構,關係操作集合、關係完整性約束三部分組成。
數據結構
在關係模型中,現實世界的實體以及實體間的各種聯繫均用關係來表示。在用戶看來,關係模型中數據的邏輯結構是一種二維數據結構,在資料庫中就表現為一張二維表。
數據結構就是計算機存儲、組織數據的方式,關係就是實體間的某種聯繫。例如兩個實體分別為學生與課程,在選課系統的環境下,他們之間的聯繫就是“選課”,我們為了想存儲下每個學生都選了什麼課,可以以學生實體與課程實體的聯繫建立起一個二維的邏輯結構,在這種邏輯結構中我們可以很輕鬆的檢索兩實體間的關係集。例如某一學生都選了什麼課,或者是某一課程都有哪些學生選了,多維的關係數據結構可以以此類推,但很少見到實際套用,大多都是二維關係的組合套用。
關係數據結構的重點在於“實體”與“關係”的選擇,記住“關係”是指的實體與實體之間的聯繫。
操作集合
關係資料庫中的核心內容是關係即二維表。而對這樣一張表的使用主要包括按照某些條件獲取相應行、列的內容,或者通過表之間的聯繫獲取兩張表或多張表相應的行、列內容。概括起來關係操作包括選擇、投影、連線操作。關係操作其操作對象是關係,操作結果亦為關係。
選擇(Selection)操作是指在關係中選擇滿足某些條件的元組(行)。
投影(Projection)操作是在關係中選擇若干屬性列組成新的關係。投影之後不僅取消了原關係中的某些列,而且還可能取消某些元組,這是因為取消了某些屬性列後,可能出現重複的行,應該取消這些完全相同的行。
連線(Join)操作是將不同的兩個關係連線成為一個關係。對兩個關係的連線其結果是一個包含原關係所有列的新關係。新關係中屬性的名字是原有關係屬性名加上原有關係名作為前綴。這種命名方法保證了新關係中屬性名的惟一性,儘管原有不同關係中的屬性可能是同名的。新關係中的元組是通過連線原有關係的元組而得到的。
其他操作是可以用基本操作來定義和導出的。
約束
完整性約束包括:實體完整性,參照完整性,用戶定義完整性。
實體完整性
在關係資料庫中一個關係對應現實世界的一個實體集,關係中的每一個元組對應一個實體。在關係中用主關鍵字來唯一標識一個實體,實體具有獨立性,關係中的這種約束條件稱為實體完整性。
參照完整性
用於約定兩個關係之間的聯繫,理論上規定,若m是關係s中的一屬性組,且m是另一關係z的主關鍵字,則稱m為關係s對應關係z的外關鍵字。若m是關係s的外關鍵字,則s中每一個元組在m上的值必須是空值或是對應關係z中某個元組的主關鍵字值。例如,學生關係s和學校專業關係z之間滿足參照完整性約束。學校專業關係z中的專業號屬性是主關鍵字,同時它也存在學生關係s中,那么只有當專業號存在,這個專業的學生才有可能存在,因此在添加學生關係中的元組時,定義的專業號必須在學校專業關係z中已存在對應的元組。
用戶定義完整性
約束是用戶定義某個具體資料庫所涉及的數據必須滿足的約束條件,是由具體套用環境來決定的。例如,約定學生成績的數據必須小於或等於100。
優勢
關係型資料庫相比其他模型的資料庫而言。有著以下優點:
1、容易理解:關係模型中的二維表結構非常貼近邏輯世界,相對於網狀、層次等其他模型來說更容易理解。
2、使用方便:通用的SQL語言使得操作關係型資料庫非常方便,只需使用SOL語言在邏輯層面運算元據庫,而完全不必理解其底層實現。
3、易於維護:豐富的完整性(實體完整性、參照完整性和用戶定義的完整性)大大降低了數據冗餘和數據不一致的機率。
問題
傳統的關係型資料庫具有不錯的性能,高穩定型,久經歷史考驗,而且使用簡單,功能強大,同時也積累了大量的成功案例。在90年代的網際網路領域。一個網站的訪問量一般都不大,用單個資料庫完全可以輕鬆應付。在那個時候,更多的都是靜態網頁,動態互動類型的網站不多。可是最近幾年,網際網路Web2.0網站開始快速發展。火爆的論壇、部落格、微博逐漸引領web領域的潮流。傳統的關係型資料庫在應付這些超大規模和高並發的純動態網站顯得力不從心,,暴露了很多難以克服的問題。
1、資料庫高並發讀寫:高並發的純動態網站一般都是根據用戶個性化信息來實時生成動態頁面和提供動態信息,所以基本上無法使用動態頁面靜態化技術,因此資料庫並發負載非常高,往往要達到每秒上萬次讀寫請求。關係資料庫應付上萬次SOL查詢還勉強頂得住。但是應付上萬次SQL寫數據請求,硬碟就已經無法承受了。
2、海量數據的高效率存儲和訪問:上述提到的Web2.0網站,每天用戶會產生海量的動態信息,對於關係資料庫來說。在一張數以億計條記錄的表裡面進行SQL查詢,效率是極其低下。難以忍受的。
3、資料庫的高可擴展性和高可用性:基於web的架構當中,資料庫無法通過添加更多的硬體和服務節點來擴展性能和負載能力,對於很多需要提供24小時不問斷服務的網站來說,資料庫系統升級和擴展卻只能通過停機來實現,這無疑是一個艱難的決定。
所以現在有人提出了非關係型資料庫,可以部分解決上述問題 。
代表
Oracle
作為全球最大的,領先的資料庫巨頭,Oracle涉及了資料庫行業的所有領域,產品線強大,在數據倉庫、數據分析、線上事務處理方面都具有很強的表現。綜合對比Oracle具有以下優點:
兼容性
Oracle資料庫採用ANSI SQL設計,能和目前市場上所有的SQL範式兼容,與IBMSQL/DS、DB2INGRES、IDMS/R等標準兼容,方便數據交換和數據對接。
移植性
Oracle的產品可運行於大多數硬體與作業系統平台上。可以安裝在多種不同的大、中、小型機上;可在VMS、DOS、UNIX、Windows,Linux等多種作業系統下工作,支持多種網路協定,這為以後的系統升級和平台遷移提供了方便。
高可用性
在一個大型資料庫或數據倉庫環境,資料庫是基礎中的基礎,資料庫服務的連續性和可用性非常關鍵,為保證中心資料庫的持續可用,Oracle提供了一系列高可用性產品,比如RAC,DataGuard,Streams Replication等。在數據備份方面,提供了全球最為強大的可免費使用的RMAN備份工具,RMAN備份是給予物理級別的,不及備份了數據還備份了數據相關的檔案和日誌,這樣關鍵時期可以縮短數據恢復的時間。RMAN包含在Oracle資料庫的所有版本中。大多數商業資料庫,企業級的備份需要支付昂貴的License.
開放性
Oracle資料庫具有高度的開放性,為了滿足學者了解和學習Oracle資料庫,Oracle公司提供了開發許可License,這個License不需要支付費用,Oracle官網提供了可下載學習的資料庫產品 ,並且在產品中包含了這個License。也就是我們可以合法免費的使用部分Oracle資料庫產品進行學習。Oracle支持多種驅動程式和開發工具,開發者可以很輕鬆的開發基於Oracle資料庫的產品。
VLDB的支持
Oracle天生為大型和超級資料庫提供了支持和擴展,Oracle Table Partition( 數據表分區)提供了在數據表很大的情況下,可以對表進行物理分區,解決大表管理困難和數據查詢或更新導致的性能問題,同時數據表分區也有利於解決數據遷移的問題。
ASM的支持
Oracle提供了自己的資料庫存儲管理解決方案,引入了ASM(Automatic Storage Management),ASM是Oracle的一個附屬系統。解決了三個問題:
1、從整體上將資料庫的邏輯定義和物理存儲分開管理;
2、線上存儲添加和卸載,Oracle資料庫從作業系統接管了部分物理存儲管理許可權,在不影響資料庫業務的情況下可以很輕鬆的線上完成ASM磁碟的添加刪除任務;
3、數據均勻分布,在我們每次對ASM完成磁碟調整工作之後,Oracle會自動重新分布數據調整數據,這樣可以提高資料庫的查詢性能,避免了磁碟熱點問題。
DB2
DB2是IBM旗下的關係型資料庫,作為和Oracle同步起家的產品,業績方面,DB2在企業級的套用最為廣泛,在全球的500家最大的企業中,幾乎85%以上都用DB2資料庫伺服器,而國內到1997左右年約占5%。隨著Oracle的改革,從2002開始,Oracle改寫了這一輝煌。DB2的成功莫過於IBM自身的硬體和強大的軟體支持,大多數企業選擇了IBM的小型機後,經過IBM的關係行銷,也會選擇IBM的軟體,包括DB2。
DB2的整體特性有:
1、支持多種作業系統,支持目前流行的Linux(IBM自身的Linux OS),Windows等,Unix只支持IBM自己的AIX;
2、對硬體有一定的要求,最初只支持IBM的AS/400系統,現在支持INTEL部分硬體;
3、兼容Oracle,DB2兼容Oracle大多數的數據類型和SQL語言,比如PL/SQL;
4、 開放性不高,沒有Oracle,SQL Server,MySQL高度開放;
5、可靠性好,尤其和IBM的小型機可以集合起來。
SQL Server
SQL Server是由微軟開發的資料庫管理系統,是Web上最流行的用於存儲數據的資料庫,它已廣泛用於電子商務、銀行、保險、電力等與資料庫有關的行業。SQL Server只能在Windows上運行,作業系統的系統穩定性對資料庫十分重要。並行實施和共存模型並不成熟,很難處理日益增多的用戶數和數據卷,伸縮性有限。
SQL Server 提供了眾多的Web和電子商務功能,如對XML和Internet標準的豐富支持,通過Web對數據進行輕鬆安全的訪問,具有強大的、靈活的、基於Web的和安全的應用程式管理等。而且,由於其易操作性及其友好的操作界面,深受廣大用戶的喜愛。作為開發和測試,SQL Server可以是個不錯的選擇。
MySQL
MySQL是最受歡迎的開源SQL資料庫管理系統,它由 MySQL AB開發、發布和支持。MySQL AB是一家基於MySQL開發人員的商業公司。MySQL是MySQL AB的註冊商標,2010 年MySQL被Oracle收購。
MySQL是一個快速的、多執行緒、多用戶和健壯的SQL資料庫伺服器。MySQL伺服器支持關鍵任務、重負載生產系統的使用,也可以將它嵌入到一個大配置(mass- deployed)的軟體中去。 與其他資料庫管理系統相比,MySQL具有以下優勢:
1、MySQL也是一個關係資料庫管理系統;
2、MySQL是開源的;
3、MySQL伺服器是一個快速的、可靠的和易於使用的資料庫伺服器;
4、MySQL伺服器工作在客戶/伺服器模式或嵌入式的系統中;
5、有大量的MySQL軟體可以使用;
6、支持多種資料庫引擎,這是MySQL一大特色,在讀密集和事務密集形套用中,可以選擇不同的資料庫引擎。