sql論文
ORACLE中SQL查詢優化研究
摘 要 資料庫性能問題一直是決策者及技術人員共同關注的焦點,影響資料庫性能的一個重要因素就是SQL查詢語句的低效率。論文首先分析了導致SQL查詢語句性能低下的四個常見原因以及SQL調優的一般步驟,然後分別針對如何降低I/O操作、在查詢語句中如何避免對查詢結果的高成本操作以及在多表連接時如何提高查詢效率進行了分析。
關鍵詞 ORACLE;SQL;優化;連接
1 引言
隨著網路應用不斷發展,系統性能已越來越引起決策者的重視。影響系統性能的因素很多,低效的SQL語句就是其中一個不可忽視的重要原因。論文首先分析導致SQL性能低下的常見原因,然後分析SQL調優應遵循的一般步驟,最後從如何降低I/O、避免對查詢結果的高成本操作和多表連接中如何提高SQL性能進行了研究。鑒於目前ORACLE在資料庫市場上的主導地位,論文將只針對ORACLE進行討論。
2 影響SQL性能的原因
影響SQL性能的因素很多,如初始化參數設置不合理、導入了不準確的系統及模式統計數據從而影響優化程序(CBO)的正確判斷等,這些往往和DBA密切相關。純粹從SQL語句出發,筆者認為影響SQL性能不外乎以下四個重要原因:
(1)在大記錄集上進行高成本操作,如使用了引起排序的謂詞等。
(2)過多的I/O操作(含物理I/O與邏輯I/O),最典型的就是未建立恰當的索引,導致對查詢表進行全表掃描。
(3)處理了太多的無用記錄,如在多表連接時過濾條件位置不當導致中間結果集包含了太多的無用記錄。
(4)未充分利用資料庫提供的功能,如查詢的並行化處理等。
第(4)個原因處理起來相對簡單。論文將針對前三個原因論述如何提高SQL查詢語句的性能。
3 SQL優化的一般步驟
SQL優化一般需經過發現問題、分析問題、提出解決措施、應用措施、測試性能幾個步驟,如圖1所示。「發現問題就是解決問題的一半」,因此在SQL調優過程中,定位問題SQL是非常重要的一步,一般可藉助於ORACLE自帶的性能優化工具如STATSPACK、TKPROF、AUTOTRACE等輔助用戶進行,同時還應該重視動態性能視圖如V$SQL、V$MYSTAT、V$SYSSTAT等的研究。
圖1 SQL優化的一般步驟
4 SQL語句的優化
4.1 優化排序操作
排序的成本十分高昂,當在查詢語句中使用了引起結果集排序的謂詞時,SQL性能必然受到影響。
4.1.1 排序過程分析
當待排序數據集不是太大時,伺服器在內存(排序區)完成排序操作,如果排序需要更多的內存空間,伺服器將進行如下處理:
(1) 將數據分成多個小的集合,對每一集合進行排序。
(2) 伺服器向磁碟申請臨時空間,將排好序的中間結果寫入臨時段,再對另外的集合進行排序。
(3) 在所有的集合均排好序後,伺服器再將它們進行合並得到最終的結果,如果排序區尺寸太小,合並無法一次完成時,將分多次進行。
從上述分析可知,排序是一種十分昂貴的操作,它消耗大量的CPU時間和內存,觸發磁碟分頁和交換操作,因此只要有可能,我們就應該在SQL語句中盡量避免排序操作。
4.1.2 SQL中引起排序的操作
SQL查詢語句中引起排序的操作大致有:ORDER BY 和GROUP BY 從句;DISTINCT修飾符;UNION、INTERSECT、MINUS集合操作符;多表連接時的排序合並連接(SORT MERGE JOIN)等。
4.1.3 如何避免排序
1)建立恰當的索引
對經常進行排序和連接操作的欄位建立索引。在建立索引後,當伺服器向這些欄位發出排序請求時,將直接引用索引而不進行排序操作;當進行等值連接查詢操作時,若建立連接的欄位未建立索引,伺服器進行的是排序合並連接(SORT MERGE JOIN),連接操作的過程如下:
對進行連接的兩個或多個表分別進行全掃描;
對每一個表中的行集分別進行全排序;
合並排序結果。
如果建立連接的欄位已建立索引,伺服器進行嵌套循環連接(NESTED LOOP JOINS),該連接方式不需要任何排序,其過程如下:
對驅動表進行全表掃描;
對返回的每一行利用連接欄位值實施索引惟一掃描;
利用從索引掃描中返回的ROWID值在從表中定位記錄;
合並主、從表中的匹配記錄。
因此,建立索引可避免多數排序操作。
2)用UNIION ALL替換UNION
UNION在進行表鏈接後會篩選掉重復的記錄,所以在表鏈接後會對所產生的結果集進行排序運算,刪除重復的記錄再返回結果。大部分應用中是不會產生重復記錄的,最常見的是過程表與歷史表UNION 。因此,採用UNION ALL操作符替代UNION,因為UNION ALL操作只是簡單的將兩個結果合並後就返回。
4.2 優化I/O
過多的I/O操作會佔用CPU時間、消耗大量內存和佔用過多的栓鎖,因此有必要對SQL的I/O進行優化。優化I/O的最有效方式就是用索引掃描代替全表掃描。
4.2.1 應用基於函數的索引
基於函數的索引(FUNCTION BASED INDEX,簡記為FBI)提供了索引計算列並在查詢中使用這些索引的能力。FBI的實質是對查詢所需中間結果進行預處理。如果一個FBI與查詢語句中的內嵌函數完全匹配,CBO在生成查詢計劃時,將自動啟用索引范圍掃描(INDEX RANGE SCAN)替換全表掃描(FULL TABLE SCAN)。考察下面的代碼段並用AUTOTRACE觀察創建FBI前後執行計劃的變化。
select * from emp where upper(ename)=』SCOTT』
創建FBI前,很明顯是全表掃描。
Execution Plan
……
1 0 TABLE ACCESS (FULL) OF 'EMPLOYEES' (Cost=2 Card=1 Bytes=22)
idle>CREATE INDEX EMP_UPPER_FIRST_NAME ON EMPLOYEES(UPPER(FIRST_NAME));
索引已創建。
再次運行相同查詢,
Execution Plan
……
1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMPLOYEES' (Cost=1 Card=1 Bytes=22)
2 1 INDEX (RANGE SCAN) OF 'EMP_UPPER_FIRST_NAME' (NON-UNIQUE) (Cost=1 Card=1)
這一簡單的例子充分說明了FBI在SQL查詢優化中的作用。FBI所用的函數可以是用戶自己創建的函數,該函數越復雜,基於該函數創建FBI對SQL查詢性能的優化作用越明顯。
4.2.2 應用物化視圖和查詢重寫
物化視圖是一個預計算結果集,其中通常包含聚集與多表連接等復雜操作。資料庫自動維護物化視圖,且隨用戶的要求進行刷新。查詢重寫機制就是用資料庫中的替代對象(如物化視圖)將用戶提交的查詢重寫為完全不同但功能等價的查詢。查詢重寫對用戶透明,用戶完全按常規編寫訪問資料庫的查詢語句,優化程序(CBO)自動決定是否對用戶提交的查詢進行重寫。查詢重寫是提高查詢性能的一種非常有效的方法,尤其是在數據倉庫環境中針對匯總、多表連接以及其它高成本的操作方面。
下面以一個非常簡單的例子來演示物化視圖和查詢重寫在優化SQL查詢性能方面的作用。
select dept.deptno,dept.dname,count(*)
from emp,dept
where emp.deptno=dept.deptno
group by dept.deptno,dept.dname
查詢計劃及主要統計數據如下:
執行計劃:
-----------------------------------------
……
2 1 HASH JOIN (Cost=5 Card=14 Bytes=224)
3 2 TABLE ACCESS (FULL) OF 'DEPT' (Cost=2 Card=4 Bytes=52)
4 2 TABLE ACCESS (FULL) OF 'EMP' (Cost=2 Card=14 Bytes=42)
主要統計數據:
-----------------------------------------
305 recursive calls
46 consistent gets
創建物化視圖EMP_DEPT:
create materialized view emp_dept build immediate
refresh on demand
enable query rewrite
as
select dept.deptno,dept.dname,count(*)
from emp,dept
where emp.deptno=dept.deptno
group by dept.deptno,dept.dname
/
再次執行查詢,執行計劃及主要統計數據如下:
執行計劃:
-------------------------------------
……
1 0 TABLE ACCESS (FULL) OF 'EMP_DEPT' (Cost=2 Card=327 Bytes=11445)
主要統計數據:
------------------------------------
79 recursive calls
28 consistent gets
可見,在建立物化視圖之前,首先執行兩個表的全表掃描,然後進行HASH連接,再進行分組排序和選擇操作;而建立物化視圖後,CBO自動將上述復雜操作轉換為對物化視圖EMP_DEPT的全掃描,相關的統計數據也有了很大的改善,遞歸調用(RECURSIVE CALLS)由305降到79,邏輯I/O(CONSISTENT GETS)由46降為28。
4.2.3 將頻繁訪問的小表讀入CACHE
邏輯I/O總是快於物理I/O。如果資料庫中存在被應用程序頻繁訪問的小表,可將這些表強行讀入KEEP池,從而避免物理I/O的發生。
4.3 多表連接優化
最能體現查詢復雜性的就是多表連接,多表連接操作往往要耗費大量的CPU時間和內存,因此多表連接查詢性能優化往往是SQL優化的重點與難點。
4.3.1 消除外部連接
通過消除外部連接,不僅使得到的查詢更易於讀取,而且性能也經常可以得到改善。一般的思路是,有以下形式的查詢:
SELECT …,OUTER_JOINED_TABLE.COLUMN
FROM SOME_TABLE,OUTER_JOINED_TO_TABLE
WHERE …=OUTER_JOINED_TO_TABLE(+)
可轉換為如下形式的查詢:
SELECT …,(SELECT COLUMN FROM OUTER_ JOINED_TO_TABLE WHERE …)FROM SOME_TABLE;
4.3.2 謂詞前推,優化中間結果
多表連接的性能低下多數是因為連接操作與過濾操作的次序不合理,大多數用戶在編寫多表連接查詢時,總是先進行連接操作再應用過濾條件,這導致伺服器做了太多的無用功。針對這類問題,其優化思路就是盡可能將過濾謂詞前推,使不符合條件的記錄提前被篩選掉,只對符合條件的少數記錄進行連接處理,這樣可成倍的提高SQL查詢效能。
標准連接查詢如下:
Select a.prod_name,sum(b.sale_quant),
sum(c.sale_quant),sum(d.sale_quant)
From proct a,tele_sale b,online_sale c,store_sale d
Where a.prod_id=b.prod_id and a.prod_id=c.prod_id
and a.prod_id=d.prod_id And a.order_date>sysdate-90
Group by a.prod_id;
啟用內嵌視圖,且將條件a.order_date>sysdate-90前移,優化後代碼如下:
Select a.prod_name,b.tele_sale_sum,c.online_sale_sum,d.store_sale_sum From proct a,
(select sum(sal_quant) tele_sale_sum from proct,tele_sale
Where proct.order_date>sysdate-90 and proct.prod_id =tele_sale.prod_id) b,
(select sum(sal_quant) online_sale_sum
from proct,tele_sale
Where proct.order_date>sysdate-90 and proct.prod_id =online_sale.prod_id) c,
(select sum(sal_quant) store_sale_sum
from proct,store_sale
Where proct.order_date>sysdate-90 and proct.prod_id =store_sale.prod_id) d,
Where a.prod_id=b.prod_id and
a.prod_id=c.prod_id and a.prod_id=d.prod_id;
5 結束語
SQL語言在資料庫應用中佔有非常重要的地位,其性能的優劣直接影響著整個信息系統的可用性。論文從影響SQL性能的最主要的三個方面入手,分析了如何優化SQL查詢的I/O、避免高成本的排序操作和優化多表連接。需要強調的一點是,理解SQL語句所解決的問題比SQL調優本身更重要,因此SQL調優需要系統分析人員、開發人員和資料庫管理員密切協作。
參考文獻
[1]Thomas Kyte.Effective Oracle by Design:Design and Build High-performance Oracle Application[M],The McGral- Hill Companies,Inc,2003
[2]Kevin Loney,George Koch,Oracle 9i:The Complete Reference[M],The McGral-Hill Companies,Inc,2002
[3] Oracle9i SQL Reference release 2(9.2)[OL/M],2002.10. http://www.oracle.com/technology/
[4] Oracle9i Data Warehousing Guide release 2(9.2) [OL/M],2002.03. http://www.oracle.com/technology/
[5]Alexey Danchenkov,Donald Burleson,Oracle Tuning:The Definitive Reference[OL/M],Rampant Techpress,2006.
[6] Oracle9i Database Concepts release 2(9.2) [OL/M],2002.08. http://www.oracle.com/technology/
[7] Oracle9i supplied plsql packages and types reference release 2(9.2) [OL/M],2002.12. http://www.oracle.com/ technology/
⑵ 求畢業論文:Microsoft SQL Server 的安全性研究
這里這里...
Microsoft SQL Server 的安全性研究-原創論文-刨文網:
http://www.paowen.com/thesis/2008/0418/down_18470.html
這是Microsoft SQL Server 的安全性研究的原創論文 自己去下~
雖然我不懂吧,但我用心找了!應該有點兒用吧
還有,附上1些資料 要自己寫的話肯定會用得上
Microsoft SQL Server 2005 安裝過程中出現的問題:
一.MSDTC運行帳戶問題
確認MSDTC (Microsoft Distributed Transaction Coordinator)服務正在運行,並且其啟動帳戶是NT AUTHORITY\Network Service」。按照以下步驟來檢查:
1. 點擊「開始」->「運行」->services.msc
2. 在服務列表中找到Distributed Transaction Coordinator,雙擊以編輯其屬性
3. 在屬性窗口切換至登錄選項卡,確認其啟動帳號為」NT AUTHORITY\Network Service」(密碼為空即可)
4. 啟動DTC服務再嘗試安裝SQL Server 2005
結果:這個步驟我已經嘗試過,不是這個問題。
二.分析SQL Server 2005安裝日誌
將C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\LOG\目錄下所有的文件(包括Summary.txt和Files子目錄下的所有文件)發送給微軟技術支持工程師進行分析。
結果:這個步驟我沒有做過,不過微軟工程師好像也沒有發現線索。
三.COPY安裝程序到硬碟安裝嘗試
建立 D:\SQLServer2005 文件夾, 創建以下兩個子文件夾:Servers和Tools。Serviers文件夾拷貝SQL Server2005的第一張安裝盤,包含所有要安裝主 SQL Server 2005 組件。 Tools文件夾拷貝SQL Server 2005的第二張盤,包含為 SQL Server 2005 聯機叢書和工具組件。運行D:\SQLServer2005\Servers 文件夾下的Setup.exe,啟動 SQL Server 2005 安裝程序。
結果:以上方式安裝過程中還是碰到同樣的問題。
四.重新安裝 COM+應用程序
1.從控制面板的「添加或刪除程序」中,單擊「添加/刪除 Windows 組件」。
2.在「Windows 組件向導」中,不對選擇做任何更改,單擊「下一步」。一直單擊以完成向導,然後再次運行 SQL Server 2005 安裝程序。
結果:問題沒有解決。
通過以上分析微軟的工程師總結如下:
目前還不確定引起這個錯誤的原因,並且在安裝日誌中也沒有找到更多的有用信息。可能引起此類錯誤的原因有以下幾種:
1. COM+的配置問題。
2. 帳號許可權問題。
3.有一些安裝失敗的Microsoft.SqlServer.MSMQTask.dll情況出現在測試版中,或者是由於未完全刪除的測試版組件而導致安裝失敗。
4. 除此之外還有一些類似的問題都是與64位操作系統或者Cluster環境有關。
我認為以上的一些原因可以排除,看來又是Live Meeting的時候了,和微軟工程師約定時間聯機查找問題。
五.手工注冊Microsoft.SqlServer.MSMQTask.dll
使用regsvcs.exe應用程序工具注冊.NET服務
使用cmd執行過程如下:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>regsvcs.exe "C:\Program Files\Micr
osoft SQL Server\90\DTS\Tasks\Microsoft.SqlServer.MSMQTask.dll"
Microsoft(R) .NET Framework 服務安裝實用工具版本 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
出現下列安裝錯誤:
1: 要執行此任務,您必須具有管理憑據。請與您的系統管理員聯系以獲得幫助。
2: 注冊程序集「Microsoft.SqlServer.MSMQTask, Version=9.0.242.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91」失敗。
3: 對注冊表項「HKEY_CLASSES_ROOT\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.
DataFileMessage」的訪問被拒絕。
分析結果:
這看起來是由於當前Windows用戶在該注冊表鍵值上沒有足夠的許可權造成的。經過研究類似案例,在某些情況下,即使是Administrators組的用戶也可能出現對這些鍵值沒有Full Control的情況。需要確認一下在這些注冊表值上,Administrators組用戶是否有Full Control。在注冊表中右鍵點擊注冊表值->選擇許可權來查看及改變該值上的許可權設置。如果許可權設置都正確的話,可以試著抓一個RegMon trace來看到底是不是注冊表鍵值的許可權問題導致這個錯誤。
看來問題終於找到了。
六.監控注冊表
1. 運行RegMon工具,通過菜單Options->Filter中設置Include list,把Regsvcs.exe加入Include list中。
2. 執行regsvcs.exe "C:\Program Files\Microsoft SQL Server\90\DTS\Tasks\Microsoft.SqlServer.MSMQTask.dll"
3. 在Regsvcs.exe執行失敗停止後,保存RegMon生成的log。
分析RegMon Trace。定位問題如下:
5484 17.98829079 RegSvcs.exe:3404 OpenKey HKCR\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask ACCESS DENIED NBCN-ZZ\Administrator
5488 17.98927116 RegSvcs.exe:3404 CreateKey HKCR\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask ACCESS DENIED NBCN-ZZ\Administrator
5489 17.98955727 RegSvcs.exe:3404 CreateKey HKCR\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask ACCESS DENIED NBCN-ZZ\Administrator
6431 19.89454460 RegSvcs.exe:3404 OpenKey HKCR\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask ACCESS DENIED NBCN-ZZ\Administrator
以上其實就是我一開始使用RegMon 時應該發現的問題,結果到現在才發現。
從這幾條記錄來看,問題是對注冊表值HKCR\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask的許可權問題。而RegSvcs進程在遇到這些許可權問題之後,並沒有馬上終止,還有一些別的注冊表活動。我查看了注冊表HKEY_CLASSES_ROOT\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.
DataFileMessage項的許可權,Administrators組沒有「完全控制」和「讀取」許可權,對其進行授權。重新運行注冊,結果又報另外的注冊表項沒有許可權,對其進行添加,直到注冊成功,以下是輸出結果。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>regsvcs.exe "C:\Program Files\Micr
osoft SQL Server\90\DTS\Tasks\Microsoft.SqlServer.MSMQTask.dll"
Microsoft(R) .NET Framework 服務安裝實用工具版本 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
正在自動將「Microsoft.SqlServer.ManagedDTS, Version=9.0.242.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91」導出為「C:\WINDOWS\assembly\GAC_MSIL\Microsoft.
SqlServer.ManagedDTS\9.0.242.0__89845dcd8080cc91\Microsoft.SqlServer.ManagedDTS.
tlb」。
警告: 程序集未聲明 ApplicationAccessControl 屬性。默認情況下啟用應用程序安全性。
已安裝的程序集:
程序集: C:\Program Files\Microsoft SQL Server\90\DTS\Tasks\Microsoft.Sql
Server.MSMQTask.dll
應用程序: Microsoft.SqlServer.MSMQTask
TypeLib: C:\Program Files\Microsoft SQL Server\90\DTS\Tasks\Microsoft.Sq
lServer.MSMQTask.tlb
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>
修改授權的相關注冊表項如下:
HKEY_CLASSES_ROOT\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.MessageQueueTask
HKEY_CLASSES_ROOT\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.EncryptionAlgorithmWrapper
HKEY_CLASSES_ROOT\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.ServCompMQTask
HKEY_CLASSES_ROOT\Microsoft.SqlServer.Dts.Tasks.MessageQueueTask.Formatter
再次運行「dcomcnfg」,打開系統組件服務。展開控制台根目錄->組件服務->計算機->我的電腦->COM+應用程序節點,發現Microsoft.SqlServer.MSMQTask節點,該COM+服務已經安裝成功。
就這些了...
⑶ 數據存儲技術論文3000字
資料庫存儲技術的出現,對於傳統的紙質存儲技術來說,具有革命性的作用,下面是我為大家精心推薦的數據存儲技術論文3000字,希望能夠對您有所幫助。
數據存儲技術論文3000字篇一
資料庫編程與資料庫存儲技術分析
【摘要】隨著信息技術的發展,以及人類社會文明進步,在與計算機相關的技術發展中,關於數據方面的處理工作,如今也越來越受到重視,在不同的發展時期,根據不同的計算機類型以及在實際應用的不同,資料庫的編程與資料庫存相儲技術方面的要求也有所差異,所以就要根據實際情況進行具體分析.本文就結合相關技術進行分析。
【關鍵詞】資料庫;編程;存儲;技術;分析
引言
在計算機的發展過程中,根據數據進行程序編輯,以及在計算機內部儲存程序的編輯都是非常重要的方面,雖然會根據所操作的計算機不同,而在具體操作過程中而出現有所區別,但是要針對相關的技術進行具體分析後就能夠發現,在數據存儲方面只要編輯好資料庫對應的程序,要取得好的工作成績不不難,所以研究好關於資料庫編程和資料庫存儲相關的技術,就能夠代替真實人的工作,取得良好的工作效果,促進計算機行業的發展.
隨著計算機的普及應用,計算機應用軟體得到了快速的發展,從某種意義上來說,計算機之所以能夠在各個領域中得到應用,很大程度上就是因為相應的應用軟體,根據各個行業的特點,軟體公司都開發了針對性的應用軟體,通過這些軟體的使用,能夠給實際的工作帶來方便,提升工作的效率,例如在工業自動化中,現在的計算機技術已經具有一定的智能性,可以代替人來進行操作,這種方式出現錯誤的幾率很低,而且計算機不需要休息,生產效率得到了大幅提高,在計算機軟體中,尤其是一些大型的軟體,資料庫是軟體的核心內容,因此在計算機軟體編寫過程中,資料庫編程和存儲技術,也是一個核心內容,受到我國特殊歷史原因影響,我國的軟體行業發展較慢,因此資料庫編程和存儲技術的核心都掌握在西方發達國家手中。
1、資料庫存儲技術簡述
1.1資料庫存儲技術的概念
資料庫的發展很大程度上依賴於計算機性能的提升,在計算機出現的早期,並沒有資料庫的概念,當時計算機的性能很低,只能進行一些簡單的數字運算,體積也非常龐大,還沒有數據存儲的概念,隨著晶體管和集成電路應用在計算機製造中,計算機的性能得到了大幅的提升,開始在各個領域中進行應用,當計算機被用於數據管理時,尤其是一些復雜的數據,傳統的存儲方式已經無法滿足人們的需要,在這種背景下,DSMS誕生了,這種資料庫管理系統在當時看來,是資料庫管理技術的一次革命,隨著計算機性能的提升,逐漸出現了SQL、Oracle等,在傳統的資料庫編程中,由於資料庫編寫的時期不同,使用的編寫語言也有一定的差異,目前常使用的軟體有VB、JAVA、VC、C++等,利用這些編程軟體,都可以編寫一個指定的資料庫,由於每個軟體自身都有一定的特點,因此不同領域的數據編程中,所選擇的編程軟體業有一定的差異。
1.2資料庫存儲技術的發展
資料庫的概念最早可以追溯到20世紀50年代,但是當時資料庫的管理,還處於傳統人工的方式,並沒有形成軟體的形式,因此並不能算資料庫存儲技術的起源,在20世紀60年代中期,隨著計算機存儲設備的出現,使得計算機能夠存儲數據,在這種背景下,數據管理軟體誕生了,但是受到當時技術條件的限制,只能以文件為單位,將數據存儲在外部存儲設備中,人們開發了帶有界面的操作系統,以便對存儲的數據進行管理,隨著計算機的普及應用,計算機能夠存儲的數據越來越多,人們對資料庫存儲技術有了更高的要求,尤其是企業用戶的增加,希望資料庫存儲技術能夠具有很高的共享能力,數據存儲技術在這一時期,得到了很大的發展,現在的資料庫存儲技術,很大程度上也是按照這一時期的標准,來進行相應的開發,隨著資料庫自身的發展,出現了很多新的資料庫存儲技術,如數據流、Web數據管理等。
1.3資料庫存儲技術的作用
資料庫存儲技術的出現,對於傳統的紙質存儲技術來說,具有革命性的作用,由於紙質存儲數據的方式,很容易受到水、火等災害,而造成數據的損失,人類文明從有文字開始,就記錄了大量的歷史信息,但是隨著時間的推移,很多數據資料都損毀了,給人類文明造成了嚴重的損失,而資料庫存儲技術就能夠很好的避免這個問題,在資料庫的環境下,信息都會轉化成電子的方式,存儲在計算機的硬碟中,對於硬碟的保存,要比紙質的書籍等簡單的多,需要的環境比較低,最新的一些伺服器存儲器,甚至具有防火的性能,而且資料庫中的數據,可以利用計算機很簡單的進行復制,目前很多企業資料庫,為了最大程度上保證數據的安全性,都會建立一個映像資料庫,定期的對資料庫中的信息進行備份,如果工作的資料庫出現了問題,就可以通過還原的方式,恢復原來的數據。
2、資料庫編程與資料庫存儲技術的關系
2.1資料庫編程決定資料庫存儲的類型
通過對計算機軟體的特點進行分析可以知道,任何軟體要想具有相關的功能,都需要在編程過程中來實現,對於資料庫程序來說也是一樣,在資料庫編程的過程中,能夠決定資料庫存儲的類型,根據應用領域的不同,資料庫存儲技術也有一定的差異,如在電力、交通控制等領域中,應用的大多是實時資料庫,而網上的視頻網站等,大多採用關系資料庫,其次還有商業資料庫、自由資料庫、微型資料庫等,每種資料庫的出現,都是為了滿足實際應用的需要,雖然在不同歷史時期,一種資料庫成為主流,但是對於資料庫程序的編寫者來說,這些資料庫的編寫;並沒有太大的差異,雖然不同的程序編寫人員,由於所受教育和習慣的不同,在實際編寫的過程中,使用的程序編寫軟體不同,但無論是VB、VF還是C++等,都可以實現每種資料庫類型的編寫,從某種意義上來說,資料庫類型的確定,通常是在軟體需求分析階段中進行設計,然後在數據編程階段來實現,
2.2資料庫存儲技術是資料庫編程的核心
對於資料庫程序來說,最重要的功能就是存儲數據,通常情況在,一個資料庫程序會分成幾個模塊,其中核心模塊就是資料庫存儲技術。
結語
在目前國內經濟發展形勢下,針對於計算機的軟體行業的形式,也在大力推動下,成為一個焦點行業,隨著行業的發展,相關促進簡便工作的程序也得到了相應的研究和發明中,就算是一些不具備計算機專業知識的普通使用著,不管在使用還是研發程序上也是介可以的,只是針對於資料庫編程和資料庫存儲技術方面進行分析,但是作為系統的核心區域,所以相關的技術也是非常重要的,所以要想提升工作效率,緩解工作壓力,就要結合使用情況,在所能應用的范圍內,選擇最具有優勢的相應軟體處理技術,以此為研發中心,開發出所需要的軟體類型,進行所有的數據整理工作,對於辦公室工作極大范圍內的促進,對於資料庫編程於數據存儲方面的技術是非常重要的。
參考文獻
[1]董慧群,王福明.基於LabWindows/CVI的資料庫編程[J].山西電子技術,2011(04):55-56.
[2]吳敏寧,高楠.Delphi資料庫編程開發[J].電腦知識與技術,2009(11):2882-2883.
[3]鄭剛,唐紅梅.面向對象資料庫中數據模型及存儲結構的研究[J].計算機工程,2002(03):65-67.
點擊下頁還有更多>>>數據存儲技術論文3000字
⑷ 資料庫論文 急求!!追加1000分
一、三個世界
1、現實世界 人們管理的對象存於現實世界中。現實世界的事物及事物之間存在著聯系,這種聯系是客觀存在的,是由事物本身的性質決定的。例如學校的教學系統中有教師、學生、課程,教師為學生授課,學生選修課程並取得成績。
2、概念世界 概念世界是現實世界在人們頭腦中的反映,是對客觀事物及其聯系的一種抽象描述,從而產生概念模型。概念模型是現實世界到機器世界必然經過的中間層次。涉及到下面幾個術語:
實體:我們把客觀存在並且可以相互區別的事物稱為實體。實體可以是實際事物,也可以是抽象事件。如一個職工、一場比賽等。
實體集:同一類實體的集合稱為實體集。如全體職工。注意區分"型"與"值"的概念。如每個職工是職工實體"型"的一個具體"值"。
屬性:描述實體的特性稱為屬性。如職工的職工號,姓名,性別,出生日期,職稱等。
關鍵字:如果某個屬性或屬性組合的值能唯一地標識出實體集中的每一個實體,可以選作關鍵字。用作標識的關鍵字,也稱為碼。如"職工號"就可作為關鍵字。
聯系:實體集之間的對應關系稱為聯系,它反映現實世界事物之間的相互關聯。聯系分為兩種,一種是實體內部各屬性之間的聯系。另一種是實體之間的聯系。
3、機器世界 存入計算機系統里的數據是將概念世界中的事物數據化的結果。為了准確地反映事物本身及事物之間的各種聯系,資料庫中的數據必須有一定的結構,這種結構用數據模型來表示。數據模型將概念世界中的實體,及實體間的聯系進一步抽象成便於計算機處理的方式。
數據模型應滿足三方面要求:一是能比較真實地模擬現實世界;二是容易為人所理解;三是便於在計算機上實現。數據結構、數據操作和完整性約束是構成數據模型的三要素。數據模型主要包括網狀模型、層次模型、關系模型等,它是按計算機系統的觀點對數據建模,用於DBMS的實現。
關系資料庫採用關系模型作為數據的組織方式。 關系資料庫因其嚴格的數學理論、使用簡單靈活、數據獨立性強等特點,而被公認為最有前途的一種資料庫管理系統。它的發展十分迅速,目前已成為占據主導地位的資料庫管理系統。自20世紀80年代以來,作為商品推出的資料庫管理系統幾乎都是關系型的,例如,Oracle,Sybase,Informix,Visual FoxPro等。
網路資料庫也叫Web資料庫。促進Internet發展的因素之一就是Web技術。由靜態網頁技術的HTML到動態網頁技術的CGI、ASP、PHP、JSP等,Web技術經歷了一個重要的變革過程。Web已經不再局限於僅僅由靜態網頁提供信息服務,而改變為動態的網頁,可提供互動式的信息查詢服務,使信息資料庫服務成為了可能。Web資料庫就是將資料庫技術與Web技術融合在一起,使資料庫系統成為Web的重要有機組成部分,從而實現資料庫與網路技術的無縫結合。這一結合不僅把Web與資料庫的所有優勢集合在了一起,而且充分利用了大量已有資料庫的信息資源。圖1-1是Web資料庫的基本結構圖,它由資料庫伺服器(Database Server)、中間件(Middle Ware)、Web伺服器(Web Server)、瀏覽器(Browser)4部分組成。
Web資料庫的基本結構
它的工作過程可簡單地描述成:用戶通過瀏覽器端的操作界面以交互的方式經由Web伺服器來訪問資料庫。用戶向資料庫提交的信息以及資料庫返回給用戶的信息都是以網頁的形式顯示。
1.1.1 Internet技術與相關協議
Internet技術在Web資料庫技術中扮演著重要的角色。Internet(網際網路)專指全球最大的、開放的、由眾多網路相互連接而成的計算機網路,並通過各種協議在計算機網路中傳遞信息。TCP/IP協議是Internet上使用的兩個最基本的協議。因此也可以說Internet是全球范圍的基於分組交換原理和TCP/IP協議的計算機網路。它將信息進行分組後,以數據包為單位進行傳輸。Internet在進行信息傳輸時,主要完成兩項任務。
(1)正確地將源信息文件分割成一個個數據包,並能在目的地將源信息文件的數據包再准確地重組起來。
(2)將數據包準確地送往目的地。
TCP/IP協議的作用就是為了完成上述兩項任務,規范了網路上所有計算機之間數據傳遞的方式與數據格式,提供了數據打包和定址的標准方法。
1.TCP/IP協議
TCP協議(Transmission Control Protocol,傳輸控制協議)規定了分割數據和重組數據所要遵循的規則和要進行的操作。TCP協議能保證數據發送的正確性,如果發現數據有損失,TCP將重新發送數據。
2.IP協議
在Internet上傳送數據往往都是遠距離的,因此在傳輸過程中要通過路由器一站一站的轉接來實現。路由器是一種特殊的計算機,它會檢測數據包的目的地主機地址,然後決定將該數據包送往何處。IP協議(Internet Protocol,網際協議)給Internet中的每一台計算機規定了一個地址,稱為IP地址。IP地址的標準是由4部分組成(例如202.112.203.11),其中前兩部分規定了當前使用網路的管理機構,第3部分規定了當前使用的網路地址,第4部分規定了當前使用的計算機地址。
Internet上提供的主要服務有E-mail、FTP、BBS、Telnet、WWW等。其中WWW(World Wide Web,萬維網)由於其豐富的信息資源而成為Internet最為重要的服務。
3.HTTP協議
HTTP協議(Hypertext Transfer Protocol,超文本傳輸協議)應用在WWW上,其作用是完成客戶端瀏覽器與Web伺服器端之間的HTML數據傳輸。
1.1.2 Web的工作原理與工作步驟
萬維網簡稱為Web。Web可以描述為在Internet上運行的、全球的、交互的、動態的、跨平台的、分布式的、圖形化的超文本信息系統。
1.Web的工作原理
Web是伴隨著Internet技術而產生的。在計算機網路中,對於提供Web服務的計算機稱為Web伺服器。Web採用瀏覽器/伺服器的工作方式。每個Web伺服器上都放置著大量的Web信息。Web信息的基本單位是Web頁(網頁),多個網頁組成了一個Web節點。每個Web節點的起始頁稱為「主頁」,且擁有一個URL地址(統一資源定位地址)。Web節點之間及網頁之間都是以超文本結構(非線性的網狀結構)來進行組織的。
2.Web的工作步驟
Web的工作步驟如下。
(1)用戶打開客戶端計算機中的瀏覽器軟體(例如Internet Explorer)。
(2)用戶輸入要啟動的Web主頁的URL地址,瀏覽器將生成一個HTTP請求。
(3)瀏覽器連接到指定的Web伺服器,並發送HTTP請求。
(4)Web伺服器接到HTTP請求,根據請求的內容不同作相應的處理,再將網頁以HTML文件格式發回給瀏覽器。
(5)瀏覽器將網頁顯示到屏幕上.
圖1-2 Web的工作步驟
1.1.3 WWW世界中的標記語言
1.HTML語言
HTML(Hypertext Markup Language,超文本標記語言)是創建網頁的計算機語言。所謂網頁實際上就是一個HTML文檔。文檔內容由文本和HTML標記組成。HTML文檔的擴展名就是.html或.htm。瀏覽器負責解釋HTML文檔中的標記,並將HTML文檔顯示成網頁。
(1)HTML標記
HTML標記的作用是告訴瀏覽器網頁的結構和格式。每一個標記用尖括弧<>括起來。大多數標記都有一個開始標記和一個結束標記。標記不分大小寫。多數標記都帶有自己的屬性。例如字體標記<FONT>有FACE、COLOR、SIZE等屬性:FACE定義字體;COLOR定義字體的顏色;SIZE定義字體的大小。
使用格式:<FONT FACE= SONG SIZE=3 COLOR=RED > BEIJING </FONT>。
網頁中有很多文本鏈接和圖片鏈接。鏈接,又被稱為超鏈接,用於鏈接到WWW萬維網中的其他網頁上。在HTML文檔中表示超鏈接的標記是<A>,通過屬性HREF指出鏈接的網頁地址URL。
使用格式:<A HREF=http://www.bigc.e.cn/ > BEIJING </A>。
(2)HTML程序
HTML程序必須以<HTML>標記開始,以</HTML>標記結束。在<HTML>和</HTML>標記之間主要由兩部分組成:文件頭和文件體。文件頭用標記<HEAD> </HEAD>來標識,文件體用標記<BODY></BODY>來標識。在文件的頭部通常包含整個網頁的一些信息。例如<TITLE></TITLE>標記是用來說明網頁的名稱;<META></META>標記是用來說明網頁的其他信息,如設計者姓名和版權信息等。所有在瀏覽器中要顯示的內容稱為網頁的主體,必須放在<BODY></BODY>標記中。下面給出的是一個空網頁的HTML程序。
<HTML>
<HEAD>
<TITLE>(在此標記中寫網頁的標題)</TITLE>
</HEAD>
<BODY>
(在此標記中寫網頁的內容)
</BODY>
</HTML>
(3)HTML規范
HTML規范又稱為HTML標准,它總在不斷地發展。每一新版本的出現,HTML都會增加新的特性和內容。有關HTML版本的詳細信息請訪問www.w3.org網站。
在不同的瀏覽器中,網頁的顯示效果可能會有所不同。每一個瀏覽器都使用自己獨特的方式解釋HTML文檔中的標記,並且多數瀏覽器不完全支持HTML的所有特性。因為,像Microsoft和Netscape公司在HTML標准上又開發了一些特有的HTML標記和屬性,稱之為HTML的擴展。這些標記和屬性只被他們自己的瀏覽器所識別,不可能被其他公司的瀏覽器識別。如果瀏覽器不能識別HTML文檔中的標記,則會忽略這個標記。
(4)HTML程序的編輯環境與運行環境
HTML文檔是一個普通的文本文件(ASCII),不包含任何與平台、程序有關的信息。因此HTML文檔可以利用任何文本編輯器來方便地生成。要注意的是HTML文檔的擴展名必須是.html或.htm。運行HTML文檔可以在任何瀏覽器下進行,並可在瀏覽器上查看網頁的HTML源代碼。
關於HTML語言中標記的種類與使用方法將會在第5章中更詳細地進行介紹。
2.可擴展標記語言(XML)
HTML是Web上的通用語言,隨著Internet的深入人心,WWW上的Web文件日益復雜化、多樣化,人們開始感到了HTML這種固定格式的標記語言的不足。1996年W3C開始對HTML的後續語言進行研究,並於1998年正式推出了XML(Extensible Markup Language,可擴展標記語言)。在設計網頁時,XML提供了比HTML更靈活的方法。
(1)XML語言的特點
XML是國際組織W3C為適應WWW的應用,將SGML (Standard Generalized Markup Language)標准進行簡化形成的元標記語言。簡單地說,XML是使用標記來描述內容或與內容相關的形式信息的通用語言。一個XML文檔由標記和字元數據組成。
而作為元標記語言,XML不再使標記固定,允許網頁的設計者定義數量不限的標記來描述內容,同時還允許設計者創建自己的使用規則。
(2)XML的DTD
DTD(Document Type Definition,文檔類型定義)是一組應用在XML文檔中的自定義標記語言的技術規范。DTD中定義了標記的含義及關於標記的語法規則。語法規則中確定了在XML文檔中使用哪些標記符,它們應該按什麼次序出現,標記符之間如何 嵌套,哪些標記符有屬性等等。DTD可以包含在它所描述的XML文檔中,但通常它是一份單獨的文檔或者一系列文檔。作為外部文件可通過URL鏈接,被不同的XML文檔 共享。
XML把DTD的定義權開放,不同行業可以根據自己的實際需求定義描述內容的DTD,以適應本行業內部的信息交流和存檔需要。因此,適合於不同行業、不同平台的標記語言大批涌現。
(3)XML的CSS與XSL
強調內容描述與形式描述的分離,一方面可以使XML文件的編寫者更集中精力於數據本身,而不受顯示方式的細節影響;另一方面允許為相同的數據定義不同的顯示方式,從而適合於不同應用、不同媒體,使XML數據得到最大程度的重用。XML文檔數據的顯示形式是通過樣式單定義的。CSS(Cascading Style Sheets)是XML使用的一種標準的級聯樣式單,XSL(Extensible Style Language)則是可擴展的樣式語言。
由於XML允許用戶創建任何所需的標記,而通用瀏覽器卻既無法預期用戶標記的意義,又無法為顯示這些標記而提供規則,因此用戶必須為自己創建的XML文檔編寫樣式單,樣式單可以實現共享。
瀏覽器對一個XML文檔的處理過程是,首先去關聯它所指定的樣式單文件,如果該樣式單是一個XSL文件,則按照規定對XML數據進行轉換然後再顯示,XSL本身也是基於XML語言的,可以將XML轉化為HTML後再顯示。如果該樣式單是一個CSS文件,瀏覽器就會按照樣式單的規定給每個標記賦予一組樣式後再顯示。
1.2 Web資料庫訪問技術
Web資料庫訪問技術通常是通過三層結構來實現的,如圖1-3所示。目前建立與Web資料庫連接訪問的技術方法可歸納為CGI技術,ODBC技術和ASP、JSP、PHP 技術。
Web資料庫訪問的三層結構
1.2.1 CGI技術
CGI(Common Cateway Interface,通用網關界面)是一種Web伺服器上運行的基於Web瀏覽器輸入程序的方法,是最早的訪問資料庫的解決方案。CGI程序可以建立網頁與資料庫之間的連接,將用戶的查詢要求轉換成資料庫的查詢命令,然後將查詢結果通過網頁返回給用戶。一個CGI工作的基本原理如圖1-4所示。
CGI程序需要通過一個介面才能訪問資料庫。這種介面多種多樣,資料庫系統對CGI程序提供了各種資料庫介面如Perl、C/C++、VB等。為了使用各種資料庫系統,CGI程序支持ODBC方式,通過ODBC介面訪問資料庫。
CGI工作流程
1.2.2 ODBC技術
ODBC(Open Database Connectivity,開放資料庫互接)是一種使用SQL的應用程序介面(API)。ODBC最顯著的優點就是它生成的程序與資料庫系統無關,為程序員方便地編寫訪問各種DBMS的資料庫應用程序提供了一個統一介面,使應用程序和資料庫源之間完成數據交換。ODBC的內部結構為4層:應用程序層、驅動程序管理器層、驅動程序層、數據源層。它們之間的關系如圖1-5所示。由於ODBC適用於不同的資料庫產品,因此許多伺服器擴展程序都使用了包含ODBC層的系統結構。
ODBC的內部結構
Web伺服器通過ODBC資料庫驅動程序向資料庫系統發出SQL請求,資料庫系統接收到的是標准SQL查詢語句,並將執行後的查詢結果再通過ODBC傳回Web伺服器,Web伺服器將結果以HTML網頁傳給Web瀏覽器,工作原理如圖1-6所示。
Web伺服器通過ODBC訪問資料庫
由於Java語言所顯示出來的編程優勢贏得了眾多資料庫廠商的支持。在資料庫處理方面,Java提供的JDBC為資料庫開發應用提供了標準的應用程序編程介面。與ODBC類似,JDBC也是一種特殊的API,是用於執行SQL語句的Java應用程序介面。它規定了Java如何與資料庫之間交換數據的方法。採用Java和JDBC編寫的資料庫應用程序具有與平台無關的特性。
1.2.3 ASP、JSP、PHP技術
ASP是Microsoft開發的動態網頁技術,主要應用於Windows NT+IIS或 Windows 9x+PWS平台。確切地說ASP不是一種語言,而是Web伺服器端的開發環境。利用ASP可以產生和運行動態的、交互的、高性能的Web服務應用程序。ASP支持多種腳本語言,除了VBScript和Pscript,也支持Perl語言,並且可以在同一ASP文件中使用多種腳本語言以發揮各種腳本語言的最大優勢。但ASP默認只支持VBScript和Pscript,若要使用其他腳本語言,必須安裝相應的腳本引擎。ASP支持在伺服器端調用ActiveX組件ADO對象實現對資料庫的操作。在具體的應用中,若腳本語言中有訪問資料庫的請求,可通過ODBC與後台資料庫相連,並通過ADO執行訪問庫的操作。關於ASP的編程技術將會在第7章中詳細介紹。
JSP是Sun公司推出的新一代Web開發技術。作為Java家族的一員,幾乎可以運行在所有的操作系統平台和Web伺服器上,因此JSP的運行平台更為廣泛。目前JSP支持的腳本語言只有Java。JSP使用JDBC實現對資料庫的訪問。目標資料庫必須有一個JDBC的驅動程序,即一個從資料庫到Java的介面,該介面提供了標準的方法使Java應用程序能夠連接到資料庫並執行對資料庫的操作。JDBC不需要在伺服器上創建數據源,通過JDBC、JSP就可以實現SQL語句的執行。
PHP是Rasmus Lerdorf推出的一種跨平台的嵌入式腳本語言,可以在Windows、UNIX、Linux等流行的操作系統和IIS、Apache、Netscape等Web伺服器上運行,用戶更換平台時,無需變換PHP代碼。PHP是通過Internet合作開發的開放源代碼軟體,它借用了C、Java、Perl語言的語法並結合PHP自身的特性,能夠快速寫出動態生成頁面。PHP可以通過ODBC訪問各種資料庫,但主要通過函數直接訪問資料庫。PHP支持目前絕大多數的資料庫,提供許多與各類資料庫直接互連的函數,包括Sybase、Oracle、SQL Server等,其中與SQL Server資料庫互連是最佳組合。
1.3 網路資料庫應用系統的層次體系
當前,Internet/Intranet技術發展異常迅速,越來越多的資料庫應用軟體運行在Internet/Intranet環境下。在此之前,資料庫應用系統的發展經歷了單機結構、集中式結構、客戶機/伺服器(C/S)結構之後,隨著Internet的普及,又出現了瀏覽器/伺服器(B/S)結構與多層結構。在構造一個應用系統時,首先考慮的是系統的體系結構,採用哪種結構取決於系統的網路環境、應用需求等因素。
1.3.1 客戶機/伺服器結構
1.二層C/S結構
二層C/S結構是當前非常流行的資料庫系統結構,在這種結構中,客戶機提出請求,伺服器對客戶機的服務請求做出回答。它把界面和數據處理操作分開在前端(客戶端)和後端(伺服器端),這個主要特點使得C/S系統的工作速度主要取決於進行大量數據操作的伺服器,而不是前端的硬體設備;同時也大大降低了對網路傳輸速度的要求,因為只須客戶端把服務請求發送給資料庫伺服器,資料庫伺服器只把服務結果傳回前端,如圖1-7所示。
在設計時,對數據可能有如下不同的處理形式。
(1)在處理時,客戶機先向伺服器索取數據,然後釋放資料庫,即客戶機發出的是文件請求,在客戶機端處理數據,最後將結果送回伺服器。這種處理方式的缺點很明顯:所有的應用處理都在客戶端完成,這就要求客戶端的計算機必須有足夠的能力,以便執行需要的任何程序。更為糟糕的是,由於所有的處理均在客戶端完成,每次運行時都要將文件整體傳送到客戶端,然後才能執行。如:Student表中有30 000條記錄,客戶端發出命令:
Select * From Student Where Sno='200101'
這條命令將要求伺服器將Student表中的所有記錄傳送到客戶端,然後在客戶端執行查詢,結果只用到一條記錄;如果查詢的記錄不存在,網路傳輸的數據實際上是無 用的。如此大的數據傳輸量是不可想像的。因此,人們提出了在伺服器中能夠執行部分代碼的客戶機/伺服器結構。
(2)在處理時,客戶機接受用戶要求,並發給伺服器;在伺服器端處理用戶要求,最後將結果傳回客戶機顯示或列印。這種處理方式網路通信量較小。客戶機向伺服器發出的是處理請求,而不是文件請求,處理請求中的代碼在伺服器端執行後向客戶機傳送處理後的結果。
這樣,為了特定任務,客戶機上的程序和伺服器上的程序協同工作:客戶機端的代碼用於完成用戶的輸入輸出及數據的檢查,而伺服器端的代碼完成對資料庫的操作。
客戶機/伺服器結構的另一個主要特點在於軟體、硬體平台的無關性。資料庫伺服器上的資料庫管理系統集中負責管理數據,它向客戶端提供一個開放的使用環境,客戶端通過資料庫介面,如ODBC(開放資料庫連接)和SQL語言訪問資料庫,也就是說,不管客戶端採用什麼樣的硬體和軟體,它只要能夠通過網路和資料庫介面程序連接到伺服器,就可對資料庫進行訪問。
在客戶機/伺服器結構中,常把客戶機稱為前台,而把伺服器端稱為後台。前台應用程序的功能包括用戶界面、接收用戶數據、處理應用邏輯、向後台發出請求、同時接收後台返回的結果,最後再將返回的結果按一定的格式或方式顯示給用戶。而後台伺服器則負責共享外部設備、存取共享數據、響應前台客戶端的請求並回送結果等工作。前台的應用程序和數據一般是用戶專用的,而後台的數據和代碼是所有用戶可以共享的。
由於資料庫伺服器不僅要管理共享數據,保證數據的完整性,還要執行一部分代碼,完成客戶端的一些處理請求,所以對用於伺服器的計算機提出較高的要求。最好要採用一台專用的伺服器,有較快的處理速度,有大容量的硬碟和內存,支持磁帶等大容量的存儲設備。
上面講的客戶機/伺服器結構將應用分在了客戶機、伺服器兩級,稱其為兩層客戶機/ 伺服器結構。總之,兩層C/S結構的基本工作方式是客戶程序向資料庫伺服器發送SQL請求,伺服器返回數據或結果。
這種C/S結構有兩種實現方式,一種是客戶來完成表示部分和應用邏輯部分,而伺服器完成數據訪問部分,這種情況是以客戶為中心的,適用於應用相對簡單、數據訪問量不是很大的情況。另一種是以伺服器為中心的,把一些重要的應用邏輯部分放到伺服器上,這樣可充分利用伺服器的計算能力,減少網路上需要傳送的數據。通常以存儲過程和觸發器的形式出現,但存儲過程都依賴於特定資料庫,不同資料庫之間很難移植,而三層C/S結構可以很好地解決這個問題。
注意:觸發器(trigger)是資料庫系統中,一個在插入、刪除、修改操作之後運行的記錄級事件代碼。不同的事件可以對應不同的動作。通常有3種類型的觸發器:INSERT觸發器、DELETE觸發器和UPDATE觸發器。
2.三層C/S結構
由於兩層結構的客戶機/伺服器系統本身固有的缺陷,使得它不能應用於一些大型、結構較為復雜的系統中,故出現了3層結構的客戶機/伺服器系統,將兩層結構中伺服器部分和客戶端部分的應用單獨劃分出來,即採用「客戶機—應用伺服器—資料庫伺服器」結構(如圖1-8所示)。典型的資料庫應用可分為三部分:表示部分、應用邏輯(商業邏輯)部分和數據訪問部分,三層結構便是對應於這三部分。
圖1-8 三層C/S結構
其中,應用伺服器和資料庫伺服器可位於同一主機,也可位於不同主機。客戶機是應用的用戶介面部分,負責用戶與應用程序的交互,運行在客戶機端的軟體也稱為表示層軟體。應用伺服器存放業務邏輯層(也稱為功能層)軟體,是應用邏輯處理的核心,實現具體業務。它能響應客戶機請求,完成業務處理或復雜計算。若有資料庫訪問任務時,應用伺服器層可根據客戶機的要求向資料庫伺服器發送SQL指令。應用邏輯變得復雜或增加新的應用時,可增加新的應用伺服器。資料庫伺服器便是用來執行功能層送來的SQL指令,完成數據的存儲、訪問和完整性約束等。操作完成後再通過應用伺服器向客戶機返回操作結果。
1.3.2 瀏覽器/伺服器結構
隨著Internet技術和Web技術的廣泛應用,C/S結構已無法滿足人們的需要。因為在典型C/S體系中,通常為客戶安裝前端應用程序的做法已不再現實,並且限制客戶端工作環境只能基於Windows、Macintosh或UNIX等操作系統也不切實際。於是基於瀏覽器/伺服器結構(Browser/Server)的系統應運而生。
採用B/S結構後,在客戶端只需安裝一個通用的瀏覽器即可,不再受具體操作系統和硬體的制約,實現了跨平台的應用。
基於B/S結構的典型應用通常採用三層結構:「瀏覽器—Web伺服器—資料庫伺服器」,B/S模式的工作原理是:通過瀏覽器以超文本的形式向Web伺服器提出訪問資料庫的請求,Web伺服器接受客戶請求後,激活對應的CGI程序將超文本HTML語言轉化為SQL語法,將這個請求交給資料庫,資料庫伺服器得到請求後,進行數據處理,然後將處理結果集返回給CGI程序。CGI再將結果轉化為HTML,並由Web伺服器轉發給請求方的瀏覽器,如圖1-9所示。
圖1-9 B/S工作原理
在B/S模式中,客戶端的標准配置是瀏覽器,如IE;業務功能處理由獨立的應用伺服器處理,Web伺服器成為應用處理的標准配置;數據處理仍然由資料庫伺服器處理。
從本質上講,B/S結構與傳統的C/S結構都是以同一種請求和應答方式來執行應用的,區別主要在於:C/S是一種兩層或三層結構模式,其客戶端集中了大量應用軟體,而B/S是一種基於超鏈接(HyperLink)、HTML、Java的三級或多級C/S結構,客戶端僅需單一的瀏覽器軟體,是一種全新的體系結構,解決了跨平台問題。到目前,這兩種結構在不同方面都有著廣泛的應用。雖然C/S結構在Internet環境下明顯不如B/S結構具有優勢,但它在區域網環境下仍具有優勢。
1.3.3 Internet/Intranet信息系統的多層體系結構
多層結構應用軟體與傳統的兩層結構應用軟體相比,有可伸縮性好、可管理性強、安全性高、軟體重用性好等諸多優點,如何在Internet/Intranet環境下構建應用軟體體系結構就成為一個非常重要的問題,也是現今軟體體系研究的一個新熱點。
目前各種技術層出不窮,如最初的靜態HTML頁面、簡單的CGI網關程序、Java Applet程序,現在的ASP等Web資料庫技術,還有動態的Java在線游戲及PHP技術等。
實際上,多層的概念是由Sun公司提出來的。Sun公司提出的多層應用體系包括4層:客戶層、頂端Web服務層、應用服務層和資料庫層。其中頂端Web服務層是Sun公司多層體系結構中非常重要的一層,它主要起代理和緩存的作用。頂端Web伺服器的作用是緩存本地各客戶機經常使用的Java Applet程序和靜態數據,通常被放置在客戶機所在的區域網內,起到一個Java Applet主機(向Web瀏覽器傳送Java Applet程序的計算機)和訪問其他服務的代理作用。與普通代理伺服器的作用相同。構建多層結構應用軟體時,選用Java平台是一個很好的選擇,因為它跨越各應用平台。總之,在Java平台上構建多層應用軟體體系代表著今後Internet/Intranet應用的趨勢。
⑸ 在SQL 里哪些視圖可以更新,哪些不可以更新。(要寫500字的論文)希望提供全面一點的~
視圖一般式可以更新的,但前提是不能有聚合函數或分組等。
在這個前提下:
1:簡單視圖
就是由一個表生成出來的視圖,這種情況你更新她就和更新表一樣
2:二次加工出來的簡單視圖
仍然是一個表出來的視圖,但是視圖中存在通過函數或計算二次加工出來的其他欄位。更新的時候只要不更新這些加工出來的欄位也是可以更新的。
3:組合視圖
通過表之間關聯聯合等出來的復雜視圖。這種視圖更新的時候要注意你所更新的列要來自同一個表,也是可以更新的。
4:靜態視圖
這種視圖等同於表可以直接更新,但是更新的數據盡在視圖中反映出來,不反映到原表
5:其他視圖
通過表函數等其他生成的更為復雜的視圖。一般不可更新