數據庫的一些概念

一、數據庫(Database)

   數據庫是一個數據的集合,不僅是指物理上的數據,也指物理、存儲及進程對象的一個組合。Oracle是關係型數據庫管理系統(RDBMS)。

二、實例(Instance)

   數據庫實例(也稱爲服務器Server)就是用來訪問一個數據庫文件集的一個存儲結構及後臺進程的集合。它使一個單獨的數據庫可以被多個實例訪問(也就是ORACLE並行服務器-- OPS)。實例和數據庫的關係如下:
----------------------------------------------------------------------------
|   實例1  SGA+進程  |  實例2   SGA+進程  |
----------------------------------------------------------------------------
|       數據庫(一組數據文件)        |  
----------------------------------------------------------------------------

   決定實例的組成及大小的參數存儲在init<sid>.ora文件中。

三、內部結構

表、列、數據類型(Table、Column、Datatype):Oracle中是以表的形式存儲數據的,它包含若干個列;列是表的屬性的描述;列由數據類型和長度組成;Oracle中定義的數據類型主要有CHAR、VARCHAR2、NUMBER、DATE、LONG、LOB、BFILE等
約束條件(Constraint) :表中以及表間可以存在一些數據上的邏輯關係、限制,也就是約束。Oracle中的約束主要有主鍵(PK)、外鍵(FK)、檢查(CHECK)、唯一性(UNIQUE)等幾種;擁有約束的表中每條數據均必須符合約束條件。
抽象數據類型(Abstract Datatype):可以利用CREATE TYPE命令創建自定義的抽象數據類型。
分區(Partition):可以利用分區將大表分隔成若干個小的存儲單元,邏輯上仍然是一個完整的獨立單一實體,以減小訪問時數據的查找量,提高訪問、存儲效率。
用戶(User):用戶不是一個物理結構,但是它與數據庫的對象擁有非常重要的關係--用戶擁有數據庫對象,以及對象的使用權。
模式(Schema):用戶帳號擁有的對象集合稱爲模式。
索引(Index):數據庫中每行記錄的物理位置並不重要,Oracle爲每條記錄用一個ROWID來標識,ROWID記錄了記錄的準確位置。索引是供用戶快速查找到記錄的數據庫結構。ORACLE8中有簇索引、表索引、位圖索引三種索引形式。
簇(Cluster):經常被頻繁引用的表可以在物理位置上被存儲在一起,簇就是用來管理這種集中存儲的。集中存儲可以減少I/O次數,以達到性能的改善和提高。
散列簇(Hash Cluster):簇的另一種形式,這種簇中的數據要通過散列函數計算得出物理位置,它可以極大程度的提高等值查詢的效率。
視圖(View):可以理解爲固化的查詢或者沒有數據存儲的表,它是一組表的查詢結果集合,對應用來說是獨立的結構,除沒有數據存儲以外,擁有和表同樣的屬性。
序列(Sequence):一個唯一數值的序列生成器,它每次被引用後,自動遞增。
過程、函數(Procedure、Function):編譯存儲在數據庫中的一個PL/SQL程序段,可以被引用。函數返回調用者一個值,過程則不返回任何值。
包(Package):函數、過程的集合。包中可以包含不同的元素,可以是公有的也可以是私有的。
觸發器(Trigger):觸發器是一些過程或PL/SQL程序段,當一個特定的事件發生時,就會自動引發這些過程的執行。
同義詞(Synonyms):在分佈式數據庫環境中,要完全識別一個對象,必須指出對象的主機、屬主等信息,爲了簡化這一過程,可以對這些對象建立同義詞,引用這些同義詞時系統自動轉義成對原始對象的引用。
權限、角色(Privilege、Role):爲了引用數據庫的對象,必須擁有這些對象的相應權限,角色是這些權限的集合,例如--DBA就是一個角色,它包括一組數據庫權限。
數據庫鏈路(Database Link):引用其他數據庫的數據時,需要指明詳細路徑,鏈路就是詳細路徑的識別名。  
四、內部存儲結構

系統全局區(System Global Area,SGA):包括--數據塊緩衝存儲區(Data Block Buffer Area)、字典緩衝區(Dictionary Cache)、日誌緩衝區(Redo Log Buffer)、SQL共享池(Shared SQL Pool)四部分。
正文區間(Context Area):每個用戶都擁有自己的私有SQL區域,保存相關的SQL語句,直到語句相關的光標關閉爲止。
程序全局區(Program Global Area,PGA):它是存儲區中被單個用戶進程所使用的區域,PGA不能共享。
五、後臺進程(BACKGROUND PROCESSES)

系統監控(SMON):用以取消系統不再需要的事物對象以及清理數據庫。
進程監控(PMON):清除用戶失敗後的後臺進程,並釋放進程所佔用的資源。
數據庫寫入進程(DBWR):管理數據塊緩衝區及字典緩衝區的內容。
日誌寫入進程(LGWR):將日誌緩衝區的內容寫到日誌文件中。
檢查點進程(CKPT):用來減少實例恢復所需的時間。
歸檔進程(ARCH):負責在歸檔模式下,將日誌備份到相關位置。
RECO進程:用於分佈式數據庫中的失敗處理。
快照進程(SNPn):用來管理快照的刷新。
後臺進程(LCKn):當ORACLE以並行服務器方式進行時,後臺進程用來解決內部實例的鎖定問題。
Dnnn進程:在MTS模式下,用來減少多重連接所需的信息源。
服務器進程Sever(Snnn):用來管理需要專用服務器的數據庫的連接。
六、外部結構

   包括:日誌文件、控制文件、跟蹤文件與修改日誌。

七、一個簡單數據庫的組成

一個或多個數據文件
一個或多個控制文件
兩個或多個聯機日誌文件
多個用戶/模式
一個或多個回滾段
一個或多個表空間
數據字典表
用戶對象(表、視圖、索引等)
一個SGA區
SMON進程
PMON進程
DBWR進程
LGWR進程
與用戶進程相關的PGA區


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章