(4)表的互斥和共享打開的表要么互斥(Exclusive)使用,要么共享(Shared)使用。如果互斥使用,那么在關(guān)閉該表之前任何其他人都不得再重新打開該表。缺省狀態(tài)下。FoxPro打開的表是互斥使用的。要命名打開的表能共享使用,必須加載DOS SHARE程序。工作在不需SHARE的網(wǎng)絡(luò)上則不用加載。同時要在Command窗口中敲入SET EXCLUSIVE OFF,那么后續(xù)打開的所有表都能共享使用,已經(jīng)打開的表依然互斥使用。在USE命令后加入SHARED,使用戶能夠替換對指定文件的EXCLUSIVE設(shè)置。也可從View窗口中打開表用于共享使用,這可以取消File/open對話框中Exclusive復(fù)選框的標(biāo)記而實現(xiàn)。某些FoxPro命令需要互斥使用表,如DELETE TAG,INDEX ON…TAG,INSERT [BLANK],MODIFY STRUCTURE,PACK,REINDEX,ZAP等。在表被打開用于共享之后,必須處理記錄爭用的問題。但目前讀者還只需要知道在交互地增加和修改的據(jù)時,F(xiàn)oxPro為用戶處理大多數(shù)這種問題。注意:如果用戶保證EXCLUSIVE已關(guān)閉(SET OFF),但狀態(tài)欄仍舊顯示表是EXCLUˉSIVE的話,那么或許SHARE程序沒有加載,或許表是在EXCLUSIVE打開(SET ON)狀態(tài)時打開的,也可能所使用的表剛剛創(chuàng)建。用戶創(chuàng)建表打開時是互斥使用的,直到關(guān)閉該表;但下一次打開該表時,可使表用于共享。
(5)Browse窗口Browse窗口是FoxPro功能、最富生機的特征之一。在Browse窗口中不僅可以瀏覽表的內(nèi)容,還可以向表中增加記錄、刪除記錄、修改字段等。進入Browse窗口有多種方法,既可從主菜單中Database/Browse進入,也可從View窗口中的Browse按鈕進入,還可以在查詢時進入。View窗口在FoxPro中是最有用的窗口之一。用戶應(yīng)在進入FoxPro后,就打開View窗口,這樣會給用戶帶來許多方便。事實上,F(xiàn)oxPro的所有表,都是以單獨的文件存放在磁盤中的,數(shù)據(jù)庫實質(zhì)上只是一個目錄名而已。FoxPro對文件的保護比較弱,有時拷貝表時,會丟失某些信息,以至于到另外一臺機器上不能打開,這時就應(yīng)重新拷貝,把所有相關(guān)的文件,如FPT、IDX等文件一并拷走。這樣數(shù)據(jù)庫才能在另外一臺機器上安全地運行。
3.使用FoxPro數(shù)據(jù)庫
(1)建立數(shù)據(jù)庫建立數(shù)據(jù)庫要決定需存儲在數(shù)據(jù)庫中的信息的結(jié)構(gòu),即數(shù)據(jù)庫的結(jié)構(gòu)。
(2)RQBE窗口盡管使用Browse可以瀏覽表,但畢竟只能做一些簡單的檢索,為此FoxPro提供了RQBE(Relational Query By Example)。RQBE是一種交互式工具,避免了寫復(fù)雜檢索程序的麻煩,可以很方便地檢索數(shù)據(jù)。RQBE的功能很強,RQBE是用戶和SQL SELECT命令間的接口,F(xiàn)oxˉPro支持SQL。另外,RQBE可以把語句保存在.QPR文件中。
(3)報表的設(shè)計與制作使用RQBE可制作出報表,還可以利用FoxPro功能強大的Report Writer來制作一張符合需要的報表。
4.創(chuàng)建應(yīng)用程序
(1)建立數(shù)據(jù)庫編寫數(shù)據(jù)庫應(yīng)用程序的第一步是確定該系統(tǒng)必須使用的數(shù)據(jù)庫文件和索引。
(2)菜單生成器FoxPro為用戶提供了很簡潔的豐富的菜單編程命令,但這些繁雜的命令很容易令人厭煩。如果使用菜單生成器,將會使構(gòu)造菜單系統(tǒng)變得容易許多。菜單生成器的啟動有兩種方式:
(1)通過在Command窗口鍵入Create menu[〈文件名〉],鍵入回車即可。
(2)通過系統(tǒng)菜單啟動。
(3)屏幕生成器大多的應(yīng)用程序都是圍繞著用戶界面屏幕來建立的。有些屏幕用來錄入或編輯數(shù)據(jù),有些屏幕用以顯示信息,有些屏幕用于表的維護等等。FoxPro的屏幕生成器就是用來創(chuàng)建大多數(shù)上述屏幕的工具。在各類界面設(shè)計中,輸入屏幕算是比較繁而且又很常用的界面屏幕了。
(4)項目管理器項目管理器主要有以下兩個作用:
①維護項目使用的所有文件。
②建立應(yīng)用程序項目管理器具有優(yōu)秀編程工具的特點,它為用戶做了許多工作,并且易于使用??梢酝ㄟ^選擇File New Project、New或在命令窗口鍵入Creat project命令來創(chuàng)建一個新的項目。然后使用Add按鈕開始創(chuàng)建該項目中的新文件或?qū)⒁延械奈募砑拥皆擁椖恐?。首先,將主文件添加到項目中。由此,項目管理器就可以沿著程序的?zhí)行步驟(即嵌入在文件中的函數(shù)和過程調(diào)用)來一步步跟蹤,直到找到當(dāng)前項目所需的所有文件為止。生成項目文件非常容易,在項目管理器窗口中按下Build按鈕,選擇Re-build project,Build Application或Build Executable選項。另外,項目管理器能方便的發(fā)現(xiàn)和修改編譯錯誤。應(yīng)該指出,一個項目并不一定要生成應(yīng)用程序;而一個完整的“應(yīng)用程序”可以包含若干個項目和若干個生成類。因此,邏輯上的解決辦法是將應(yīng)用程序拆成許多的項目,這就是應(yīng)用程序的分級設(shè)計方法。 來源:www.examda.com
十一、ORACLE 數(shù)據(jù)庫管理系統(tǒng)介紹
1.ORACLE的特點:
可移植性 ORACLE采用C語言開發(fā)而成,故產(chǎn)品與硬件和操作系統(tǒng)具有很強的獨立性。從大型機到微機上都可運行ORACLE的產(chǎn)品。可在UNIX、DOS、Windows等操作系統(tǒng)上運行。可兼容性 由于采用了國際標(biāo)準(zhǔn)的數(shù)據(jù)查詢語言SQL,與IBM的SQL/DS、DB2等均兼容。并提供讀取其它數(shù)據(jù)庫文件的間接方法??陕?lián)結(jié)性 對于不同通信協(xié)議,不同機型及不同操作系統(tǒng)組成的網(wǎng)絡(luò)也可以運行ORACLE數(shù)據(jù)庫產(chǎn)品。
2.ORACLE的總體結(jié)構(gòu)
(1)ORACLE的文件結(jié)構(gòu) 一個ORACLE數(shù)據(jù)庫系統(tǒng)包括以下5類文件:ORACLE RDBMS的代碼文件。數(shù)據(jù)文件 一個數(shù)據(jù)庫可有一個或多個數(shù)據(jù)文件,每個數(shù)據(jù)文件可以存有一個或多個表、視圖、索引等信息。日志文件 須有兩個或兩個以上,用來記錄所有數(shù)據(jù)庫的變化,用于數(shù)據(jù)庫的恢復(fù)。控制文件 可以有備份,采用多個備份控制文件的是為了防止控制文件的損壞。參數(shù)文件 含有數(shù)據(jù)庫例程起時所需的配置參數(shù)。
(2)ORACLE的內(nèi)存結(jié)構(gòu) 一個ORACLE例程擁有一個系統(tǒng)全程區(qū)(SGA)和一組程序全程區(qū)(PGA)。SGA(System Global Area)包括數(shù)據(jù)庫緩沖區(qū),日志緩沖區(qū)及共享區(qū)域。PGA(Program Global Area)是每一個Server進程有一個。一個Server進程起動時,就為其分配一個PGA區(qū),以存放數(shù)據(jù)及控制信息。
(3)ORACLE的進程結(jié)構(gòu)ORACLE包括三類進程:
①用戶進程 用來執(zhí)行用戶應(yīng)用程序的。
②服務(wù)進程 處理與之相連的一組用戶進程的請求。
③后臺進程 ORACLE為每一個數(shù)據(jù)庫例程創(chuàng)建一組后臺進程,它為所有的用戶進程服務(wù),其中包括:DBWR(Database Writer)進程,負(fù)責(zé)把已修改的數(shù)據(jù)塊從數(shù)據(jù)庫緩沖區(qū)寫到數(shù)據(jù)庫中。LGWR(Log Writer)進程,負(fù)責(zé)把日志從SGA中的緩沖區(qū)中寫到日志文件中。SMON(System Moniter)進程,該進程有規(guī)律地掃描SAG進程信息,注銷失敗的數(shù)據(jù)庫例程,回收不再使用的內(nèi)存空間。PMON(Process Moniter)進程,當(dāng)一用戶進程異常結(jié)束時,該進程負(fù)責(zé)恢復(fù)未完成的事務(wù),注銷失敗的用戶進程,釋放用戶進程占用的資源。ARCH(ARCHIVER)進程。每當(dāng)聯(lián)機日志文件寫滿時,該進程將其拷貝到歸檔存儲設(shè)備上。另外還包括分布式DB中事務(wù)恢復(fù)進程RECO和對服務(wù)進程與用戶進程進行匹配的Dnnn進程等。 來源:www.examda.com
3.ORACLE的邏輯結(jié)構(gòu)
構(gòu)成ORACLE的數(shù)據(jù)庫的邏輯結(jié)構(gòu)包括:
1)表空間
(2)5種類型的段(segment)
①數(shù)據(jù)段;
②索引段;
③滾回(rollbock)段;
④臨時段;
⑤自舉(bootstrap)段。段的分配單位叫范圍(Extent)表空間(Tablespace) 一個數(shù)據(jù)庫劃分成的若干邏輯部分稱為表空間。一個數(shù)據(jù)庫可以有一個或多個表空間,初始的表空間命名為SYSTEM,每一個邏輯表空間對應(yīng)于一個或多個物理文件。DBA使用表空間做以下工作:控制數(shù)據(jù)庫對象,如表、索引和臨時段的空間分配。為數(shù)據(jù)庫用戶設(shè)置空間配額。利用個別表空間的在線或離線,控制數(shù)據(jù)的可用性。后備或恢復(fù)數(shù)據(jù)。通過分配空間,以改進性能。在每個數(shù)據(jù)庫中都存在SYSTEM表空間,它在建立數(shù)據(jù)庫時自動建立。在該表空間中,包含數(shù)據(jù)庫的數(shù)據(jù)字典,其中存儲全部數(shù)據(jù)庫對象的名字和位置。SYSTEM表空間總是在線的,像其它表空間一樣,可以通過增加新的數(shù)據(jù)庫文件來擴大。一個表空間可包含許多表和索引。但一個表和索引不能跨越表空間,可跨越組成表空間的文件。在DB的打開的情況下,DBA利用ALTER TABLESP ACE語句,可以實施表空間的在線或離線。SYSTEM表空間必須在線。表空間離線有下列原因:一般為了使部分?jǐn)?shù)據(jù)庫不能使用,而允許正常存取數(shù)據(jù)庫其余部分。執(zhí)行表空間離線備份。一個離線的表空間,不能被應(yīng)用用戶讀或編輯??梢栽黾訑?shù)據(jù)文件擴大已有的表空間,也可增加新的表空間使數(shù)據(jù)庫容量增大,或分配空間給某個應(yīng)用。使用ALFER TABLESPACE ADD FILE語句將另一個數(shù)據(jù)文件加入到已存在表空間中。使用CREATE TABLESPACE語句可建立一個新的表空間。段(segment) 表空間中的全部數(shù)據(jù)存儲在以段劃分的數(shù)據(jù)庫空間中。一個段是分配給數(shù)據(jù)庫用于數(shù)據(jù)存儲的范圍的集合。數(shù)據(jù)可以是表、索引或RDBMS所需要的臨時數(shù)據(jù)。段是表空間的下一個邏輯存儲的級別。一個段不能跨越一個表空間,但可跨越表空間內(nèi)的文件。一個數(shù)據(jù)庫最多需要五種段類型:數(shù)據(jù)段 一個包含一個表(或聚集)的全部數(shù)據(jù),一個表(或聚集)總有一個單個數(shù)據(jù)段。索引段 一個索引段包含對一個表(或聚集)建立的一個索引的全部索引數(shù)據(jù)。一個表可以有一個、多個或者沒有索引段,取決于它所擁有的索引個數(shù)。一個聚集必須至少有一個索引段,即在聚集碼上建立聚集索引?;貪L段 每個DB有一個或多個回滾段。一個回滾段是DB的一部分,它記錄在某一情況下被撤消的動作?;貪L段用于事務(wù)控制和恢復(fù)。臨時段 在處理查詢時,ORACLE需要臨時工作空間,用于存儲語句處理的中間結(jié)果,這個區(qū)稱為臨時段。自舉段 自舉段在SYSTEM表空間中,在數(shù)據(jù)庫建立時建立。它包括數(shù)據(jù)字典定義,在數(shù)據(jù)庫打開時裝入。
4.用戶數(shù)據(jù)庫對象
由用戶建立的對象駐留在表空間中,含有真正的數(shù)據(jù)。數(shù)據(jù)庫對象有表、視圖、聚集、索引、偽列和序號生成器。
(1)聚集(Cluster) 聚集是存儲數(shù)據(jù)的一種可選擇的方法。聚集包括存儲在一起的一組表,它們共享公共列并經(jīng)常一起使用。由于內(nèi)容相關(guān)并且物理地存儲在一起,存取時間得到改進,存儲空間可以減少。聚集是一種優(yōu)化措施。聚集對性能的改進,依賴于數(shù)據(jù)的分布和SQL操作的內(nèi)容。特別是使用聚集對連接非常有利??梢悦黠@地提高連接的速度。建立聚集命令的基本格式:SQL>CREATE CLUSTER〈聚集名〉(列定義[,…]);利用聚集建立表命令基本格式:SQL>CREATE TABLE〈新表名〉(列定義[,…]CLUSTER〈聚集名〉(聚集列);在聚集碼上必須建立一個聚集索引,對于每一數(shù)據(jù)塊上每個聚集碼值有一索引項。這個索引必須在DML語句對聚集表操作前建立。建立索引的語句是:CREATE INDEX索引名ON CLUSTER聚集名。
(2)序號生成器 序號(SEQUENCE)生成器為表中的單列或多列生成順序號。利用序號可自動地生成主碼。使用SQL語句定義序號,給出一些信息(如序號名、是升序或降序、每個序號間的間隔和其它信息)。所有序號存儲在數(shù)據(jù)字典表中。所有序號定義存儲在數(shù)據(jù)字典的SEQUENCE表中。用戶可以通過字典視圖USER-SE-QUENCES、ALL-SEQUENCES和DBA-SEQUENCES查詢和存取。建立序號生成器的語句是:CREATE SEQUENCE序號生成器名 其它選項。一旦序號生成器S被定義??捎肧.Currval來引用S序號生成器的當(dāng)前值。用S.nextval產(chǎn)生下一個新的序號并加以引用。
(3)偽列 偽列的行為像表的一列,但不真正存在于表中,在查詢時可引用偽列,但偽列不能插入、刪除或修改。
5.數(shù)據(jù)字典
數(shù)據(jù)字典ORACLE RDBMS最重要的部分之一。數(shù)據(jù)字典含有一組系統(tǒng)定義的表,只能讀,是關(guān)于數(shù)據(jù)庫的引用指南。它可提供以下信息:ORACLE用戶的用戶名;每個用戶被授予的權(quán)限和角色;實體的名字和定義;完整性約束為數(shù)據(jù)庫實體分配的空間;通用的數(shù)據(jù)庫結(jié)構(gòu);審計信息;觸發(fā)子等的存儲。數(shù)據(jù)字典是以表和視圖構(gòu)成的,像其它數(shù)據(jù)庫數(shù)據(jù)一樣,可用SQL語言查詢數(shù)據(jù)字典。數(shù)據(jù)字典在DB建立時建立。每當(dāng)DB進入操作,數(shù)據(jù)字典就由ORACLE RDBMS負(fù)責(zé)修改。數(shù)據(jù)庫建立時有兩個默認(rèn)DBA用戶:SYS、SYSTEM。SYS持有基本表中的數(shù)據(jù)。
下面列出的是一些常用的表或視圖的名稱。
(1)DTAB 描述了組或數(shù)據(jù)字典的所有表。
(2)TAB 用戶建的所有基本表、視圖和同義詞。
(3)COL 用戶創(chuàng)建基本表的所有列的信息。
(4)SYNONYMS 用戶可存取的同義名詞、專用名和公用名。
(5)CATALOG 用戶可存取的表、視圖、同義詞、序列。
(6)CONSTRAINTS 用戶可存取的約束。
(7)INDEXES 用戶可存取的表和聚集的序列。
(8)OBJECTS 用戶可存取的對象。
(9)TANLERS 用戶可存取的表。
(10)USERS 查看當(dāng)前全部用戶。
(11)VIEWS 查看用戶可存取的視圖。
(12)SYSTABAUTH 用戶對數(shù)據(jù)對象的使用權(quán)限。可以用SQL>SELECT*FROM〈字典表名或視圖名〉WHERE〈條件〉來讀取有關(guān)信息。可以用SQL>DESCRIBE〈表名〉來查看表的結(jié)構(gòu)定義。但是數(shù)據(jù)庫字典的結(jié)構(gòu)不可改。用DESCRIBE命令還可以查看視圖及過程的定義。
6.ORACLE的SQL、PL/SQL與SQL*PLUS
作為ORACLE數(shù)據(jù)庫核心的SQL語言是ANSI和ISO的標(biāo)準(zhǔn)SQL的擴充。用來存儲、檢索和維護數(shù)據(jù)庫中的信息,并控制對數(shù)據(jù)庫的存取事務(wù)。由于RDBMS執(zhí)行SQL語句時,是一次只執(zhí)行一條語句,它是非過程化的。這就使得單條的SQL語句使用方便,功能強大。用戶只需說明操作目的,不必關(guān)心具體操作的實現(xiàn)方法。但在實際數(shù)據(jù)庫應(yīng)用開發(fā)中,往往要依據(jù)前一步對數(shù)據(jù)庫操作的結(jié)果或上一個事務(wù)提交的情況來確定下一步的操作。故ORACLE推出了一種PL/SQL工具,它擴充了SQL語句,使之具有可進行過程化編程的能力,如循環(huán)、分支功能。PL/SQL可支持變量和常量的使用。
十二、分布式數(shù)據(jù)庫
1.分布式數(shù)據(jù)庫的分類
分布式數(shù)據(jù)庫,是根據(jù)它的管理系統(tǒng)(Distributed DBMS-DDBMS)進行分類的。對DDBMS可以從四個不同角度來分類:
(1)從構(gòu)成的方式,可分為同構(gòu)型和異構(gòu)型兩類所謂同構(gòu)型,是指所有節(jié)點的局部DBMS都支持同一數(shù)據(jù)模式和數(shù)據(jù)語言。為使每個節(jié)點都掌握彼此的數(shù)據(jù)情況,需要增加網(wǎng)絡(luò)數(shù)據(jù)庫管理系統(tǒng)(NDBMS),各節(jié)點之間通過通信網(wǎng)絡(luò)形成統(tǒng)一的整體。同構(gòu)型的DDBMS對于并發(fā)控制、冗余數(shù)據(jù)的一致性等問題容易處理,但建庫的代價比較大。所謂異構(gòu)型系統(tǒng),是指在分布環(huán)境中各節(jié)點上的數(shù)據(jù)模型和數(shù)據(jù)語言都可能不同。異構(gòu)比同構(gòu)型系統(tǒng)實現(xiàn)起來要困難一些,為了在兩個節(jié)點上的局部DBMS之間進行信息交換,就要對數(shù)據(jù)模式和數(shù)據(jù)語言進行轉(zhuǎn)換和映射工作。
(2)按控制方式,可以分為集中式與分布式所謂集中控制的DDBM指所有事務(wù)都由一臺叫做中心計算機的節(jié)點進行管理。分布控制的DDBMS,是指每個節(jié)點都保持DDBMS的一個副本來監(jiān)督和管理各節(jié)點及系統(tǒng)事務(wù),它將網(wǎng)絡(luò)目錄作為用戶數(shù)據(jù)庫存放于局部DB之中。
(3)從數(shù)據(jù)分布的角度,DDBMS又可分為分割式、部分重復(fù)式和完全重復(fù)式所謂分割式,是指每個節(jié)點只存儲DDB數(shù)據(jù)實體的部分子集,各節(jié)點的副本互不重疊。部分重復(fù)式,是指每個節(jié)點都存儲DDB數(shù)據(jù)實體的任意子集。完全重復(fù)式,是指每個節(jié)點都存儲整個DDB數(shù)據(jù)實體的副本。也有文獻把完全重復(fù)式稱為復(fù)制式。(4)從用戶的角度,DDBM可分為總體型和多重型。
2.分布式數(shù)據(jù)庫與單一數(shù)據(jù)庫的比較
(1)集中控制 在一個企業(yè)或單位范圍內(nèi)的信息資源上,對信息提供集中式控制的可能性,被認(rèn)為是采用數(shù)據(jù)庫技術(shù)的動力之一,因為集中式數(shù)據(jù)庫是根據(jù)信息系統(tǒng)的演變和集中處理信息的需求開發(fā)出來的。
(2)數(shù)據(jù)獨立性 數(shù)據(jù)獨立性也曾經(jīng)被認(rèn)為是采用數(shù)據(jù)庫方法的主要動力之一。實際上,數(shù)據(jù)獨立性意味著數(shù)據(jù)的實際結(jié)構(gòu)對應(yīng)用程序來講是透明的,應(yīng)用程序員只需要利用數(shù)據(jù)邏輯結(jié)構(gòu),即所謂概念模式來編寫程序。數(shù)據(jù)獨立性的主要優(yōu)點是應(yīng)用不受數(shù)據(jù)存儲的物理結(jié)構(gòu)變化的影響。在分布式數(shù)據(jù)庫中,數(shù)據(jù)的獨立性具有與傳統(tǒng)的集中式數(shù)據(jù)同等的重要性,然而,一種嶄新概念加進了數(shù)據(jù)獨立性的一般概念之中,這就是分布式透明性。所謂分布式透明性,指的是在編寫程序時就好象數(shù)據(jù)沒有被分布一樣。這樣,無論把數(shù)據(jù)存儲到甲地或乙地,或者把數(shù)據(jù)從一個節(jié)點移到另一個節(jié)點,都不會影響程序執(zhí)行的正確性和有效性,但是,必須指出,執(zhí)行速度或者效率卻受到了影響。眾所周知,通過具有不同形式的數(shù)據(jù)描述和它們之間的映射的多層體系結(jié)構(gòu),曾為傳統(tǒng)的數(shù)據(jù)庫提供了獨立性,為此目的,開發(fā)出了概念模式、存儲模式和外部模式等概念。利用類似的方法,我們可以通過采用新層次和新模式,在分布式數(shù)據(jù)庫中可獲得分布式透明性。分布式透明性是分布式數(shù)據(jù)庫系統(tǒng)的主要目標(biāo)之一。
(3)降低冗余 在傳統(tǒng)數(shù)據(jù)庫系統(tǒng)中,盡可能地降低冗余度是它的主要目標(biāo)之一。這有兩個原因:首先,通過只用一個正本,可以自動地避免同一邏輯數(shù)據(jù)中幾個副本之間的不一致性。其次,用降低冗余度來節(jié)約存儲空間。通過共享數(shù)據(jù)的方式,即通過允許幾個應(yīng)用訪問同一文件和記錄可以達到降低冗余度的目的。但是,在分布式數(shù)據(jù)庫中,把數(shù)據(jù)的冗余看成是所需要的特性。這有幾個原因:首先,如果在需要冗余的所有節(jié)點都復(fù)制數(shù)據(jù),則可以增加應(yīng)用的局部性。其次,可以增加分布式數(shù)據(jù)庫系統(tǒng)的有效性和可靠性。因為,如果復(fù)制數(shù)據(jù),則一個節(jié)點上的故障不會停止其它節(jié)點上應(yīng)用的執(zhí)行。在一般情況下,為傳統(tǒng)集中式環(huán)境所規(guī)定的克服冗余的原因,在分布式環(huán)境中仍是有效的。因此,在分布式數(shù)據(jù)庫中,對冗余度的評價要選擇一種折衷方案,不能一概而論。一般地說,復(fù)制數(shù)據(jù)項的方便程度是隨著應(yīng)用所執(zhí)行的檢索訪問與更新訪問的比率提高而增加。數(shù)據(jù)復(fù)制便利程度的提高,是因為具有一個項目多個副本,檢索可以在任一副本上進行,而更新卻必須在所有副本上一致地進行。
(4)有效訪問 復(fù)雜的訪問結(jié)構(gòu),如輔助索引,文件間的鏈接等,都是傳統(tǒng)數(shù)據(jù)庫所采用的重要技術(shù),對這些結(jié)構(gòu)的支持是數(shù)據(jù)庫管理系統(tǒng)DBMS極為重要的組成部分。提供復(fù)雜訪問結(jié)構(gòu)的原因,是為了提高存取數(shù)據(jù)的效率。
(5)完整性、恢復(fù)和并發(fā)控制 在數(shù)據(jù)庫理論中,盡管完整性、恢復(fù)和并發(fā)控制等所涉及的問題是不同的,但它們之間相互聯(lián)系還是很多的,一般來說,完整性、恢復(fù)和并發(fā)控制等問題的解決,在很大程度上取決于所提供的事務(wù)的結(jié)構(gòu)形式。
(6)保密性和安全性 在傳統(tǒng)數(shù)據(jù)庫中,具有集中式控制的數(shù)據(jù)庫管理員能保證只執(zhí)行那些授權(quán)的數(shù)據(jù)訪問。但應(yīng)當(dāng)指出,集中式數(shù)據(jù)庫本身比過去處理單獨文件的舊方法更難于實現(xiàn)數(shù)據(jù)的保密性和安全性。在分布式數(shù)據(jù)庫中,局部數(shù)據(jù)庫管理員面臨的一些主要問題,與傳統(tǒng)數(shù)據(jù)庫管理員面臨的問題一樣。但是,分布式數(shù)據(jù)庫的兩個獨特方面值得一提:首先,在具有極高度節(jié)點自主權(quán)的分布式數(shù)據(jù)庫中,局部數(shù)據(jù)的擁有者認(rèn)為比較安全,因為他們能自主地實施自己的安全措施,以履行集中式數(shù)據(jù)庫管理員的職責(zé)。其次,安全性問題,一般是分布式系統(tǒng)的固有問題,因分布式系統(tǒng)是通過通信網(wǎng)絡(luò)來實現(xiàn)分布式控制的,而通信網(wǎng)絡(luò)本身就在保護數(shù)據(jù)的安全性和保密性方面存在著弱點。通過網(wǎng)絡(luò)偷看、亂改別人的數(shù)據(jù)難以完全避免。
3.分布式數(shù)據(jù)庫管理系統(tǒng)(DDBMS)
在目前分析DDBMS的性能時,應(yīng)該把商品化系統(tǒng)和先進的研究樣機區(qū)分開來,但是可以預(yù)料,某些先進的研究樣機中試驗的特性,可能會應(yīng)用到將來的商品化系統(tǒng)中去的。本節(jié)簡要敘述分布式數(shù)據(jù)庫管理系統(tǒng)的基本性能,并就用什么樣的方法使得分布式數(shù)據(jù)庫這個新技術(shù)商品化的問題談一點看法。從目前看,世界上幾各已經(jīng)商品化的分布式系統(tǒng)是由集中式數(shù)據(jù)庫管理系統(tǒng)的銷售廠商開發(fā)出來的。這些分布式數(shù)據(jù)庫管理系統(tǒng),包括擴充集中式DBMS時所附加的部件。分布式功能的擴充是通過裝配在計算機網(wǎng)絡(luò)中不同節(jié)點上的DBMS之間所提供的通信和合作來實現(xiàn)的。在這種情況下建立分布式數(shù)據(jù)庫通常所必須的軟件部分是:
(1)數(shù)據(jù)庫管理部分(DB);
(2)數(shù)據(jù)通信部分(DC);
(3)數(shù)據(jù)字典(DD),它能用來表示有關(guān)網(wǎng)絡(luò)中數(shù)據(jù)分布的信息;
(4)分布式數(shù)據(jù)庫部分(DDB)。
十三、分布式ORACLE系統(tǒng)簡介
1.分布式體系結(jié)構(gòu)的ORACLE
1986年,ORACLE公司推出了它的分布式體系結(jié)構(gòu)的ORACLE數(shù)據(jù)庫系統(tǒng)。該系統(tǒng)是由分布式數(shù)據(jù)庫管理系統(tǒng)(ORACLE RDBMS)、支持多種操作系統(tǒng)和通信協(xié)議的分布式處理環(huán)境軟件SQL*NET、以及與非ORACLE RDBMS聯(lián)接的軟件SQL*CONNECT這三部分組成的一個軟件群。分布式ORACLE采用了典型的開放式體系結(jié)構(gòu),對環(huán)境的適應(yīng)范圍非常廣泛,可適應(yīng)多種通信協(xié)議、多種操作系統(tǒng)、多種硬件環(huán)境及多種DBMS和數(shù)據(jù)源。
2.網(wǎng)絡(luò)ORACLE的連接過程
網(wǎng)絡(luò)ORACLE的連接過程大致包括以下幾步:
(1)確認(rèn)網(wǎng)絡(luò)結(jié)點是否安裝了SQL*NET,如未安裝,則需執(zhí)行:*$SYS@ORACLE:NCONFIG.COM≠進行安裝,并且使用SGAPAD.COM重新鏈接。
(5)Browse窗口Browse窗口是FoxPro功能、最富生機的特征之一。在Browse窗口中不僅可以瀏覽表的內(nèi)容,還可以向表中增加記錄、刪除記錄、修改字段等。進入Browse窗口有多種方法,既可從主菜單中Database/Browse進入,也可從View窗口中的Browse按鈕進入,還可以在查詢時進入。View窗口在FoxPro中是最有用的窗口之一。用戶應(yīng)在進入FoxPro后,就打開View窗口,這樣會給用戶帶來許多方便。事實上,F(xiàn)oxPro的所有表,都是以單獨的文件存放在磁盤中的,數(shù)據(jù)庫實質(zhì)上只是一個目錄名而已。FoxPro對文件的保護比較弱,有時拷貝表時,會丟失某些信息,以至于到另外一臺機器上不能打開,這時就應(yīng)重新拷貝,把所有相關(guān)的文件,如FPT、IDX等文件一并拷走。這樣數(shù)據(jù)庫才能在另外一臺機器上安全地運行。
3.使用FoxPro數(shù)據(jù)庫
(1)建立數(shù)據(jù)庫建立數(shù)據(jù)庫要決定需存儲在數(shù)據(jù)庫中的信息的結(jié)構(gòu),即數(shù)據(jù)庫的結(jié)構(gòu)。
(2)RQBE窗口盡管使用Browse可以瀏覽表,但畢竟只能做一些簡單的檢索,為此FoxPro提供了RQBE(Relational Query By Example)。RQBE是一種交互式工具,避免了寫復(fù)雜檢索程序的麻煩,可以很方便地檢索數(shù)據(jù)。RQBE的功能很強,RQBE是用戶和SQL SELECT命令間的接口,F(xiàn)oxˉPro支持SQL。另外,RQBE可以把語句保存在.QPR文件中。
(3)報表的設(shè)計與制作使用RQBE可制作出報表,還可以利用FoxPro功能強大的Report Writer來制作一張符合需要的報表。
4.創(chuàng)建應(yīng)用程序
(1)建立數(shù)據(jù)庫編寫數(shù)據(jù)庫應(yīng)用程序的第一步是確定該系統(tǒng)必須使用的數(shù)據(jù)庫文件和索引。
(2)菜單生成器FoxPro為用戶提供了很簡潔的豐富的菜單編程命令,但這些繁雜的命令很容易令人厭煩。如果使用菜單生成器,將會使構(gòu)造菜單系統(tǒng)變得容易許多。菜單生成器的啟動有兩種方式:
(1)通過在Command窗口鍵入Create menu[〈文件名〉],鍵入回車即可。
(2)通過系統(tǒng)菜單啟動。
(3)屏幕生成器大多的應(yīng)用程序都是圍繞著用戶界面屏幕來建立的。有些屏幕用來錄入或編輯數(shù)據(jù),有些屏幕用以顯示信息,有些屏幕用于表的維護等等。FoxPro的屏幕生成器就是用來創(chuàng)建大多數(shù)上述屏幕的工具。在各類界面設(shè)計中,輸入屏幕算是比較繁而且又很常用的界面屏幕了。
(4)項目管理器項目管理器主要有以下兩個作用:
①維護項目使用的所有文件。
②建立應(yīng)用程序項目管理器具有優(yōu)秀編程工具的特點,它為用戶做了許多工作,并且易于使用??梢酝ㄟ^選擇File New Project、New或在命令窗口鍵入Creat project命令來創(chuàng)建一個新的項目。然后使用Add按鈕開始創(chuàng)建該項目中的新文件或?qū)⒁延械奈募砑拥皆擁椖恐?。首先,將主文件添加到項目中。由此,項目管理器就可以沿著程序的?zhí)行步驟(即嵌入在文件中的函數(shù)和過程調(diào)用)來一步步跟蹤,直到找到當(dāng)前項目所需的所有文件為止。生成項目文件非常容易,在項目管理器窗口中按下Build按鈕,選擇Re-build project,Build Application或Build Executable選項。另外,項目管理器能方便的發(fā)現(xiàn)和修改編譯錯誤。應(yīng)該指出,一個項目并不一定要生成應(yīng)用程序;而一個完整的“應(yīng)用程序”可以包含若干個項目和若干個生成類。因此,邏輯上的解決辦法是將應(yīng)用程序拆成許多的項目,這就是應(yīng)用程序的分級設(shè)計方法。 來源:www.examda.com
十一、ORACLE 數(shù)據(jù)庫管理系統(tǒng)介紹
1.ORACLE的特點:
可移植性 ORACLE采用C語言開發(fā)而成,故產(chǎn)品與硬件和操作系統(tǒng)具有很強的獨立性。從大型機到微機上都可運行ORACLE的產(chǎn)品。可在UNIX、DOS、Windows等操作系統(tǒng)上運行。可兼容性 由于采用了國際標(biāo)準(zhǔn)的數(shù)據(jù)查詢語言SQL,與IBM的SQL/DS、DB2等均兼容。并提供讀取其它數(shù)據(jù)庫文件的間接方法??陕?lián)結(jié)性 對于不同通信協(xié)議,不同機型及不同操作系統(tǒng)組成的網(wǎng)絡(luò)也可以運行ORACLE數(shù)據(jù)庫產(chǎn)品。
2.ORACLE的總體結(jié)構(gòu)
(1)ORACLE的文件結(jié)構(gòu) 一個ORACLE數(shù)據(jù)庫系統(tǒng)包括以下5類文件:ORACLE RDBMS的代碼文件。數(shù)據(jù)文件 一個數(shù)據(jù)庫可有一個或多個數(shù)據(jù)文件,每個數(shù)據(jù)文件可以存有一個或多個表、視圖、索引等信息。日志文件 須有兩個或兩個以上,用來記錄所有數(shù)據(jù)庫的變化,用于數(shù)據(jù)庫的恢復(fù)。控制文件 可以有備份,采用多個備份控制文件的是為了防止控制文件的損壞。參數(shù)文件 含有數(shù)據(jù)庫例程起時所需的配置參數(shù)。
(2)ORACLE的內(nèi)存結(jié)構(gòu) 一個ORACLE例程擁有一個系統(tǒng)全程區(qū)(SGA)和一組程序全程區(qū)(PGA)。SGA(System Global Area)包括數(shù)據(jù)庫緩沖區(qū),日志緩沖區(qū)及共享區(qū)域。PGA(Program Global Area)是每一個Server進程有一個。一個Server進程起動時,就為其分配一個PGA區(qū),以存放數(shù)據(jù)及控制信息。
(3)ORACLE的進程結(jié)構(gòu)ORACLE包括三類進程:
①用戶進程 用來執(zhí)行用戶應(yīng)用程序的。
②服務(wù)進程 處理與之相連的一組用戶進程的請求。
③后臺進程 ORACLE為每一個數(shù)據(jù)庫例程創(chuàng)建一組后臺進程,它為所有的用戶進程服務(wù),其中包括:DBWR(Database Writer)進程,負(fù)責(zé)把已修改的數(shù)據(jù)塊從數(shù)據(jù)庫緩沖區(qū)寫到數(shù)據(jù)庫中。LGWR(Log Writer)進程,負(fù)責(zé)把日志從SGA中的緩沖區(qū)中寫到日志文件中。SMON(System Moniter)進程,該進程有規(guī)律地掃描SAG進程信息,注銷失敗的數(shù)據(jù)庫例程,回收不再使用的內(nèi)存空間。PMON(Process Moniter)進程,當(dāng)一用戶進程異常結(jié)束時,該進程負(fù)責(zé)恢復(fù)未完成的事務(wù),注銷失敗的用戶進程,釋放用戶進程占用的資源。ARCH(ARCHIVER)進程。每當(dāng)聯(lián)機日志文件寫滿時,該進程將其拷貝到歸檔存儲設(shè)備上。另外還包括分布式DB中事務(wù)恢復(fù)進程RECO和對服務(wù)進程與用戶進程進行匹配的Dnnn進程等。 來源:www.examda.com
3.ORACLE的邏輯結(jié)構(gòu)
構(gòu)成ORACLE的數(shù)據(jù)庫的邏輯結(jié)構(gòu)包括:
1)表空間
(2)5種類型的段(segment)
①數(shù)據(jù)段;
②索引段;
③滾回(rollbock)段;
④臨時段;
⑤自舉(bootstrap)段。段的分配單位叫范圍(Extent)表空間(Tablespace) 一個數(shù)據(jù)庫劃分成的若干邏輯部分稱為表空間。一個數(shù)據(jù)庫可以有一個或多個表空間,初始的表空間命名為SYSTEM,每一個邏輯表空間對應(yīng)于一個或多個物理文件。DBA使用表空間做以下工作:控制數(shù)據(jù)庫對象,如表、索引和臨時段的空間分配。為數(shù)據(jù)庫用戶設(shè)置空間配額。利用個別表空間的在線或離線,控制數(shù)據(jù)的可用性。后備或恢復(fù)數(shù)據(jù)。通過分配空間,以改進性能。在每個數(shù)據(jù)庫中都存在SYSTEM表空間,它在建立數(shù)據(jù)庫時自動建立。在該表空間中,包含數(shù)據(jù)庫的數(shù)據(jù)字典,其中存儲全部數(shù)據(jù)庫對象的名字和位置。SYSTEM表空間總是在線的,像其它表空間一樣,可以通過增加新的數(shù)據(jù)庫文件來擴大。一個表空間可包含許多表和索引。但一個表和索引不能跨越表空間,可跨越組成表空間的文件。在DB的打開的情況下,DBA利用ALTER TABLESP ACE語句,可以實施表空間的在線或離線。SYSTEM表空間必須在線。表空間離線有下列原因:一般為了使部分?jǐn)?shù)據(jù)庫不能使用,而允許正常存取數(shù)據(jù)庫其余部分。執(zhí)行表空間離線備份。一個離線的表空間,不能被應(yīng)用用戶讀或編輯??梢栽黾訑?shù)據(jù)文件擴大已有的表空間,也可增加新的表空間使數(shù)據(jù)庫容量增大,或分配空間給某個應(yīng)用。使用ALFER TABLESPACE ADD FILE語句將另一個數(shù)據(jù)文件加入到已存在表空間中。使用CREATE TABLESPACE語句可建立一個新的表空間。段(segment) 表空間中的全部數(shù)據(jù)存儲在以段劃分的數(shù)據(jù)庫空間中。一個段是分配給數(shù)據(jù)庫用于數(shù)據(jù)存儲的范圍的集合。數(shù)據(jù)可以是表、索引或RDBMS所需要的臨時數(shù)據(jù)。段是表空間的下一個邏輯存儲的級別。一個段不能跨越一個表空間,但可跨越表空間內(nèi)的文件。一個數(shù)據(jù)庫最多需要五種段類型:數(shù)據(jù)段 一個包含一個表(或聚集)的全部數(shù)據(jù),一個表(或聚集)總有一個單個數(shù)據(jù)段。索引段 一個索引段包含對一個表(或聚集)建立的一個索引的全部索引數(shù)據(jù)。一個表可以有一個、多個或者沒有索引段,取決于它所擁有的索引個數(shù)。一個聚集必須至少有一個索引段,即在聚集碼上建立聚集索引?;貪L段 每個DB有一個或多個回滾段。一個回滾段是DB的一部分,它記錄在某一情況下被撤消的動作?;貪L段用于事務(wù)控制和恢復(fù)。臨時段 在處理查詢時,ORACLE需要臨時工作空間,用于存儲語句處理的中間結(jié)果,這個區(qū)稱為臨時段。自舉段 自舉段在SYSTEM表空間中,在數(shù)據(jù)庫建立時建立。它包括數(shù)據(jù)字典定義,在數(shù)據(jù)庫打開時裝入。
4.用戶數(shù)據(jù)庫對象
由用戶建立的對象駐留在表空間中,含有真正的數(shù)據(jù)。數(shù)據(jù)庫對象有表、視圖、聚集、索引、偽列和序號生成器。
(1)聚集(Cluster) 聚集是存儲數(shù)據(jù)的一種可選擇的方法。聚集包括存儲在一起的一組表,它們共享公共列并經(jīng)常一起使用。由于內(nèi)容相關(guān)并且物理地存儲在一起,存取時間得到改進,存儲空間可以減少。聚集是一種優(yōu)化措施。聚集對性能的改進,依賴于數(shù)據(jù)的分布和SQL操作的內(nèi)容。特別是使用聚集對連接非常有利??梢悦黠@地提高連接的速度。建立聚集命令的基本格式:SQL>CREATE CLUSTER〈聚集名〉(列定義[,…]);利用聚集建立表命令基本格式:SQL>CREATE TABLE〈新表名〉(列定義[,…]CLUSTER〈聚集名〉(聚集列);在聚集碼上必須建立一個聚集索引,對于每一數(shù)據(jù)塊上每個聚集碼值有一索引項。這個索引必須在DML語句對聚集表操作前建立。建立索引的語句是:CREATE INDEX索引名ON CLUSTER聚集名。
(2)序號生成器 序號(SEQUENCE)生成器為表中的單列或多列生成順序號。利用序號可自動地生成主碼。使用SQL語句定義序號,給出一些信息(如序號名、是升序或降序、每個序號間的間隔和其它信息)。所有序號存儲在數(shù)據(jù)字典表中。所有序號定義存儲在數(shù)據(jù)字典的SEQUENCE表中。用戶可以通過字典視圖USER-SE-QUENCES、ALL-SEQUENCES和DBA-SEQUENCES查詢和存取。建立序號生成器的語句是:CREATE SEQUENCE序號生成器名 其它選項。一旦序號生成器S被定義??捎肧.Currval來引用S序號生成器的當(dāng)前值。用S.nextval產(chǎn)生下一個新的序號并加以引用。
(3)偽列 偽列的行為像表的一列,但不真正存在于表中,在查詢時可引用偽列,但偽列不能插入、刪除或修改。
5.數(shù)據(jù)字典
數(shù)據(jù)字典ORACLE RDBMS最重要的部分之一。數(shù)據(jù)字典含有一組系統(tǒng)定義的表,只能讀,是關(guān)于數(shù)據(jù)庫的引用指南。它可提供以下信息:ORACLE用戶的用戶名;每個用戶被授予的權(quán)限和角色;實體的名字和定義;完整性約束為數(shù)據(jù)庫實體分配的空間;通用的數(shù)據(jù)庫結(jié)構(gòu);審計信息;觸發(fā)子等的存儲。數(shù)據(jù)字典是以表和視圖構(gòu)成的,像其它數(shù)據(jù)庫數(shù)據(jù)一樣,可用SQL語言查詢數(shù)據(jù)字典。數(shù)據(jù)字典在DB建立時建立。每當(dāng)DB進入操作,數(shù)據(jù)字典就由ORACLE RDBMS負(fù)責(zé)修改。數(shù)據(jù)庫建立時有兩個默認(rèn)DBA用戶:SYS、SYSTEM。SYS持有基本表中的數(shù)據(jù)。
下面列出的是一些常用的表或視圖的名稱。
(1)DTAB 描述了組或數(shù)據(jù)字典的所有表。
(2)TAB 用戶建的所有基本表、視圖和同義詞。
(3)COL 用戶創(chuàng)建基本表的所有列的信息。
(4)SYNONYMS 用戶可存取的同義名詞、專用名和公用名。
(5)CATALOG 用戶可存取的表、視圖、同義詞、序列。
(6)CONSTRAINTS 用戶可存取的約束。
(7)INDEXES 用戶可存取的表和聚集的序列。
(8)OBJECTS 用戶可存取的對象。
(9)TANLERS 用戶可存取的表。
(10)USERS 查看當(dāng)前全部用戶。
(11)VIEWS 查看用戶可存取的視圖。
(12)SYSTABAUTH 用戶對數(shù)據(jù)對象的使用權(quán)限。可以用SQL>SELECT*FROM〈字典表名或視圖名〉WHERE〈條件〉來讀取有關(guān)信息。可以用SQL>DESCRIBE〈表名〉來查看表的結(jié)構(gòu)定義。但是數(shù)據(jù)庫字典的結(jié)構(gòu)不可改。用DESCRIBE命令還可以查看視圖及過程的定義。
6.ORACLE的SQL、PL/SQL與SQL*PLUS
作為ORACLE數(shù)據(jù)庫核心的SQL語言是ANSI和ISO的標(biāo)準(zhǔn)SQL的擴充。用來存儲、檢索和維護數(shù)據(jù)庫中的信息,并控制對數(shù)據(jù)庫的存取事務(wù)。由于RDBMS執(zhí)行SQL語句時,是一次只執(zhí)行一條語句,它是非過程化的。這就使得單條的SQL語句使用方便,功能強大。用戶只需說明操作目的,不必關(guān)心具體操作的實現(xiàn)方法。但在實際數(shù)據(jù)庫應(yīng)用開發(fā)中,往往要依據(jù)前一步對數(shù)據(jù)庫操作的結(jié)果或上一個事務(wù)提交的情況來確定下一步的操作。故ORACLE推出了一種PL/SQL工具,它擴充了SQL語句,使之具有可進行過程化編程的能力,如循環(huán)、分支功能。PL/SQL可支持變量和常量的使用。
十二、分布式數(shù)據(jù)庫
1.分布式數(shù)據(jù)庫的分類
分布式數(shù)據(jù)庫,是根據(jù)它的管理系統(tǒng)(Distributed DBMS-DDBMS)進行分類的。對DDBMS可以從四個不同角度來分類:
(1)從構(gòu)成的方式,可分為同構(gòu)型和異構(gòu)型兩類所謂同構(gòu)型,是指所有節(jié)點的局部DBMS都支持同一數(shù)據(jù)模式和數(shù)據(jù)語言。為使每個節(jié)點都掌握彼此的數(shù)據(jù)情況,需要增加網(wǎng)絡(luò)數(shù)據(jù)庫管理系統(tǒng)(NDBMS),各節(jié)點之間通過通信網(wǎng)絡(luò)形成統(tǒng)一的整體。同構(gòu)型的DDBMS對于并發(fā)控制、冗余數(shù)據(jù)的一致性等問題容易處理,但建庫的代價比較大。所謂異構(gòu)型系統(tǒng),是指在分布環(huán)境中各節(jié)點上的數(shù)據(jù)模型和數(shù)據(jù)語言都可能不同。異構(gòu)比同構(gòu)型系統(tǒng)實現(xiàn)起來要困難一些,為了在兩個節(jié)點上的局部DBMS之間進行信息交換,就要對數(shù)據(jù)模式和數(shù)據(jù)語言進行轉(zhuǎn)換和映射工作。
(2)按控制方式,可以分為集中式與分布式所謂集中控制的DDBM指所有事務(wù)都由一臺叫做中心計算機的節(jié)點進行管理。分布控制的DDBMS,是指每個節(jié)點都保持DDBMS的一個副本來監(jiān)督和管理各節(jié)點及系統(tǒng)事務(wù),它將網(wǎng)絡(luò)目錄作為用戶數(shù)據(jù)庫存放于局部DB之中。
(3)從數(shù)據(jù)分布的角度,DDBMS又可分為分割式、部分重復(fù)式和完全重復(fù)式所謂分割式,是指每個節(jié)點只存儲DDB數(shù)據(jù)實體的部分子集,各節(jié)點的副本互不重疊。部分重復(fù)式,是指每個節(jié)點都存儲DDB數(shù)據(jù)實體的任意子集。完全重復(fù)式,是指每個節(jié)點都存儲整個DDB數(shù)據(jù)實體的副本。也有文獻把完全重復(fù)式稱為復(fù)制式。(4)從用戶的角度,DDBM可分為總體型和多重型。
2.分布式數(shù)據(jù)庫與單一數(shù)據(jù)庫的比較
(1)集中控制 在一個企業(yè)或單位范圍內(nèi)的信息資源上,對信息提供集中式控制的可能性,被認(rèn)為是采用數(shù)據(jù)庫技術(shù)的動力之一,因為集中式數(shù)據(jù)庫是根據(jù)信息系統(tǒng)的演變和集中處理信息的需求開發(fā)出來的。
(2)數(shù)據(jù)獨立性 數(shù)據(jù)獨立性也曾經(jīng)被認(rèn)為是采用數(shù)據(jù)庫方法的主要動力之一。實際上,數(shù)據(jù)獨立性意味著數(shù)據(jù)的實際結(jié)構(gòu)對應(yīng)用程序來講是透明的,應(yīng)用程序員只需要利用數(shù)據(jù)邏輯結(jié)構(gòu),即所謂概念模式來編寫程序。數(shù)據(jù)獨立性的主要優(yōu)點是應(yīng)用不受數(shù)據(jù)存儲的物理結(jié)構(gòu)變化的影響。在分布式數(shù)據(jù)庫中,數(shù)據(jù)的獨立性具有與傳統(tǒng)的集中式數(shù)據(jù)同等的重要性,然而,一種嶄新概念加進了數(shù)據(jù)獨立性的一般概念之中,這就是分布式透明性。所謂分布式透明性,指的是在編寫程序時就好象數(shù)據(jù)沒有被分布一樣。這樣,無論把數(shù)據(jù)存儲到甲地或乙地,或者把數(shù)據(jù)從一個節(jié)點移到另一個節(jié)點,都不會影響程序執(zhí)行的正確性和有效性,但是,必須指出,執(zhí)行速度或者效率卻受到了影響。眾所周知,通過具有不同形式的數(shù)據(jù)描述和它們之間的映射的多層體系結(jié)構(gòu),曾為傳統(tǒng)的數(shù)據(jù)庫提供了獨立性,為此目的,開發(fā)出了概念模式、存儲模式和外部模式等概念。利用類似的方法,我們可以通過采用新層次和新模式,在分布式數(shù)據(jù)庫中可獲得分布式透明性。分布式透明性是分布式數(shù)據(jù)庫系統(tǒng)的主要目標(biāo)之一。
(3)降低冗余 在傳統(tǒng)數(shù)據(jù)庫系統(tǒng)中,盡可能地降低冗余度是它的主要目標(biāo)之一。這有兩個原因:首先,通過只用一個正本,可以自動地避免同一邏輯數(shù)據(jù)中幾個副本之間的不一致性。其次,用降低冗余度來節(jié)約存儲空間。通過共享數(shù)據(jù)的方式,即通過允許幾個應(yīng)用訪問同一文件和記錄可以達到降低冗余度的目的。但是,在分布式數(shù)據(jù)庫中,把數(shù)據(jù)的冗余看成是所需要的特性。這有幾個原因:首先,如果在需要冗余的所有節(jié)點都復(fù)制數(shù)據(jù),則可以增加應(yīng)用的局部性。其次,可以增加分布式數(shù)據(jù)庫系統(tǒng)的有效性和可靠性。因為,如果復(fù)制數(shù)據(jù),則一個節(jié)點上的故障不會停止其它節(jié)點上應(yīng)用的執(zhí)行。在一般情況下,為傳統(tǒng)集中式環(huán)境所規(guī)定的克服冗余的原因,在分布式環(huán)境中仍是有效的。因此,在分布式數(shù)據(jù)庫中,對冗余度的評價要選擇一種折衷方案,不能一概而論。一般地說,復(fù)制數(shù)據(jù)項的方便程度是隨著應(yīng)用所執(zhí)行的檢索訪問與更新訪問的比率提高而增加。數(shù)據(jù)復(fù)制便利程度的提高,是因為具有一個項目多個副本,檢索可以在任一副本上進行,而更新卻必須在所有副本上一致地進行。
(4)有效訪問 復(fù)雜的訪問結(jié)構(gòu),如輔助索引,文件間的鏈接等,都是傳統(tǒng)數(shù)據(jù)庫所采用的重要技術(shù),對這些結(jié)構(gòu)的支持是數(shù)據(jù)庫管理系統(tǒng)DBMS極為重要的組成部分。提供復(fù)雜訪問結(jié)構(gòu)的原因,是為了提高存取數(shù)據(jù)的效率。
(5)完整性、恢復(fù)和并發(fā)控制 在數(shù)據(jù)庫理論中,盡管完整性、恢復(fù)和并發(fā)控制等所涉及的問題是不同的,但它們之間相互聯(lián)系還是很多的,一般來說,完整性、恢復(fù)和并發(fā)控制等問題的解決,在很大程度上取決于所提供的事務(wù)的結(jié)構(gòu)形式。
(6)保密性和安全性 在傳統(tǒng)數(shù)據(jù)庫中,具有集中式控制的數(shù)據(jù)庫管理員能保證只執(zhí)行那些授權(quán)的數(shù)據(jù)訪問。但應(yīng)當(dāng)指出,集中式數(shù)據(jù)庫本身比過去處理單獨文件的舊方法更難于實現(xiàn)數(shù)據(jù)的保密性和安全性。在分布式數(shù)據(jù)庫中,局部數(shù)據(jù)庫管理員面臨的一些主要問題,與傳統(tǒng)數(shù)據(jù)庫管理員面臨的問題一樣。但是,分布式數(shù)據(jù)庫的兩個獨特方面值得一提:首先,在具有極高度節(jié)點自主權(quán)的分布式數(shù)據(jù)庫中,局部數(shù)據(jù)的擁有者認(rèn)為比較安全,因為他們能自主地實施自己的安全措施,以履行集中式數(shù)據(jù)庫管理員的職責(zé)。其次,安全性問題,一般是分布式系統(tǒng)的固有問題,因分布式系統(tǒng)是通過通信網(wǎng)絡(luò)來實現(xiàn)分布式控制的,而通信網(wǎng)絡(luò)本身就在保護數(shù)據(jù)的安全性和保密性方面存在著弱點。通過網(wǎng)絡(luò)偷看、亂改別人的數(shù)據(jù)難以完全避免。
3.分布式數(shù)據(jù)庫管理系統(tǒng)(DDBMS)
在目前分析DDBMS的性能時,應(yīng)該把商品化系統(tǒng)和先進的研究樣機區(qū)分開來,但是可以預(yù)料,某些先進的研究樣機中試驗的特性,可能會應(yīng)用到將來的商品化系統(tǒng)中去的。本節(jié)簡要敘述分布式數(shù)據(jù)庫管理系統(tǒng)的基本性能,并就用什么樣的方法使得分布式數(shù)據(jù)庫這個新技術(shù)商品化的問題談一點看法。從目前看,世界上幾各已經(jīng)商品化的分布式系統(tǒng)是由集中式數(shù)據(jù)庫管理系統(tǒng)的銷售廠商開發(fā)出來的。這些分布式數(shù)據(jù)庫管理系統(tǒng),包括擴充集中式DBMS時所附加的部件。分布式功能的擴充是通過裝配在計算機網(wǎng)絡(luò)中不同節(jié)點上的DBMS之間所提供的通信和合作來實現(xiàn)的。在這種情況下建立分布式數(shù)據(jù)庫通常所必須的軟件部分是:
(1)數(shù)據(jù)庫管理部分(DB);
(2)數(shù)據(jù)通信部分(DC);
(3)數(shù)據(jù)字典(DD),它能用來表示有關(guān)網(wǎng)絡(luò)中數(shù)據(jù)分布的信息;
(4)分布式數(shù)據(jù)庫部分(DDB)。
十三、分布式ORACLE系統(tǒng)簡介
1.分布式體系結(jié)構(gòu)的ORACLE
1986年,ORACLE公司推出了它的分布式體系結(jié)構(gòu)的ORACLE數(shù)據(jù)庫系統(tǒng)。該系統(tǒng)是由分布式數(shù)據(jù)庫管理系統(tǒng)(ORACLE RDBMS)、支持多種操作系統(tǒng)和通信協(xié)議的分布式處理環(huán)境軟件SQL*NET、以及與非ORACLE RDBMS聯(lián)接的軟件SQL*CONNECT這三部分組成的一個軟件群。分布式ORACLE采用了典型的開放式體系結(jié)構(gòu),對環(huán)境的適應(yīng)范圍非常廣泛,可適應(yīng)多種通信協(xié)議、多種操作系統(tǒng)、多種硬件環(huán)境及多種DBMS和數(shù)據(jù)源。
2.網(wǎng)絡(luò)ORACLE的連接過程
網(wǎng)絡(luò)ORACLE的連接過程大致包括以下幾步:
(1)確認(rèn)網(wǎng)絡(luò)結(jié)點是否安裝了SQL*NET,如未安裝,則需執(zhí)行:*$SYS@ORACLE:NCONFIG.COM≠進行安裝,并且使用SGAPAD.COM重新鏈接。

