Transcript Document
第2章 資料庫系統的概念與架構 學習重點 ☼資料模型的定義、分類及歷史 ☼資料庫綱要、實例及狀態 ☼三層式綱要架構 ☼DBMS語言、介面及元件模組 ☼資料庫系統公用程式 ☼二層式及三層式主從架構 ☼DBMS的分類 ☼常見的資料模型及DBMSs 資料庫管理 2 資料模型的定義 ☼資料模型(data model):一組用來描述 資料庫結構概念的集合,以及資料庫應 該要遵守的某些限制 ☼資料模型的運算:依據資料模型指定存 取及更新資料庫的動作。在資料模型上 的運算可能包含「基本運算」和「使用 者定義的運算」 資料庫管理 3 資料模型的分類 ☼概念(conceptual,或高階、語意)資料 模型:提供的概念較接近使用者能理解資 料的方式 ☼實體(physical,或低階、內部)資料模型: 描述資料如何儲存在電腦上的細節 ☼實作(implementation,或象徵性)資料 模型:介於高階和低階資料模型之間。它 所提供的概念可以讓終端使用者理解,但 又不會太偏離資料在電腦中的組織方式 資料庫管理 4 概念資料模型 術語 實體 (entity) 屬性 (attribute) 關係 (relationship) 資料庫管理 定義 例子 代表真實世界裡 的一個物件或一 種觀念 代表某個描述實 體的重要特性 儲存在資料庫裡 的員工或專案 員工的姓名或薪 水 在兩個或兩個以 一位員工與一項 上實體間的關係, 計劃間的執行關 代表實體之間的 係 互動 5 資料模型的歷史 ☼ 關聯式模型:1970年由E.F.Codd (IBM) 所提出,第一 個商業化產品出現在1981-82。現在的產品大多是屬於 這一類 (DB2、ORACLE、SQL Server、SYBASE、 INFORMIX) ☼ 網路式模型:第一個系統是由Honeywell在1964-65年 推出 (IDS System)。目前已逐漸減少 ☼ 階層式模型:大約在1965年由IBM和另一家公司所開 發,成果是IMS系列系統。另一個有名的系統是 System 2k (SAS公司) ☼ 物件導向資料模型:此資料模型是採用O-O程式語言的 概念,如ORION和IRIS ☼ 物件關聯式模型:這是最近的趨勢。從Informix Universal Server開始,目前最新的產品有Oracle-10i、 DB2和SQL Server等 資料庫管理 6 綱要 vs. 實例 ☼ 資料庫綱要 (database schema):資料庫本身的描 述。包括資料庫結構的描述,以及在資料庫上應 該遵守的限制 ☼ 綱要圖 (schema diagram):將資料庫綱要以圖形 繪製出來 ☼ 綱要組件 (schema construct):綱要中的某個元件, 或者是綱要中的物件,如STUDENT、COURSE ☼ 資料庫實例 (database instance):在某個特定時 刻所儲存的實際資料,也稱作資料庫狀態 (database state) 資料庫管理 7 資料庫綱要 vs. 資料庫狀態 ☼資料庫狀態(database state):是指在某個 時刻當時的資料庫內容 ☼最初狀態 (initial state):是指資料庫剛載入 資料時的狀態 ☼有效狀態 (valid state):滿足綱要裡所指定 的結構與限制的狀態 ☼區別 ♦ 資料庫綱要─很少更改 ♦ 資料庫狀態─每次資料庫更新時都會修改 資料庫管理 8 資料庫的綱要圖─範例 資料庫管理 9 三層式綱要架構 (1/2) ☼把DBMS綱要定義為以下三層: ♦ 內部層(internal level):內部綱要(internal schema)是用來描述實際的資料庫儲存結 構。通常是使用實體(physical)資料模型 ♦ 概念層(conceptual level):概念綱要 (conceptual schema )是用來為某一組使 用者描述整個資料庫的結構與限制。通常是 使用某種概念 (conceptual) 或實作 (implementation)資料模型 ♦ 外部層(external level):外部綱要(external schema)是用來描述各個不同的使用者視 界 (view)。它通常使用與概念層相同的資料 模型 資料庫管理 10 三層式綱要架構 (2/2) ☼三層式綱要架構的目的,是為了支援 DBMS的以下特性: ♦ 程式與資料獨立 ♦ 支援資料的多重視界 ☼DBMS必須將外部綱要的需求轉換成概 念綱要的需求,然後再轉換成內部綱要 的需求,以便處理實體資料庫 資料庫管理 11 三層式綱要架構概念圖 資料庫管理 12 資料獨立 ☼利用三層式綱要架構可以達到資料獨立的概 念。 ☼資料獨立可分成兩類: ♦ 邏輯資料獨立(Logical Data Independence):代 表修改概念綱要時,不需要修改外部綱要或應 用程式的能力 ♦ 實體資料獨立(Physical Data Independence): 代表修改內部綱要時,不需要修改概念綱要的 能力 資料庫管理 13 DBMS語言 (1/3) ☼資料定義語言(Data Definition Language, DDL):一種被用來定義概念綱要的語言 ♦ 大部份的DBMS中: ▫ DDL 也被用來定義內部綱要和外部綱要。 ♦ 在某些的DBMS中: ▫ DDL只被用來定義概念綱要 ▫ SDL (儲存定義語言, storage definition language)被用來定義內部綱要 ▫ VDL (視界定義語言, view definition language) 被用來定義外部綱要 資料庫管理 14 DBMS語言 (2/3) ☼資料處理語言(Data Manipulation Language,DML):用來指定資料庫的擷 取與修改 ♦ 嵌入在一般的程式語言:如同資料子語言(data sublanguage),被嵌入在一般的主機語言(host language),如COBOL、C或組合語言 ♦ 直接獨立(stand-alone)執行:此時常被稱為查詢 語言(query language) 資料庫管理 15 DBMS語言 (3/3) ☼DML有兩種主要的類型: ♦ 高階(high-level) DML:或稱非程序化的(Nonprocedural) DML。 ▫ 它們是集合導向的(set-oriented),主要是指 定要什麼資料,而不是如何擷取 ▫ 也稱作宣告式(declarative)語言 ▫ 例如,SQL語言 ♦ 低階(low-level)DML:或稱程序化的(Procedural) DML ▫ 一次擷取一筆記錄 ▫ 必須內嵌在一般的程式語言中 ▫ 它需要使用程式語言的結構,如迴圈,將多 筆記錄一個個的擷取,並處理每一筆資料 資料庫管理 16 DBMS介面 (1/2) ☼查詢語言介面 ☼嵌入DML的程式語言介面 ☼友善的介面: ♦ ♦ ♦ ♦ ♦ 網頁瀏覽用的功能表介面 為初學者所設計的表單介面 圖形化介面(使用滑鼠點選和拖曳) 自然語言介面 上述的組合 資料庫管理 17 DBMS介面 (2/2) ☼其他的介面 ♦ 語音的輸入和輸出:使用有限的語句當作輸 入查詢,例如電話簿查詢、飛機航班查詢、 銀行帳務資訊 ♦ 固定模式使用者的介面:如銀行行員,常有 專為他們設計並實作特殊的介面 ♦ DBA使用的介面:只有DBA能使用的特殊 權限命令 ▫ 建立帳戶、授予帳戶權限 ▫ 設定系統參數 ▫ 修改綱要和重組資料庫儲存結構 資料庫管理 18 資料庫系統環境 ☼資料庫系統環境的一些名詞 ♦ 用戶端程式(client program):可以從某台電 腦存取另一台電腦上的DBMS ♦ 用戶端電腦(client computer):執行DBMS用 戶端程式的電腦 ♦ 資料庫伺服器(database server):後端存放資 料庫的電腦 ♦ 應用程式伺服器(application server):介於用 戶端和資料庫伺服器中間的電腦。用戶端會 先存取這一台電腦,再由它來存取資料庫伺 服器 資料庫管理 19 DBMS元件模組 (1/3) 資料庫管理 20 DBMS元件模組 (2/3) DBMS元件模組名稱 功能 儲存資料管理員 (stored data manager) 負責控制存取儲存在磁碟上的 DBMS資訊,包括資料庫或目 錄 DDL編譯器 (DDL compiler) 負責處理以DDL撰寫的綱要定 義,並將綱要的描述(中繼資 料)儲存在DBMS目錄中 交談式查詢介面 (interactive query) 提供偶爾使用的使用者透過類 似交談的方式,從資料庫中查 詢取得想要的資訊 查詢編譯器 (query compiler) 負責將以交談式輸入的高階查 詢進行解析(parse)、運算的正 確性分析 資料庫管理 21 DBMS元件模組 (3/3) DBMS元件模組名稱 功能 查詢最佳化程式 (query optimizer) 負責運算動作的重新安排和順 序調換、消除重複的部份,以 及在執行期間使用正確的演算 法和索引。 執行期間資料庫處理器 (run-time database processor) 接收擷取或更新運算,並在資 料庫上執行它們 前置編譯器 (pre-compiler) 負責從使用主機程式語言所撰 寫的應用程式中取出DML命 令 DML編譯器 (DML compiler) 將DML命令編譯成資料庫存 取用的目的碼(object code) 主機語言編譯器 (host language compiler) 處理程式中除DML命令以外 的其他部份 資料庫管理 22 資料庫系統公用程式 ☼載入:從檔案載入資料到資料庫中,包 括資料轉換工具 ☼備份:定期備份資料庫到磁帶上 ☼重組:重組檔案結構 ☼製作報表:報表產生工具 ☼效能監視:效能監視工具 ☼排序檔案、資料壓縮、監視使用者等 資料庫管理 23 其他工具 ☼資料字典(dictionary) / 儲藏庫(repository): ♦ 用來儲存綱要描述與其它資訊,如設計決策、 應用程式描述與使用者資訊等 ☼應用程式發展環境和CASE (computeraided software engineering) 工具: ♦ 範例:Power builder (Sybase)、Builder (Borland)、JDeveloper 10G(Oracle) 資料庫管理 24 集中式的DBMS架構 ☼ 集中式DBMS:將所有的元件集中在單一系統中, 包括DBMS軟體、硬體、應用程式和使用者介面 資料庫管理 25 基本的主從架構 (1/5) ☼提供專門功能的專門伺服器 ☼用戶端 ☼DBMS伺服器 資料庫管理 26 基本的主從架構 (2/5) 資料庫管理 27 基本的主從架構 (3/5) ☼提供專門功能的專門伺服器 ♦ 檔案伺服器:維護多個用戶端共用的檔案 ♦ 列印伺服器:連接各種印表機,用戶端機器 可視需要使用任一台印表機 ♦ 網站伺服器:儲存網站內容 ♦ 電子郵件伺服器:存放及管理電子郵件 資料庫管理 28 基本的主從架構 (4/5) ☼用戶端 ♦ 提供適當的介面和可存取及利用伺服器資源 的用戶端軟體 ♦ 用戶端可能是無磁碟的機器,或者是只安裝 用戶端軟體而且有磁碟的PC或工作站 ♦ 透過某種形式的網路連線到伺服器(如區域 網路、無線網路等) 資料庫管理 29 基本的主從架構 (5/5) ☼DBMS伺服器 ♦ 能對用戶端提供資料庫查詢與交易服務 ♦ 有時稱作查詢(query)伺服器或交易(transaction) 伺服器 資料庫管理 30 二層式主從架構 ☼ 在用戶端上執行使用者介面程式或應用程式 ☼ 用戶端的應用程式可以利用下列的標準應用程式 介面(API, application program interface)去存取 資料庫伺服器 ♦ ODBC:Open Database Connectivity ♦ JDBC:Java Database Connectivity ☼ 一個用戶端程式可能會連結到多種DBMSs ☼ 用戶端程式還有其他變化形式:例如某些DBMS 把更多的功能轉移到用戶端,包括資料字典功能、 橫跨多伺服器的最佳化和復原等。此時的伺服器 可能被稱作資料伺服器 (Data Server) 資料庫管理 31 三層式主從架構─Web應用(1/2) 資料庫管理 32 三層式主從架構─Web應用(2/2) ☼在Web應用程式上常見 ☼中間層:有時稱為應用程式伺服器 (application server)或Web伺服器: ♦ 儲存網站連線軟體,以及用來存取資料庫伺服 器上資料的業務法則(business rule) ♦ 檢查用戶端的存取權限,提高安全性 ♦ 扮演在資料庫伺服器與用戶端之間傳送資料的 中間角色 ☼三層式架構提高安全性: ♦ 用戶端無法直接存取資料庫伺服器,僅能藉由 中間層去存取 ♦ 可以在傳輸前加密伺服器上的資料,到用戶端 再解密資料 資料庫管理 33 DBMS的分類 ☼依據所使用的資料模型去分類: ♦ 傳統的:關聯式、階層式、網路式 ♦ 新興的:物件導向式、物件關聯式 ☼其他分類準則: ♦ 單使用者(通常是使用個人電腦)vs. 多使用 者(大多數的DBMS都是) ♦ 集中式(使用儲存在單一電腦上的單一資料 庫)vs. 分散式(使用多電腦和多資料庫) ♦ 依據成本:免費的或商業產品 ♦ 依據用途:通用或特殊用途 資料庫管理 34 常見的資料模型(data model) ☼網狀式模型(Network Model) ☼階層式模型(Hierarchical Model) ☼關聯式模型(Relational Model) ☼物件導向式模型(Object-Oriented Model) ☼物件關聯式模型(Object-Relational Model) ☼XML模型(eXtended Markup Language Model) 資料庫管理 35 常見的DBMSs ☼商業軟體 ♦ ♦ ♦ ♦ ♦ ♦ Oracle Sybase Ingres Informix DB2 MS. SQL Server ☼免費軟體 ♦ MySQL ♦ PostgreSQL 資料庫管理 36