複製鏈接
請複製以下鏈接發送給好友

存儲記錄

鎖定
存儲數據可以是存儲文件、頁、記錄和數據項。存儲文件是存儲數據的基本單位,一個數據庫就是一個或多個存儲文件的集合。
可以將頁看成為一個“槽”集合,每一槽包含一個存儲記錄。於是記錄可以由對偶來標識,其中pid和slot#分別為頁標識符(可能是文件中的頁號)和頁中槽的序號。
中文名
存儲記錄
外文名
stored record
應用領域
計算機等
格    式
定位式、關係式、索引式等
結構形式
對定長記錄和對變長記錄
設    備
內存儲器、外存儲器和移動存儲器

存儲記錄存儲記錄間的結構形式

存儲記錄對定長記錄

若記錄都是一樣長的,則頁的槽也是統一的,此時存儲記錄在頁中的安置可以有下列幾種方式。 [1] 
(1)記錄鄰接。以ACDD方式安置記錄,N個記錄佔據頁的連續N個槽。
這種結構的維護原則是,要插入一個記錄就插到一個空槽中,刪除一個記錄就留下一個空槽。這樣要考慮兩個問題:第一,查找機制必須能識別一個空槽,從而允許記錄佔有的槽不一定連續,否則,每當刪除一個記錄,其後的所有記錄都得向前移一個槽,或者按下面第二點所述處理;第二,記錄要能夠是無序的,如此,則刪除一個記錄時,不必移動其後所有記錄,而只需將最後一個記錄移到此空槽即可,否則必須重新排序。所以這種結構適合於靜態、連續查找的文件,對動態維護不利。
(2)記錄鏈接。解決上述兩個問題的一種方法就是用指針鏈接代替記錄的鄰接,即以PCDD方式安置記錄。這樣,動態維護頁的記錄很方便,插入或刪除記錄時,只需適當維護鏈的結構即可。但它的時間(搜索鏈)代價與空間(鏈的指針)代價都要高些。
(3)槽陣列。建立一個槽的數據指示陣列,陣列的每一項包含對應槽所存儲的記錄號或記錄的標識符(rid),或者為“0”,標明該槽為空。這種結構與上面的記錄鏈的空間開銷一樣,但查找與維護的性能更高。它的數據安置方式是PCDI,故其優缺點也一樣。

存儲記錄對變長記錄

