信息管理系統(tǒng)(數(shù)據(jù)庫(kù))
時(shí)間:2022-12-02 04:30:01 | 來源:信息時(shí)代
時(shí)間:2022-12-02 04:30:01 來源:信息時(shí)代
信息管理系統(tǒng) : IBM公司研制的通用層次數(shù)據(jù)庫(kù)管理系統(tǒng)。由North American Rockwell公司和IBM公司聯(lián)合設(shè)計(jì)的 GUAM(Generalized Update Access Method)和RATS(Response And Terminal System)演變而來。
1968年底IBM公司推出了IMS-1,它支持HSAM和HISAM存儲(chǔ)結(jié)構(gòu);1971年3月,IBM公司又推出IMS-2,它在IMS-1的基礎(chǔ)上增加了HDAM和HIDAM存儲(chǔ)結(jié)構(gòu)和邏輯數(shù)據(jù)庫(kù); 1974年,推出了在OSNS下運(yùn)行的IMS/VS,它增加了批處理檢查點(diǎn)、重啟動(dòng)、并發(fā)操作以及輔助索引等功能。
IMS采用層次數(shù)據(jù)模型,有兩個(gè)可用版本: 一個(gè)是僅含數(shù)據(jù)庫(kù)的版本,一個(gè)是數(shù)據(jù)庫(kù)/數(shù)據(jù)通信版本。前者提供了運(yùn)行批處理應(yīng)用程序的功能,后者除提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)處理功能之外還提供了數(shù)據(jù)通信功能。IMS是以DL/1語(yǔ)言為核心的宿主語(yǔ)言系統(tǒng),允許使用的宿主語(yǔ)言有COBOL,PL/1,IBM360/370匯編語(yǔ)言等。用戶把DL/1語(yǔ)言嵌入到某種宿主語(yǔ)言中,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的存取; 用戶通過高級(jí)語(yǔ)言編程接口(HLPI)和調(diào)用(CALL)方式使用DL/1接口,可在批處理、聯(lián)機(jī)和多分區(qū)(MPS)批處理環(huán)境下運(yùn)行。IMS系統(tǒng)是一個(gè)三級(jí)結(jié)構(gòu)的層次數(shù)據(jù)庫(kù)管理系統(tǒng),其結(jié)構(gòu)如圖1所示。
圖1 IMS的三級(jí)結(jié)構(gòu)
在IMS中,應(yīng)用程序由宿主語(yǔ)言和DL/1語(yǔ)言寫成,它通過I/O區(qū)來完成和數(shù)據(jù)庫(kù)的數(shù)據(jù)交互。
程序說明塊(PSB)是用戶使用的數(shù)據(jù)的邏輯結(jié)構(gòu)描述,它是一組程序通信塊(PCB)的集合,PSB和PCB都是用匯編語(yǔ)言宏語(yǔ)句編寫的控制塊。PSB用于描述每個(gè)應(yīng)用程序的數(shù)據(jù)結(jié)構(gòu)和邏輯報(bào)文目的地(destinations),指出應(yīng)用程序所能處理的數(shù)據(jù)庫(kù)片段。每個(gè)應(yīng)用程序至少有一個(gè)PSB,一個(gè)聯(lián)機(jī)程序可以使用一個(gè)以上的PSB,一個(gè)PSB可以為一個(gè)以上的應(yīng)用程序使用。IMS中有兩種類型的PCB,一種是用于數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)程序說明塊(DBPCB),一種是用于數(shù)據(jù)通信的數(shù)據(jù)通信說明塊(DCPCB)。DBPCB用于描述用戶數(shù)據(jù)庫(kù)視圖,它是物理或邏輯數(shù)據(jù)庫(kù)的層次結(jié)構(gòu)的子結(jié)構(gòu),用戶將要處理的每個(gè)層次數(shù)據(jù)結(jié)構(gòu)都具有一個(gè)用于描述它的DBPCB;而DCPCB則用于描述報(bào)文處理和批處理中報(bào)文的源和目的地,它指出了邏輯終端的名字及其他情況。
物理數(shù)據(jù)庫(kù)描述(database description,DBD)用以描述數(shù)據(jù)邏輯結(jié)構(gòu)及其物理存儲(chǔ)組織方式,它記錄了數(shù)據(jù)庫(kù)層次結(jié)構(gòu)、文件組織、存放數(shù)據(jù)庫(kù)的設(shè)備及邏輯聯(lián)系等內(nèi)容,這些邏輯聯(lián)系可以是同一物理數(shù)據(jù)庫(kù)內(nèi)部的聯(lián)系,也可以是不同物理數(shù)據(jù)庫(kù)之間的聯(lián)系。IMS數(shù)據(jù)庫(kù)是若干物理數(shù)據(jù)庫(kù)的集合,用于實(shí)際存儲(chǔ)數(shù)據(jù)及其聯(lián)系。上述各部分均在IMS控制程序的控制下工作。
IMS控制程序即IMS數(shù)據(jù)庫(kù)管理系統(tǒng),它的核心是一個(gè)DB/DC(數(shù)據(jù)庫(kù)/數(shù)據(jù)通信)系統(tǒng),負(fù)責(zé)初始化和控制主要的IMS功能,如DL/1、遠(yuǎn)程通信和報(bào)文調(diào)度等。其中,DB的基本功能是: 負(fù)責(zé)控制和管理IMS應(yīng)用程序、I/O工作區(qū)、應(yīng)用程序所使用的邏輯結(jié)構(gòu)描述及物理存儲(chǔ)組織描述等;DC部分則提供了用戶自定義報(bào)文和終端上的報(bào)文格式服務(wù),并控制程序發(fā)送和接受報(bào)文等。
在運(yùn)行應(yīng)用程序時(shí),首先要為準(zhǔn)備存取的每個(gè)數(shù)據(jù)庫(kù)片段型專門建立一個(gè)I/O區(qū),作為應(yīng)用程序和數(shù)據(jù)庫(kù)之間傳遞數(shù)據(jù)的工作區(qū),并將對(duì)應(yīng)的PSB及其所屬的PCB調(diào)入內(nèi)存,作為應(yīng)用程序和IMS之間的通信區(qū),然后,根據(jù)DBD中對(duì)數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)和物理存儲(chǔ)組織的描述,以及應(yīng)用程序中嵌入的DL/1數(shù)據(jù)操作語(yǔ)句,IMS控制程序通過底層存取方法來實(shí)現(xiàn)具體的數(shù)據(jù)存取操作。
IMS用片段(segment)來描述實(shí)體,用字段(field)來描述實(shí)體的屬性,若干字段組成一個(gè)片段,字段是數(shù)據(jù)不可分割的最小單位,片段是應(yīng)用程序?qū)?shù)據(jù)庫(kù)訪問的基本單位。在這種層次結(jié)構(gòu)中,根據(jù)片段型的一個(gè)值及其所有從屬片段值,以及它們之間的層次關(guān)系,構(gòu)成了一個(gè)物理數(shù)據(jù)庫(kù)記錄(PDBR)。一個(gè)物理數(shù)據(jù)庫(kù)指物理數(shù)據(jù)庫(kù)記錄型所對(duì)應(yīng)的所有物理數(shù)據(jù)庫(kù)記錄的有序集合。物理數(shù)據(jù)庫(kù)記錄型指IMS中一個(gè)或多個(gè)相關(guān)片段型構(gòu)成的層次序列結(jié)構(gòu),它是由相關(guān)片段型組成的一棵樹型結(jié)構(gòu)。IMS物理數(shù)據(jù)庫(kù)包括數(shù)據(jù)庫(kù)名、構(gòu)成該物理數(shù)據(jù)庫(kù)的片段型以及組成該片段型的字段等,它還描述了片段型的層次排列、數(shù)據(jù)存儲(chǔ)的方式,以及在這種存儲(chǔ)中數(shù)據(jù)之間存在的物理聯(lián)系等內(nèi)容。
IMS中數(shù)據(jù)存儲(chǔ)的基本單位是塊(block)。塊是磁盤存儲(chǔ)器存儲(chǔ)數(shù)據(jù)以及讀寫數(shù)據(jù)的基本單位,每個(gè)塊可以存儲(chǔ)很多字節(jié)的信息。磁盤存儲(chǔ)空間分為等長(zhǎng)的塊,若干個(gè)塊組成為一個(gè)數(shù)據(jù)集。一個(gè)塊也稱為一個(gè)存儲(chǔ)記錄,它可以存放多個(gè)片段值,一個(gè)片段值不能跨越兩個(gè)存儲(chǔ)記錄。片段值是IMS的專門術(shù)語(yǔ),IMS的專門術(shù)語(yǔ)與層次數(shù)據(jù)模型的術(shù)語(yǔ)之間的對(duì)應(yīng)關(guān)系見表1。
每一個(gè)片段值在存儲(chǔ)組織中分為系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù)兩個(gè)部分。系統(tǒng)數(shù)據(jù)稱為數(shù)據(jù)的前綴(prefix),前綴包括片段鍵、刪除標(biāo)志和指針。片段鍵是IMS為數(shù)據(jù)庫(kù)模式中的每個(gè)片段型按照前序遍歷規(guī)則規(guī)定的一個(gè)鍵,作為系統(tǒng)識(shí)別片段型的一種內(nèi)部編碼。圖2中片段型DEPT、COURSE、TEACHER的片段鍵分別為1、2和3。
表1 IMS術(shù)語(yǔ)和層次數(shù)據(jù)模型術(shù)語(yǔ)之間的對(duì)應(yīng)
層次數(shù)據(jù)模型術(shù)語(yǔ) | IMS術(shù)語(yǔ) |
記錄型 | 片段型 |
記錄 | 片段(值) |
數(shù)據(jù)域 | 域 |
健 | 順序域 |
層次模式 | 物理數(shù)據(jù)庫(kù)記錄型 |
外模式 | 邏輯數(shù)據(jù)庫(kù)記錄型 |
圖2 片段型示例
物理數(shù)據(jù)庫(kù)記錄型的一個(gè)根片段值及其所有后裔片段值構(gòu)成了該物理數(shù)據(jù)庫(kù)記錄型的一個(gè)值,稱之為一個(gè)數(shù)據(jù)庫(kù)記錄或?qū)嵗D3是教學(xué)數(shù)據(jù)庫(kù)物理數(shù)據(jù)庫(kù)記錄型的一個(gè)實(shí)例。
圖3 片段示例
與物理數(shù)據(jù)庫(kù)相對(duì)應(yīng)的另一個(gè)重要概念是邏輯數(shù)據(jù)庫(kù),它是指邏輯數(shù)據(jù)庫(kù)記錄(LDBR)型所對(duì)應(yīng)的邏輯數(shù)據(jù)庫(kù)記錄值的集合。在IMS中,“邏輯數(shù)據(jù)庫(kù)”一詞有兩種不同的含義: 一種是局部邏輯概念,其中的LDBR型是片段型的層次排列,用于構(gòu)建用戶外視圖,即子模式,這種層次結(jié)構(gòu)是由PDBR型刪去部分片段型及其所有從屬所得的子集; 另一種是全局邏輯概念,是用邏輯聯(lián)系聯(lián)合一個(gè)或多個(gè)物理數(shù)據(jù)庫(kù)中的部分片段型而構(gòu)成的一個(gè)新的層次結(jié)構(gòu),為用戶提供了新的數(shù)據(jù)庫(kù)結(jié)構(gòu)視圖。與定義物理數(shù)據(jù)庫(kù)不同,定義邏輯數(shù)據(jù)庫(kù)時(shí)是利用已定義好的物理數(shù)據(jù)庫(kù),所以,在邏輯數(shù)據(jù)庫(kù)定義中僅定義數(shù)據(jù)結(jié)構(gòu),不需要定義其存取方法。這種形式的邏輯數(shù)據(jù)庫(kù)主要是為了解決層次數(shù)據(jù)庫(kù)的數(shù)據(jù)冗余問題和處理實(shí)體間的多對(duì)多聯(lián)系,屬于模式的范疇。由上可知,IMS提供了結(jié)構(gòu)上的分離,因而整個(gè)系統(tǒng)具有一定的數(shù)據(jù)獨(dú)立性。
IMS的數(shù)據(jù)庫(kù)語(yǔ)言由數(shù)據(jù)定義語(yǔ)言(DDL)和數(shù)據(jù)操縱語(yǔ)言(DML)組成,其中,DDL用于定義數(shù)據(jù)庫(kù)的各種邏輯結(jié)構(gòu)和物理結(jié)構(gòu),如樹型、片段型、字段型等;DML用于提供作用于各種數(shù)據(jù)結(jié)構(gòu)之上的數(shù)據(jù)操作,它還包含了相應(yīng)的數(shù)據(jù)控制和保護(hù)功能。
為了對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)提供一定的數(shù)據(jù)保護(hù),IMS在存取控制、數(shù)據(jù)完整性控制以及并發(fā)控制方面均采取了一些措施。在存取控制方面,IMS要求應(yīng)用程序在對(duì)數(shù)據(jù)庫(kù)操作時(shí)必須通過PCB,PCB提供如下兩級(jí)控制方法: 一是應(yīng)用程序不能存取數(shù)據(jù)庫(kù)中的非感知段(即未包含在PCB中的片段),但是要注意的是,若祖先片段被刪除,則其下屬片段不管是被感知還是未感知均要被刪掉; 二是在PCB中對(duì)感知的段可定義的操作時(shí),用戶的操作必須滿足PCB所規(guī)定的處理方式。此外,在以終端方式操作數(shù)據(jù)庫(kù)時(shí),還可通過規(guī)定某些終端在請(qǐng)求應(yīng)用程序和系統(tǒng)命令時(shí)必須提供口令等方式來進(jìn)行訪問控制。在完整性控制方面,IMS中規(guī)定: 如果在DBD中設(shè)定的片段的排序鍵是唯一的,則系統(tǒng)保證在一個(gè)雙親值下該片段沒有兩個(gè)片段值具有相同的排序鍵值; IMS數(shù)據(jù)庫(kù)的層次結(jié)構(gòu)本身就是數(shù)據(jù)完整性的一種約束,例如,它約定每一個(gè)下屬片段值只有在雙親片段存在時(shí)才能插入數(shù)據(jù)庫(kù)。在并發(fā)控制上,IMS規(guī)定: 如果某用戶對(duì)一片段執(zhí)行GH類操作(檢索一個(gè)片段以用于刪除或更新),則該片段值在此操作期間就會(huì)被加上一個(gè)專用鎖而不能被共享,當(dāng)該片段的修改操作完成后或該用戶又對(duì)其他片段進(jìn)行查找,該片段的專用封鎖就會(huì)立即解除。通過在數(shù)據(jù)庫(kù)定義和系統(tǒng)內(nèi)部規(guī)定中采用以上各種措施,IMS為數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全性、完整性和一致性提供了一定的保障。
IMS是IBM公司最早的事務(wù)和層次數(shù)據(jù)庫(kù)管理系統(tǒng),產(chǎn)生于20世紀(jì)60年代末,如今已經(jīng)發(fā)展到IMS V9,是所有的數(shù)據(jù)庫(kù)管理系統(tǒng)中用得最多和最早商品化的系統(tǒng)之一,它曾在我國(guó)第三次人口普查、工業(yè)普查及其他一些領(lǐng)域中發(fā)揮過巨大的作用。目前,這個(gè)具有幾十年歷史的數(shù)據(jù)庫(kù)產(chǎn)品仍然應(yīng)用于銀行業(yè)等領(lǐng)域的一些系統(tǒng)中。