系統(tǒng)架構(gòu)設(shè)計(jì)師-第3章-數(shù)據(jù)庫
第 3 章-數(shù)據(jù)庫
在信息處理領(lǐng)域,由于數(shù)據(jù)量龐大,如何有效組織、存儲(chǔ)數(shù)據(jù)對實(shí)現(xiàn)高效率的信息處理至關(guān)重要。數(shù)據(jù)庫技術(shù)是目前最有效的數(shù)據(jù)管理技術(shù)。數(shù)據(jù)庫(DataBase,DB)是指長期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。它不僅描述事物的數(shù)據(jù)本身,而且還包括相關(guān)事物之間的聯(lián)系。數(shù)據(jù)庫可以直觀地理解為存放數(shù)據(jù)的倉庫,只不過這個(gè)倉庫是在計(jì)算機(jī)的存儲(chǔ)設(shè)備上,而且數(shù)據(jù)是按一定格式存放的,具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,可為多個(gè)用戶共享。
早期數(shù)據(jù)庫種類有3種,分別是層次式數(shù)據(jù)庫、網(wǎng)絡(luò)式數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫。目前最常見的數(shù)據(jù)庫種類是關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫。根據(jù)數(shù)據(jù)庫存儲(chǔ)體系分類,還可分為關(guān)系 型數(shù)據(jù)庫、鍵值(Key-Value)數(shù)據(jù)庫、列存儲(chǔ)數(shù)據(jù)庫、文檔數(shù)據(jù)庫和搜索引擎數(shù)據(jù)庫等類型。
- 關(guān)系型數(shù)據(jù)庫。這種類型的數(shù)據(jù)庫是最傳統(tǒng)的數(shù)據(jù)庫類型,關(guān)系型數(shù)據(jù)庫模型是把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系,在數(shù)據(jù)庫中,對數(shù)據(jù)的操作幾乎全部建立在一個(gè)或多個(gè)關(guān)系表格上。在大型系統(tǒng)中通常有多個(gè)表,且表之間有各種關(guān)系。實(shí)際使用就是通過對這些關(guān)聯(lián)的表格進(jìn)行分類、合并、連接或選取等運(yùn)算來實(shí)現(xiàn)數(shù)據(jù)庫的管理。
- 鍵值數(shù)據(jù)庫。鍵值數(shù)據(jù)庫是一種非關(guān)系型數(shù)據(jù)庫,它使用簡單的鍵值方法來存儲(chǔ)數(shù)據(jù)。鍵值數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)為鍵值對集合,其中鍵作為唯一標(biāo)識(shí)符。
- 列存儲(chǔ)數(shù)據(jù)庫。列式存儲(chǔ)(Column-Based)是相對于傳統(tǒng)關(guān)系型數(shù)據(jù)庫的行式存儲(chǔ)(Row-Basedstorage)來說的。簡單來說兩者的區(qū)別就是對表中數(shù)據(jù)的存儲(chǔ)形式的差異。
- 文檔數(shù)據(jù)庫。此類數(shù)據(jù)庫可存放并獲取文檔,可以是 XML、JSON、BSON 等格式,這些文檔具備可述性(Self-Describing),呈現(xiàn)分層的樹狀結(jié)構(gòu) (Hierarchical Tree Data Structure),可以包含映射表、集合和純量值。數(shù)據(jù)庫中的文檔彼此相似,但不必完全相同。文檔數(shù)據(jù)庫所存放的文檔,就相當(dāng)于鍵值數(shù)據(jù)庫所存放的“值”。文檔數(shù)據(jù)庫可視為其值可查的鍵值數(shù)據(jù)庫。
- 搜索引擎數(shù)據(jù)庫。搜索引擎數(shù)據(jù)庫是應(yīng)用在搜索引擎領(lǐng)域的數(shù)據(jù)存儲(chǔ)形式,由于搜索引擎會(huì)爬取大量的數(shù)據(jù),并以特定的格式進(jìn)行存儲(chǔ),這樣在檢索的時(shí)候才能保證性能最優(yōu)。
下面簡要介紹常用的關(guān)系數(shù)據(jù)庫和分布式數(shù)據(jù)庫。
- 關(guān)系數(shù)據(jù)庫
數(shù)據(jù)模型是數(shù)據(jù)特征的抽象,它是對數(shù)據(jù)庫組織方式的一種模型化表示,是數(shù)據(jù)庫系統(tǒng)的核心與基礎(chǔ)。它具有數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束條件三要素。
關(guān)系可以理解為二維表。一個(gè)關(guān)系模型就是指用若干關(guān)系表示實(shí)體及其聯(lián)系,用二維表的形式存儲(chǔ)數(shù)據(jù)。例如,對某高校學(xué)生的選課(不同年級甚至同一年級學(xué)生所選課程可以不同) 進(jìn)行管理,可以用二維表表示,如圖 2-4 所示。
![20240221204744]()
用關(guān)系表示如下,其中帶下畫線的屬性為主碼,主碼能唯一確定某個(gè)實(shí)體,如學(xué)號能唯一 確定某個(gè)學(xué)生。
學(xué)生(學(xué)號,姓名,年齡,系別)
課 程 (課程號,課程名,學(xué)分)
選 課 (學(xué) 號,課程號,分?jǐn)?shù))
- 關(guān)系數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)及方法
數(shù)據(jù)庫設(shè)計(jì)是指對于一個(gè)給定的應(yīng)用環(huán)境構(gòu)造最優(yōu)的數(shù)據(jù)庫,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能有效地存儲(chǔ)數(shù)據(jù),滿足各種用戶的需求。數(shù)據(jù)庫設(shè)計(jì)包括結(jié)構(gòu)特性和行為特性的設(shè)計(jì)兩 方面的內(nèi)容。
數(shù)據(jù)庫設(shè)計(jì)的很多階段都可以和軟件工程的各階段對應(yīng)起來,數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)有:從數(shù)據(jù)結(jié)構(gòu)即數(shù)據(jù)模型開始,并以數(shù)據(jù)模型為核心展開,這是數(shù)據(jù)庫設(shè)計(jì)的一個(gè)主要特點(diǎn);靜態(tài)結(jié)構(gòu)設(shè)計(jì)與動(dòng)態(tài)行為設(shè)計(jì)分離;試探性;反復(fù)性和多步性。
目前已有的數(shù)據(jù)庫設(shè)計(jì)方法可分為 4 類,即直觀設(shè)計(jì)法、規(guī)范設(shè)計(jì)法、計(jì)算機(jī)輔助設(shè)計(jì)法和自動(dòng)化設(shè)計(jì)法。常用的有基于 3NF 的設(shè)計(jì)方法、基于實(shí)體聯(lián)(E-R)模型的數(shù)據(jù)庫設(shè)計(jì)方法、基于視圖概念的數(shù)據(jù)庫設(shè)計(jì)方法、面向?qū)ο蟮年P(guān)系數(shù)據(jù)庫設(shè)計(jì)方法、計(jì)算機(jī)輔助數(shù)據(jù)庫設(shè)計(jì)方法、敏捷數(shù)據(jù)庫設(shè)計(jì)方法等。 - 關(guān)系數(shù)據(jù)庫設(shè)計(jì)的基本步驟
數(shù)據(jù)庫設(shè)計(jì)分為需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、應(yīng)用程序設(shè)計(jì)和運(yùn)行維護(hù) 6 個(gè)階段,如圖 2-5 所示。
![20240221210506]()
需求分析階段的任務(wù)是對現(xiàn)實(shí)世界要處理的對象(組織、部門和企業(yè)等)進(jìn)行詳細(xì)調(diào)查,在了解現(xiàn)行系統(tǒng)的概況和確定新系統(tǒng)功能的過程中,收集支持系統(tǒng)目標(biāo)的基礎(chǔ)數(shù)據(jù)及其處理方 法。需求分析是在用戶調(diào)查的基礎(chǔ)上,通過分析逐步明確用戶對系統(tǒng)的需求,包括數(shù)據(jù)需求和圍繞這些數(shù)據(jù)的業(yè)務(wù)處理需求。
數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)是在需求分析的基礎(chǔ)上,依照需求分析中的信息需求,對用戶信息加以分類、聚集和概括,建立信息模型,并依照選定的數(shù)據(jù)庫管理系統(tǒng)軟件,把它們轉(zhuǎn)換為數(shù)據(jù)的邏輯結(jié)構(gòu),再依照軟硬件環(huán)境,最終實(shí)現(xiàn)數(shù)據(jù)的合理存儲(chǔ)。這一過程也稱為數(shù)據(jù)建模。
設(shè)計(jì)數(shù)據(jù)庫概念模型的最著名、最常用的方法是 E-R 方法。采用 E-R 方法的數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)可分為三步:設(shè)計(jì)局部 E-R 模型、設(shè)計(jì)全局 E-R 模型以及全局 E-R 模型的優(yōu)化。
邏輯結(jié)構(gòu)設(shè)計(jì)是在概念結(jié)構(gòu)設(shè)計(jì)基礎(chǔ)上進(jìn)行的數(shù)據(jù)模型設(shè)計(jì),可以是層次、網(wǎng)狀模型和關(guān)系模型。邏輯結(jié)構(gòu)設(shè)計(jì)階段的主要任務(wù)是確定數(shù)據(jù)模型,將 E-R 圖轉(zhuǎn)換為指定的數(shù)據(jù)模型,確定完整性約束,確定用戶視圖。
數(shù)據(jù)庫在物理設(shè)備上的存儲(chǔ)結(jié)構(gòu)與存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu)。數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計(jì)是對已確定的數(shù)據(jù)庫邏輯結(jié)構(gòu),利用 DBMS 所提供的方法、技術(shù),以較優(yōu)的存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù) 存取路徑、合理的數(shù)據(jù)存放位置以及存儲(chǔ)分配,設(shè)計(jì)出一個(gè)高效的、可實(shí)現(xiàn)的數(shù)據(jù)庫物理結(jié)構(gòu)。
數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)是 DBMS 的二次開發(fā),一方面是對用戶信息的存儲(chǔ);另一方面就是對用戶處理要求的實(shí)現(xiàn)。
數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)要做的工作有選擇設(shè)計(jì)方法、制訂開發(fā)計(jì)劃、選擇系統(tǒng)架構(gòu)和設(shè)計(jì)安全性策略。在應(yīng)用程序設(shè)計(jì)階段,設(shè)計(jì)方法有結(jié)構(gòu)化設(shè)計(jì)方法和面向?qū)ο笤O(shè)計(jì)方法兩種。安全性策略主要是指硬件平臺(tái)、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、網(wǎng)絡(luò)及應(yīng)用系統(tǒng)的安全。
數(shù)據(jù)庫的正常運(yùn)行和優(yōu)化也是數(shù)據(jù)庫設(shè)計(jì)的內(nèi)容之一 。在數(shù)據(jù)庫運(yùn)行維護(hù)階段要做的工作主要有數(shù)據(jù)庫的轉(zhuǎn)儲(chǔ)和恢復(fù),數(shù)據(jù)庫的安全性和完整性控制,數(shù)據(jù)庫性能的監(jiān)督、分析和改造,數(shù)據(jù)庫的重組和重構(gòu)等。
- 分布式數(shù)據(jù)庫
分布式數(shù)據(jù)庫系統(tǒng)(Distributed DataBase System,DDBS) 是針對地理上分散,而管理上又需要不同程度集中管理的需求而提出的一種數(shù)據(jù)管理信息系統(tǒng)。滿足分布性、邏輯相關(guān)性、地透明性和場地自治性的數(shù)據(jù)庫系統(tǒng)被稱為完全分布式數(shù)據(jù)庫系統(tǒng)。
分布式數(shù)據(jù)庫系統(tǒng)的特點(diǎn)是數(shù)據(jù)的集中控制性、數(shù)據(jù)獨(dú)立性、數(shù)據(jù)冗余可控性、場地自治性和存取的有效性。
- 分布式數(shù)據(jù)庫體系結(jié)構(gòu)
我國在多年研究與開發(fā)分布式數(shù)據(jù)庫及制定《分布式數(shù)據(jù)庫系統(tǒng)標(biāo)準(zhǔn)》中,提出了把分布式數(shù)據(jù)庫抽象為 4 層的結(jié)構(gòu)模式,如圖 2-6 所示。這種結(jié)構(gòu)模式得到了國內(nèi)外一定程度的支持和認(rèn)同。
![1708521252617]()
4 層模式劃分為全局外層、全局概念層、局部概念層和局部內(nèi)層,在各層間還有相應(yīng)的層 間映射。這種 4 層模式適用于同構(gòu)型分布式數(shù)據(jù)庫系統(tǒng),也適用于異構(gòu)型分布式數(shù)據(jù)庫系統(tǒng)。 - 分布式數(shù)據(jù)庫的應(yīng)用
分布式數(shù)據(jù)庫的應(yīng)用領(lǐng)域有分布式計(jì)算、Internet 應(yīng)用、數(shù)據(jù)倉庫、數(shù)據(jù)復(fù)制以及全球聯(lián)網(wǎng)查詢等,Sybase 公司的 Replication Server 即是一種典型的分布式數(shù)據(jù)庫系統(tǒng)。
- 常用數(shù)據(jù)庫管理系統(tǒng)
計(jì)算機(jī)科學(xué)技術(shù)不斷發(fā)展,數(shù)據(jù)庫管理系統(tǒng)也不斷發(fā)展進(jìn)化,MySQLAB 公司(2009 年被 Oracle 公司收購)MySQL、Microsoft 公司的 Access 等是小型關(guān)系數(shù)據(jù)庫管理系統(tǒng)的代表,Oracle 公司的 Oracle、Microsoft 公司的 SQL Server、IBM 公司的 DB2 等是功能強(qiáng)大的大型關(guān)系數(shù)據(jù)庫管理系統(tǒng)的代表。
- Oracle
Oracle 是一種適用于大型、中型和微型計(jì)算機(jī)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)。Oracle 的結(jié)構(gòu)包括數(shù)據(jù)庫的內(nèi)部結(jié)構(gòu)、外存儲(chǔ)結(jié)構(gòu)、內(nèi)存儲(chǔ)結(jié)構(gòu)和進(jìn)程結(jié)構(gòu)。在 Oracle 中,數(shù)據(jù)庫不僅指物理上的數(shù)據(jù),還包括處理這些數(shù)據(jù)的程序,即 DBMS 本身。Oracle 使用 PL/SQL(ProceduralLanguage/SQL)語言執(zhí)行各種操作。Oracle 除了以關(guān)系格式存儲(chǔ)數(shù)據(jù)外,Oracle8 以上的版本還支持面向?qū)ο蟮慕Y(jié)構(gòu)(如抽象數(shù)據(jù)類型)。
Oracle 產(chǎn)品主要包括數(shù)據(jù)庫服務(wù)器、開發(fā)工具和連接產(chǎn)品三類。Oracle 還提供了一系列的工具產(chǎn)品,如邏輯備份工具 Export、Import 等。 - IBM DB2
DB2 是 IBM 的一種分布式數(shù)據(jù)庫解決方案。簡單地說,DB2 就是 IBM 開發(fā)的一種大型關(guān)系型數(shù)據(jù)庫平臺(tái),它支持多用戶或應(yīng)用程序在同一條 SQL 語句中查詢不同 Database 甚至不同 DBMS 中的數(shù)據(jù)。
DB2 核心數(shù)據(jù)庫的特色有支持面向?qū)ο缶幊?,支持多媒體應(yīng)用程序,支持備份和恢復(fù)功能,支持存儲(chǔ)過程和觸發(fā)器,支持 SQL 查詢,支持異構(gòu)分布式數(shù)據(jù)庫訪問,支持?jǐn)?shù)據(jù)復(fù)制。
DB2 采用多進(jìn)程多線索體系結(jié)構(gòu),可運(yùn)行于多種操作系統(tǒng)之上。IBM 還提供了 Visualizer、Visualage、Visualgen 等開發(fā)工具。 - Sybase
Sybase 是美國 SYBASE 公司在 20 世紀(jì) 80 年代中期推出的客戶機(jī)/服務(wù)器(Client/Server,C/S)結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫系統(tǒng),也是世界上第一個(gè)真正的基于客戶機(jī)/服務(wù)器結(jié)構(gòu)的 RDBMS 產(chǎn)品。
Sybase 數(shù)據(jù)庫主要由三部分組成:進(jìn)行數(shù)據(jù)庫管理和維護(hù)的聯(lián)機(jī)關(guān)系數(shù)據(jù)庫管理系統(tǒng) Sybase SQLServer,支持?jǐn)?shù)據(jù)庫應(yīng)用系統(tǒng)建立與開發(fā)的一組前端工具 Sybase SQLToolset,可把異構(gòu)環(huán)境下其他廠商的應(yīng)用軟件和任何類型的數(shù)據(jù)連接在一起的接口 Sybase OpenClient/OpenServer。
Sybase 提供了 Sybase Adaptive Server Enterprise 高性能企業(yè)智能型關(guān)系數(shù)據(jù)庫管理系統(tǒng)、EAServer 電子商務(wù)解決方案應(yīng)用服務(wù)器、系統(tǒng)分析設(shè)計(jì)工具 PowerDesigner 和應(yīng)用開發(fā)工具 PowerBuilder。 - Microsoft SQL Server
Microsoft SQL Server 是一種典型的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可運(yùn)行于多個(gè)操作系統(tǒng)上,它使用 Transact-SQL 語言完成數(shù)據(jù)操作。




浙公網(wǎng)安備 33010602011771號