若記錄的長度是變化的,那麼頁就不能靜態地劃分成固定長度的槽,而必須在記錄插入時動態地劃分合適長度的槽來存放相應記錄。關鍵是如何管理頁中的自由空間,當一個記錄被刪除,如何處理留下的“空洞”。變長記錄的頁結構典型地有下列幾種形式。
(1)記錄槽鏈接。這是組織變長記錄的一種常用方法,所有的記錄槽組成一個鏈,空槽組成另一個鏈。每頁有一“頁頭”(page header),它包含兩個鏈的鏈頭指針,也許還有記錄的個數等信息。
每當插人記錄R,時,在空槽鏈上找一個或從自由空區劃出一個合適的空槽,將其放入,並在“槽頭”記錄下它的長度li,再維護好兩個鏈的結構。刪除記錄時,將該空槽自記錄鏈中移入空槽鏈,並將相鄰空槽合併成更大的槽,以免出現更多的無法使用的小“空洞”,從而提高空間的利用率。
這種結構的優缺點就是PCDD方式所有的,前面已談到,這裏不再重複。必須要注意的是要小心管理自由空間,儘量不要出現無用的“空洞”(完全不出現是很難的)。
(2)槽目錄。這是組織變長記錄最靈活的一種方法。每頁有一個槽目錄,每一目錄項是一個二元組,l為該槽中記錄的長度,pt為指向該記錄的指針,就是頁的數據區首址開始的位移量(字節數)。
當刪除一個記錄時,則置其槽目錄項中的pt(即記錄的位移量)為負。當插入一個記錄時,將其存入合適的空槽或自由空間區的適當區域中,在槽目錄中建立一槽目錄項。若要插入的記錄太長,連自由空間都容納不下,但整個頁的剩餘空間是足夠大的(即在頁的數據區域中包含了大量的小“空洞”),則必須整理頁空問,使空區都並人自由空間區,並相應地維護槽目錄。注意,刪除記錄時,不能隨意刪除槽目錄中的相應項,因為那樣會改變一些槽的編號,而這個槽(目錄)號是記錄的標識符Rid(F#,P#,S#)即(文件號,頁號,槽號)的組成部分。

存儲記錄存儲記錄格式

有三種類型的記錄:邏輯記錄、存儲記錄、物理記錄,從數據抽象的角度來看,它們分屬不同的抽象層,而邏輯記錄又進一步分為“外部記錄”(外部或子模式)和“概念記錄”(概念模式)兩層。
一個存儲記錄是對應一個或多個概念記錄的存儲數據項及實現其存儲管理的有關信息的集合。下面介紹幾種典型的存儲記錄結構,它們有不同的格式,需要不同的管理信息。

存儲記錄定位式

顧名思義,定位式(position mode)就是固定各域(或存儲數據項)的位置。當然這也就固定了各域的長度和域的個數,所以它比較適合於定長記錄的存儲。在一個域的存儲數據項的長度變化不太大,且知道其最大值的情況下,也可用於存儲變長域(因而變長記錄)。
它採用ACDD數據安置方式,其記錄頭與記錄尾,就是有關管理的信息,包括記錄間的連接信息,如指針等。域的長度為對應數據項所取值的最大者。當數據項值被存儲時,以左或右對齊,不足的未用空間以空格填充。這種格式最簡單,很常用。但它很可能浪費大量存儲空間,尤其對於很大的數據庫,這個代價是很大的。

存儲記錄關係式

關係式(relational mode)使用一專門字符(但必須是合法的)作域的界限符,域的相對排序固定,例如,字符“$”就是界限符。顯然,這種格式支持變長記錄的存儲,它可消除用作填充的空格串和Null值(也是空格字符串),從而節省了空間。

存儲記錄索引式

索引式(indexed mode)一般在記錄的開端使用一個索引(或指針陣列),其中每一指針指明一個數據項值在記錄中的位移量,各指針與數據項值在記錄中的排序是相對的。與關係式一樣,它支持變長記錄且消除了無用(包括填充用的和Null值的)空間,但它比關係式花費空間略多,因為指針可能比一個字符大。然而,它可以進行域的直接存取,關係式卻不能。

存儲記錄分離式

一個記錄的變長是由於包含了變長的數據項,一般一個記錄型中變長數據項的個數總是少數。分離式(separated mode)存儲記錄結構的基本思想就將變長的域分離出來單獨存儲,再和主記錄以指針相連。

存儲記錄標記式

標記式(1abeled mode)存儲記錄結構在每_數據項值之前綴以指明該數據項型的標號,它們類似於關係式中的界限符的作用,但對各域是唯一的,即還具有數據項或域型的標識作用,且是在域的前頭(而不是末尾)。標記式結構有三個優點,一是域值的順序可以是任意的;二是可以方便地處理“重複組”數據項(使用同一標識符即可);三是省空間,對無值(即Null值)的域不需要任何空間,甚至界限符或指針都不要。其缺點是不能直接存取一個域值;若記錄域的個數較多時,則標號會比界限符更大。

存儲記錄存儲記錄設計

存儲記錄結構設計包括存儲記錄本身的內容與格式的確定和記錄之間結構(聯繫)的確定,而後者實際就是存儲文件結構的選擇。存儲文件結構在一定程度上決定着存儲記錄的格式,如記錄是變長還是定長,是否有鏈接指針等。所以應該先選擇存儲文件結構。
存儲文件自身的結構分為定長和變長記錄兩種形式,而文件內存儲記錄的組織結構可以有:堆文件(地址鄰接、數據直接定位);有序文件(記錄按主關鍵字值排序,其餘同堆文件);索引文件,包括B一樹、Bt樹(地址鄰接、數據指針定位);Hash文件(地址連接,數據指針定位);鏈接文件(指針連接,數據直接定位)等。由此,可以看出,存儲文件結構不但在一定程度上決定了存儲記錄的格式,而且也決定了後面存取方法的選擇。
一個存儲記錄格式通常由三部分組成:記錄管理開銷、各數據項及連接指針。記錄管理開銷包括控制位、記錄長度等信息,其具體內容與存儲格式有關。各數據項及其類型、長度等在邏輯結構設計期間已經確定,問題是它們如何以符合系統硬軟件實現的方式來存儲。這些方式可以是定位式、關係式、索引式、標誌式等。指針可以有多種形式,可以是絕對地址,也可以是相對地址,即關於一共同基的相對位移等。
無論是存儲文件結構還是存儲記錄結構的確定,要考慮的一方面是應用語義,各類主要應用對數據庫的存取需求;另一方面是所選定的目標DBMS提供的數據存儲的功能特性,即存儲結構方式。設計者的決策就在於這兩方面的最佳匹配,即依據用户的數據存取需求選擇最合適的存儲數據結構。

存儲記錄存儲記錄的安置

如何將各文件的存儲記錄在物理設備上實現,物理設計者要做兩方面的決策:一是以整個記錄為單位來存放還是分割成片來分別存放,即記錄的分割問題;二是一個文件整體地存放於連續物理區域,還是將那些緊密關聯的不同文件的記錄集羣在一起來存放於連續的物理區域,即記錄的集羣問題。

存儲記錄記錄的分割

存儲記錄的分割其實也屬於存儲記錄格式設計範疇,只是從其目的來看,更偏重於存儲記錄的安置。分割的理由是:
(1)存在80一20規律。即80%的數據存取常常集中在約佔20%的那些活躍數據項上。
(2)支持用户視圖或子模式的高效實現。
(3)支持分佈式數據庫設計。
(4)有利於數據安全和可靠性。
分割的方式一般有兩種:
  1. 水平分割。這實際上是文件的分裂。這種形式特別有利於關係數據庫,因為它典型地按關鍵字值來劃分記錄,這實質上等於已進行了查詢的預處理。
  2. 垂直分割。這典型地將存儲記錄分成兩片,其主片為20%的那些活躍數據項,次片為剩餘80%的那些數據項。它們分別存於不同的位置,使主片能得以更快速地存取,從而提高數據庫的性能。

存儲記錄記錄集羣

記錄集羣就是將存儲記錄或片段(同一記錄型或不同記錄型的)按某種標準進行排列和安置,使得具有共同或相似性(相對給定的標準而言)的記錄組合成羣(cluster)而存放在一塊(或相連的幾塊)內。其目的是最大地發揮連續存儲的優越性和最小化存取時間。例如,在商場管理中,一個商場有數以千計的商品種類,而每一類又有數以百計的品種。假設電器類商品有900種,在極端情況下,它們的記錄分佈存儲於900個不同的物理塊上。這樣,要查詢所有電器商品信息則要900次I/(),每次的磁頭要重新定位。若將其集羣存放在連續的90塊(設組塊因子為10)上,則查詢所有電器商品的時問遠不到前者的十分之一。
集羣的方法可以多種多樣,典型的有:
  • 按屬性集羣。即對於某(一或多)個屬性一稱為“集羣關鍵字”(cluster key),讓具有相同值的記錄(或元組)集中在一起存放。這是單個文件的記錄集羣。
  • 基於公共屬性集羣。對兩個或多個具有公共屬性的不同記錄類型(它們必然是緊密關聯且往往被同時存取),其公共屬性(也是上述的集羣關鍵字)值相同的不同類型的記錄(或元組)集羣在一起存放。顯然,這特別有利於關係的連接運算,這種集羣實際已進行了連接的預運算。
  • 基於存取路徑集羣。針對主要的數據庫應用,其主存取路徑上的相關記錄經常頻繁地被一起存取,故將其集羣在一起存放。
集羣對關係數據庫非常有用,所以像Oracle數據庫就提供了CLUSTER相關的子句。當經由集羣關鍵字查詢或連接查詢是主要應用,而與集羣關鍵字無關的其他存取很少或不需要時,使用集羣就很有好處,尤其是當查詢中含有關於集羣關鍵字的ORDER BY、GROUP BY、UNI()N、DISTINCT等成分時,集羣的受益會格外突出。
在層次數據庫中,一般將樹結構的片段按“由上到下,由左到右”的層次順序存放,經集羣,則可將樹中存取路徑上某些相連記錄片集成在一起存放。
在網狀數據庫中,記錄集羣就更直接明確.以C()DASYI。模型為例,它用DSDI。語言的存儲記錄説明來定位記錄。記錄的定位就包含記錄的集羣,它由DSDL的PI,AYCEMENT子句控制。其定位形式有三種:
  • CALC。這就是Hashing定位,它經Hash函數計算後,由記錄關鍵字值產生一個存儲地址。相同或相近關鍵字值的記錄必然集成在一起。
  • CI.USTERED VIA SET。它把一個系中的成員記錄值集羣在一起,且往往就在系主記錄值的附近。
  • SEQUENTIAL。把一個記錄型的所有記錄值按主關鍵字值順序存儲。
必須指出的是,記錄集羣往往總是有利於某些應用,並非對所有的應用有利,而且其維護開銷是相當大的。當建立集羣時,原有的索引可能變成無效(集羣使存儲記錄的物理位置變化),必須重建索引。當多種類型的記錄集羣時,對每種類型的記錄的順序掃描和插入、刪除、修改操作都會變慢。尤其是集羣關鍵字值變更時,存儲記錄要移動,所以集羣關鍵字值應相對穩定。總之,記錄集羣適用於超大型數據庫,對一般數據庫要慎用。

存儲記錄存儲記錄設備

存儲記錄設備包括內存儲器、外存儲器光存儲設備 [2] 

存儲記錄內存儲器

內存儲器又稱主存,用於存放可由CPU直接讀寫的程序和數據。按讀/寫方式的不同可分為隨機讀/寫存儲器RAM和只讀存儲器ROM,通常均由半導體制成。
隨機讀/寫存儲器RAM(Randm Access Memory)的特點是可讀可寫,一般存放正在執行的程序和處理的數據。如關機或斷電.則RAM中存儲的數據將會全部丟失。因此,為了妥善保存內存中的數據.需要將CPU處理後的結果及時存放到外存儲器中。
只讀存儲器ROM(Read Only Memory)的特點是隻能讀出不能寫入新的信息,通常存儲一些不能改寫的管理機器本身的監控程序和其他基本的服務程序。ROM能長期保存信息,關機或斷電後,存儲的數據不會丟失。

存儲記錄外存儲器

外存儲器又稱輔助存儲器,能長期存放暫時不用的程序和數據。外存不能由CPU直接讀/寫,而是與內存交換數據。與內存相比,外存具有存儲容量大,可靠性高,價格低,能長期保存數據的優點,其缺點是數據讀/寫速度較慢。
常用的外存有磁帶磁盤(包括軟盤和硬盤)和光盤等。
軟盤驅動器及軟盤
軟盤驅動器是微型計算機系統中的一個重要部件。軟驅的規格類型有3.5英寸、2.25英寸兩種,分別用於讀寫3.5英寸/1.44MB軟盤和2.25英寸/1.2MB軟盤。與2.25英寸軟盤相比,3.5英寸/1.44MB軟盤的體積小、容量大、易攜帶,因此在現行品牌機的標準配置中,通常只配有3.5英寸/1.44MB軟驅,5.25英寸軟驅已幾乎被淘汰。3.5英寸軟驅的數據傳輸率為500KB/S。主軸為轉速300rpm或是360rpm。道對道存取時間為3ms,平均存取時間為90ms左右。
軟盤驅動器的尺寸相應,軟盤也分為5.25英寸和3.5英寸兩種。1.44MB的3.5英寸軟盤每面是80個磁道,有18個扇區
微機系統中使用的硬盤均為温盤(Winchester),由封裝在鑄鋁膠體中的頭盤組件(Head Disk Assembly)與控制電路印刷電路板組件PCBA(Print Circuit Board Assembly)組成。温盤是一種可移動頭固定盤片的磁盤存儲器,磁頭定位的驅動方式主要有步進電機驅動(已淘汰)和音圈電機驅動兩種。
隨着移動辦公的風靡,對移動存儲的需求也越來越大,使用USB接口移動硬盤.因其具備與台式硬盤一樣的大容量、體積小、攜帶方便等眾多優點,已逐漸成為移動存儲所選用的產品。其常見的容量為4GB.40GB,60GB,80GB等,符合USB2.0標準。
參考資料
  • 1.    劉雲生編著.數據庫系統分析與實現:清華大學出版社,2009.06
  • 2.    顧兵,程海英,吳奕編.現代辦公自動化:中山大學出版社,2006.2,