DECLARE @sSql varchar(30)
十年的湛江網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整湛江建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“湛江網(wǎng)站設(shè)計(jì)”,“湛江網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
set @sSql='深圳市思源軟件有限公司'
--1.1
select LEN(@sSql)
--1.2
select SUBSTRING(@sSql,4,2)
--1.3
select REPLACE(@sSql,'思源軟件','思源計(jì)算機(jī)軟件')
--1.4
select CONVERT(varchar(20),GETDATE(),23)
--1.5
DECLARE @Date1 date,@Date2 date
select @Date1='2008-03-01',@Date2='2007-12-31'
select DATEDIFF(DAY,@Date2,@Date1)
DBA數(shù)據(jù)庫(kù)管理員要求
近年來(lái),我一直在和數(shù)據(jù)庫(kù)管理員打交道,并直接面試了很多DBA職位。本文想概括一下IT行業(yè)對(duì)DBA的要求,以及國(guó)內(nèi)DBA的新資現(xiàn)狀??梢钥隙ǖ卣f(shuō),做一個(gè)高級(jí)DBA是很不錯(cuò)的職業(yè)。如果你打算成為一名DBA,那么希望本文起到拋磚引玉的作用。
什么是DBA
數(shù)據(jù)庫(kù)管理員,英文是Database Administrator,簡(jiǎn)稱DBA。這個(gè)職位對(duì)不同的人意味著不同的意義。一個(gè)小的軟件開發(fā)工作室和一個(gè)分工高度明細(xì)的大公司相比,DBA的職責(zé)來(lái)得更加寬泛一些。一個(gè)公司,不管它是自己開發(fā)應(yīng)用軟件,還是購(gòu)買第三方的應(yīng)用軟件,只要涉及到數(shù)據(jù)庫(kù)(有多少不涉及數(shù)據(jù)庫(kù)的應(yīng)用軟件呢?數(shù)據(jù)庫(kù)是商業(yè)的靈魂和大腦?。?,就需要確定是否雇傭一個(gè)或幾個(gè)DBA。知道DBA這個(gè)職位有哪些要求,對(duì)于企業(yè)內(nèi)部這個(gè)職位的定義或者對(duì)于那些未來(lái)的DBA將是至關(guān)重要的。下面我列出了DBA的一些職責(zé):
安裝和升級(jí)數(shù)據(jù)庫(kù)服務(wù)器(如Oracle、Microsoft SQL server),以及應(yīng)用程序工具。 數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)存儲(chǔ)方案,并制定未來(lái)的存儲(chǔ)需求計(jì)劃。 一旦開發(fā)人員設(shè)計(jì)了一個(gè)應(yīng)用,就需要DBA來(lái)創(chuàng)建數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)(tablespaces)。 一旦開發(fā)人員設(shè)計(jì)了一個(gè)應(yīng)用,就需要DBA來(lái)創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象(tables,views,indexes)。 根據(jù)開發(fā)人員的反饋信息,必要的時(shí)候,修改數(shù)據(jù)庫(kù)的結(jié)構(gòu)。 登記數(shù)據(jù)庫(kù)的用戶,維護(hù)數(shù)據(jù)庫(kù)的安全性。 保證數(shù)據(jù)庫(kù)的使用符合知識(shí)產(chǎn)權(quán)相關(guān)法規(guī)。 控制和監(jiān)控用戶對(duì)數(shù)據(jù)庫(kù)的存取訪問。 監(jiān)控和優(yōu)化數(shù)據(jù)庫(kù)的性能。 制定數(shù)據(jù)庫(kù)備份計(jì)劃,災(zāi)難出現(xiàn)時(shí)對(duì)數(shù)據(jù)庫(kù)信息進(jìn)行恢復(fù) 維護(hù)適當(dāng)介質(zhì)上的存檔或者備份數(shù)據(jù) 備份和恢復(fù)數(shù)據(jù)庫(kù) 聯(lián)系數(shù)據(jù)庫(kù)系統(tǒng)的生產(chǎn)廠商,跟蹤技術(shù)信息。 DBA的個(gè)性特點(diǎn)
很多時(shí)候管理人員都忽視了DBA的個(gè)性特點(diǎn),他們只關(guān)注DBA的技術(shù)能力。實(shí)際上,上面談到的每個(gè)職責(zé)都意味著:DBA需要跟各種人員打交道,這些人員可能是銷售商、用戶、開發(fā)人員或者管理人員。這說(shuō)明:DBA必須具有下面的個(gè)性特點(diǎn):
自信心 好奇心 堅(jiān)韌的意志力 老練 自我驅(qū)動(dòng) 注意細(xì)節(jié) 為什么這些個(gè)性特點(diǎn)很重要呢?
我就有幾個(gè)缺乏自信心的部下,他們反復(fù)問我一些事無(wú)巨細(xì)的問題,他們沒有信心哪怕做最小的決定。他們也缺乏工作的主動(dòng)性。這對(duì)于初級(jí)DBA來(lái)說(shuō)可能問題不太大,但對(duì)于那些高級(jí)DBA來(lái)說(shuō),如果他們?nèi)狈ψ孕判?,他們又可以依賴誰(shuí)幫他們決策呢?在DBA的面試中,即使你不能回答某個(gè)技術(shù)問題,你也要表現(xiàn)出足夠的自信心。最致命的不是不知道問題的答案,而是不知道從哪兒得到答案。
幾乎所有的數(shù)據(jù)庫(kù)系統(tǒng)都在不停地更新。但并不是所有的更新都有技術(shù)文檔。對(duì)于好的DBA來(lái)說(shuō),好奇心是必需的。沒有好奇心和求知欲的DBA總是等待有人告訴他們答案。而一個(gè)求知欲強(qiáng)的DBA將安裝最新版本的數(shù)據(jù)庫(kù)系統(tǒng),并立即開始搜尋那些哪怕是細(xì)微的功能和性能上的差異和增強(qiáng),從而改進(jìn)自己的工作。應(yīng)試時(shí)一個(gè)必然問及的問題是:你手頭有哪些參考資料?你如何使用它們?毫無(wú)疑問,如果你只回答了數(shù)據(jù)庫(kù)的文檔,或者你甚至沒有讀過他們,你的"股票市值"將大大下降。好奇心會(huì)驅(qū)使DBA們理解數(shù)據(jù)字典(Data Dictionary)、管理工具(Tools)或者其他支持包(Packages)。
DBA常常會(huì)碰到棘手的問題。尋找答案是一個(gè)需要堅(jiān)韌意志力、可以經(jīng)受摔打的個(gè)性特點(diǎn)。我常常在一些討論組或者論壇上看到DBA們提出的問題,這些問題往往是提問者自己可以解決的,如果他們具有堅(jiān)韌的個(gè)性特點(diǎn),并努力尋求問題的答案。
自我驅(qū)動(dòng)對(duì)每個(gè)人都是很重要的,對(duì)DBA尤其如此。DBA要能想辦法使問題出現(xiàn),而不是等待問題的出現(xiàn)。自驅(qū)力強(qiáng)的DBA常常設(shè)法取得或者自己寫一些必要的腳本(Script)來(lái)監(jiān)控包括數(shù)據(jù)表大小(Table Size)、表空間使用(Tablespace Usage)等項(xiàng)目,這些項(xiàng)目如果被忽視,他們將遇到麻煩。應(yīng)試的時(shí)候DBA們常常被問及在PL/SQL、SQL或者SQL*PLUS方面的經(jīng)驗(yàn),這些問題將把你從從來(lái)沒有編寫過自己需要的腳本的那些DBA們區(qū)分開。
不用說(shuō)和用戶,就是和程序員和管理人員打交道,也需要你足夠老練。一個(gè)一點(diǎn)不會(huì)處事的DBA不會(huì)為你做什么好事,只會(huì)在你的部門點(diǎn)燃敵對(duì)情緒的烈火。老練是這樣一種能力,你勸告某個(gè)人到地府去,哈哈,最后這個(gè)人懷著渴望的心情去了。很多時(shí)候,開發(fā)者、管理者、用戶,他們會(huì)提出毫無(wú)道理的需求,DBA們需要老練地引導(dǎo)、修正它們的要求,說(shuō)服他們。在應(yīng)試時(shí),你的應(yīng)對(duì)就很能說(shuō)明你是否老練。
最后說(shuō)說(shuō)注意細(xì)節(jié),這種性格傾向非常重要。注意細(xì)節(jié)的DBA們衣著整潔,有自己的日程安排,在應(yīng)試前對(duì)應(yīng)聘的單位做過調(diào)查。注意細(xì)節(jié)的DBA們深入了解數(shù)據(jù)庫(kù)的內(nèi)核,并能理解視圖、表之間的關(guān)系。
DBA的等級(jí)
DBA的等級(jí)并不是很嚴(yán)格的。按照對(duì)數(shù)據(jù)庫(kù)的掌握情況,我簡(jiǎn)單地分成三個(gè)等級(jí):初級(jí)Primary、中級(jí)Intermediate和高級(jí)Senior。
初級(jí)DBA又稱為DBBS,是英文Database Baby Sitter的縮寫。初級(jí)DBA常常是兼職的,他們往往同時(shí)是程序員或者兼任其他的工作。初級(jí)DBA往往把個(gè)人簡(jiǎn)歷寫得很棒,參與了很多和數(shù)據(jù)庫(kù)有關(guān)的項(xiàng)目或工作。但是,這些項(xiàng)目或者工作往往是:第三方軟件供應(yīng)商已經(jīng)安裝并配置了數(shù)據(jù)庫(kù),他們只做一些監(jiān)控的工作。他們能處理一些簡(jiǎn)單的問題,但大多數(shù)時(shí)候他們向應(yīng)用軟件供應(yīng)商求救。初級(jí)DBA更喜歡圖形化的數(shù)據(jù)庫(kù)管理或者監(jiān)控工具,他們喜歡Access這樣的桌面數(shù)據(jù)庫(kù)簡(jiǎn)單易用,并把這些小型數(shù)據(jù)庫(kù)的經(jīng)驗(yàn)簡(jiǎn)單地應(yīng)用到大型數(shù)據(jù)庫(kù)相關(guān)的工作中。
初級(jí)DBA是最好區(qū)分的。而中級(jí)DBA和高級(jí)DBA就不太好區(qū)分。他們的差別在于經(jīng)驗(yàn)的不同和個(gè)性特點(diǎn)、能力方面的差異。中級(jí)DBA比較多,他們可以勝任高級(jí)DBA的大部分工作,包括:
數(shù)據(jù)庫(kù)安裝 數(shù)據(jù)庫(kù)配置和管理 權(quán)限設(shè)置和安全管理 監(jiān)控和性能調(diào)節(jié) 備份和恢復(fù) 解決一般的問題 中級(jí)DBA往往從業(yè)一年左右,熟悉某種操作系統(tǒng)環(huán)境下的數(shù)據(jù)庫(kù)。因?yàn)閷?duì)中級(jí)DBA來(lái)講,Windows NT和Unix是有很大差別的。中級(jí)DBA對(duì)SQL比較熟悉,他們自己購(gòu)買了幾本數(shù)據(jù)庫(kù)方面的書籍,并深入鉆研。中級(jí)DBA往往同時(shí)兼任數(shù)據(jù)庫(kù)程序員,他們的工作對(duì)性能、穩(wěn)定性、安全性的追求基本上不是很高,往往配合高級(jí)DBA做一些例行工作。
高級(jí)DBA在國(guó)內(nèi)是非常少的。他們購(gòu)買了太多的數(shù)據(jù)庫(kù)方面的英文資料,也許是托朋友從Amazon買的。相對(duì)于他們的報(bào)酬來(lái)講,買書的錢是很少的一個(gè)比例。高級(jí)DBA一般都熟悉很多種操作平臺(tái)下的幾種大型數(shù)據(jù)庫(kù)。他們知道各種不同數(shù)據(jù)庫(kù)在不同環(huán)境下的優(yōu)勢(shì)和劣勢(shì),并能在數(shù)據(jù)庫(kù)平臺(tái)和數(shù)據(jù)庫(kù)環(huán)境的選擇方面做出決策。他們一般通曉系統(tǒng)架構(gòu)和數(shù)據(jù)庫(kù)設(shè)計(jì),并能對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種級(jí)別的優(yōu)化。高級(jí)DBA一般都配有助手,他們更偏向做決策和計(jì)劃。高級(jí)DBA往往在銀行業(yè)、保險(xiǎn)業(yè)、在線交易等對(duì)穩(wěn)定性、安全性、性能都要求比較高的關(guān)鍵業(yè)務(wù)處理領(lǐng)域大顯身手。
很多時(shí)候,是否取得數(shù)據(jù)庫(kù)專家認(rèn)證證書并不是很重要。我知道很多數(shù)據(jù)庫(kù)廠商的培訓(xùn)只要你去了都會(huì)獲得證書。有很多的公司提供商業(yè)化的培訓(xùn),他們的服務(wù)質(zhì)量也有好有劣。所以證書并不是特別地有意義。
幾種流行的數(shù)據(jù)庫(kù)系統(tǒng)
最"容易"的數(shù)據(jù)庫(kù)系統(tǒng)-Microsoft SQL Server
如果你打算做一個(gè)DBA,建議你選擇那些現(xiàn)在比較流行的數(shù)據(jù)庫(kù)系統(tǒng)。這意味著你將有更多的就業(yè)機(jī)會(huì)、交流和培訓(xùn)機(jī)會(huì),而且,流行自有流行的理由,你可以因此省心很多。當(dāng)然,就業(yè)競(jìng)爭(zhēng)壓力也比較大。一般的入門者選擇Microsoft SQL Server,這是非常適合中小型企業(yè)的數(shù)據(jù)庫(kù)系統(tǒng),熟悉Access的讀者很容易就能初步使用Microsoft SQL Server,成為一個(gè)DBBS。 J
Microsoft SQL Server 7.0的報(bào)價(jià),5用戶版1399美金,增加用戶時(shí),127美金每用戶。
最"難"的數(shù)據(jù)庫(kù)-無(wú)冕之王Oracle
如果你有機(jī)會(huì)接觸到Oracle,那可是個(gè)好機(jī)會(huì)。Oracle是目前最看好的數(shù)據(jù)庫(kù)廠商,由于其強(qiáng)大的功能和可配置、可管理能力,Oracle DBA的薪資一般比其他數(shù)據(jù)庫(kù)管理員的薪資要高。而且,Oracle在大中型企業(yè)的關(guān)鍵應(yīng)用也更加普遍了。Oracle可以運(yùn)行在Windows NT、Sun Solaris、Linux等平臺(tái)下。很多情況下要求你不僅僅熟悉NT,還要你熟悉Unix;而且Oracle不太友善的界面和成箱的Oracle產(chǎn)品資料可能也是一個(gè)障礙。
Oracle 8i標(biāo)準(zhǔn)版的報(bào)價(jià),如果運(yùn)行在Windows NT,附帶JServer和interMedia,支持5個(gè)并發(fā)用戶,報(bào)價(jià)是3925美金每CPU。增加并發(fā)用戶時(shí),785美金每用戶。增加附加的命名用戶時(shí),392.5美金每用戶。
數(shù)據(jù)庫(kù)系統(tǒng)的貴族-IBM UDB/DB2
作為30年數(shù)據(jù)庫(kù)研究的成果,IBM DB2確實(shí)稱得上"數(shù)據(jù)庫(kù)系統(tǒng)的貴族"。不管是小型商業(yè)系統(tǒng),還是大的銀行系統(tǒng),用DB2都是可以高枕無(wú)憂的。最近推出的新版DB2 6.1, 管理和調(diào)節(jié)工具更加卓越和便于使用。DB2 可以運(yùn)行在Intel架構(gòu)上,也可以運(yùn)行在IBM的S/390大型計(jì)算機(jī)上。如果你所在的行業(yè)對(duì)IBM的機(jī)器特別地稱道,建議你學(xué)習(xí)IBM DB2。
DB2有兩種版本:工作組版和企業(yè)版。工作組版999美元每服務(wù)器,外加249美元每個(gè)并發(fā)用戶。而企業(yè)版是12500美元每個(gè)CPU,不限并發(fā)用戶數(shù)量。
以Java為中心的數(shù)據(jù)庫(kù)-Sybase Adaptive Server Enterprise(ASE) 12.0
即將發(fā)布的Sybase ASE 12.0,直接面向Java 程序員。這種以Java為中心的數(shù)據(jù)庫(kù)系統(tǒng),為那些準(zhǔn)備在Java 平臺(tái)下構(gòu)建企業(yè)應(yīng)用的企業(yè)來(lái)說(shuō),將是最好的選擇。但是ASE稱不上一個(gè)數(shù)據(jù)庫(kù)領(lǐng)域的領(lǐng)先者,盡管相對(duì)于它以前的版本已經(jīng)改進(jìn)很多,并支持多個(gè)CPU和更多的并發(fā),還有很多的新的特性。但Sybase的風(fēng)光似乎已經(jīng)不再。
值得期盼的Informix Centaur
有時(shí)候"第一"只是意味著你的對(duì)手需要等待更長(zhǎng)的時(shí)間去趕上你。這正是1997年創(chuàng)立的Informix所面臨的。Informix公司是率先將多媒體特性加入到關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的大型數(shù)據(jù)庫(kù)廠商之一。但是如今,IBM、Oracle、Sybase都已經(jīng)跨越了這個(gè)概念。所以,Informix不得不尋求新的支撐來(lái)使自己區(qū)別于其他數(shù)據(jù)庫(kù)廠商。這就是Informix Centaur的目標(biāo)。Informix Centaur結(jié)合了Informix Dynamic Server 7.3的對(duì)象-關(guān)系數(shù)據(jù)庫(kù)和Informix Universal Data Option 9.1,意在獲得更好的適應(yīng)性和多媒體支持。詳情如何,我們拭目以待!
DBA的薪資
有很多因素影響到你作為DBA的薪資:
你的經(jīng)驗(yàn)和能力所決定的DBA等級(jí) 你所熟悉的數(shù)據(jù)庫(kù)系統(tǒng) 你的個(gè)性特點(diǎn)和潛力 下面的表說(shuō)明了國(guó)內(nèi)DBA人員的基本薪資狀況,并說(shuō)明了DAB等級(jí)和你所熟悉的數(shù)據(jù)庫(kù)系統(tǒng)怎樣影響到DBA的薪資。當(dāng)然,這只是我個(gè)人掌握的情況,只能在一定程度上代表行業(yè)的平均水平。
DBA等級(jí)數(shù)據(jù)庫(kù)系統(tǒng) 初級(jí)DBA年薪(萬(wàn)元) 中級(jí)DBA年薪(萬(wàn)元) 高級(jí)DBA年薪(萬(wàn)元) Oracle 4 8 11 Microsoft SQL Server 3 5 8 IBM DB2 4 8 10 Sybase 3.5 6 8 Informix 4 7 10 注:每年按13個(gè)月計(jì)算。表內(nèi)數(shù)字為平均年薪
1.應(yīng)用程序
2.實(shí)體完整性
3.distince
4.
5.create Nonclustered index IDX_authors on authors(州名列,城市名列)
6.創(chuàng)建表
7.select 列名 from 表名
8.sum()
9.top
10.alter procedure
11.ltrim()
12.declare @變量名 數(shù)據(jù)類型
13.where
14.from
15.order by
16.cast(表達(dá)式 as 數(shù)據(jù)類型)
17.count()
18.drop procedure 存儲(chǔ)過程名
19.創(chuàng)建數(shù)據(jù)庫(kù)
20.價(jià)格大于15美元的所有數(shù)據(jù)
21.數(shù)據(jù)庫(kù)
22.rollback
23.
24.服務(wù)管理器
25.
26.數(shù)據(jù)冗余(備份)
27.3
28.數(shù)據(jù)庫(kù)
29.應(yīng)用程序
30.drop table
33.操作系統(tǒng)
權(quán)限
1.
2.是并發(fā)控制的單位,是用戶定義的一個(gè)操作序列,具有原子性,一致性,隔離性,持續(xù)性四個(gè)特性。
3.共享鎖(S鎖):如果事務(wù)T對(duì)數(shù)據(jù)A加上共享鎖后,則其他事務(wù)只能對(duì)A再加共享鎖,不能加排他鎖.
獲準(zhǔn)共享鎖的事務(wù)只能讀數(shù)據(jù),不能修改數(shù)據(jù)。
4.
5.
1.存儲(chǔ)過程可以使得程序執(zhí)行效率更高、安全性更好,因?yàn)檫^程建立之后 已經(jīng)編譯并且儲(chǔ)存到數(shù)據(jù)庫(kù),直接寫sql就需要先分析再執(zhí)行因此過程效率更高,直接寫sql語(yǔ)句會(huì)帶來(lái)安全性問題,如:sql注入
2.建立過程不會(huì)很耗系統(tǒng)資源,因?yàn)檫^程只是在調(diào)用才執(zhí)行。
6.聚簇索引是一種對(duì)磁盤上實(shí)際數(shù)據(jù)重新組織以按指定的一個(gè)或多個(gè)列的值排序。
7.
8.是并發(fā)控制的單位,是用戶定義的一個(gè)操作序列,具有原子性,一致性,隔離性,持續(xù)性四個(gè)特性。
BEGIN TRAN [Tran_name]開始事務(wù)
COMMIT TRAN [Tran_name]事務(wù)完成提交事務(wù)
9.存儲(chǔ)過程是由流控制和SQL語(yǔ)句書寫的過程,這個(gè)過程經(jīng)編譯和優(yōu)化后存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器中,應(yīng)用程序使用時(shí)只要調(diào)用即可。
10.增量備份:是針對(duì)于上一次備份(無(wú)論是哪種備份):備份上一次備份后,所有發(fā)生變化的文件。
12.原子性,要么都做,要么不做。
13.排它鎖若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)都不能再對(duì)A加任何類型的鎖,直到T釋放A上的鎖。
它防止任何其它事務(wù)獲取資源上的鎖,直到在事務(wù)的末尾將資源上的原始鎖釋放為止。
14.分布式數(shù)據(jù)庫(kù)系統(tǒng)通常使用較小的計(jì)算機(jī)系統(tǒng),每臺(tái)計(jì)算機(jī)可單獨(dú)放在一個(gè)地方,每臺(tái)計(jì)算機(jī)中都有DBMS的一份完整拷貝副本,并具有自己局部的數(shù)據(jù)庫(kù),位于不同地點(diǎn)的許多計(jì)算機(jī)通過網(wǎng)絡(luò)互相連接,共同組成一個(gè)完整的、全局的大型數(shù)據(jù)庫(kù)。
15.
17同2,18同8
19.DBMS數(shù)據(jù)庫(kù)管理系統(tǒng),DBA數(shù)據(jù)庫(kù)管理員
20.1對(duì)1,一個(gè)學(xué)生對(duì)應(yīng)一個(gè)學(xué)號(hào)
1對(duì)多 一個(gè)學(xué)生對(duì)應(yīng)多門功課
多對(duì)多 商品與廠商
(備注:只能做這么多了,很長(zhǎng)時(shí)間沒看書了,有時(shí)間可以看看數(shù)據(jù)庫(kù)系統(tǒng)概論薩師煊 王珊 高等教育出版社,很不錯(cuò)的一本書哦。上有你要的答案,特別是簡(jiǎn)答題。)
21.
22.數(shù)據(jù)庫(kù)完整性,對(duì)數(shù)據(jù)庫(kù)提出的某種約束條件或規(guī)則。
分三種:實(shí)體完整性,參照完整性,用戶自定義完整性
23.
24.原則如下:
●在經(jīng)常進(jìn)行連接,但是沒有指定為外鍵的列上建立索引,而不經(jīng)常連接的字段則由優(yōu)化器自動(dòng)生成索引。
●在頻繁進(jìn)行排序或分組(即進(jìn)行g(shù)roup by或order by操作)的列上建立索引。
●在條件表達(dá)式中經(jīng)常用到的不同值較多的列上建立檢索,在不同值少的列上不要建立索引。比如在雇員表的“性別”列上只有“男”與“女”兩個(gè)不同值,因此就無(wú)必要建立索引。如果建立索引不但不會(huì)提高查詢效率,反而會(huì)嚴(yán)重降低更新速度。
●如果待排序的列有多個(gè),可以在這些列上建立復(fù)合索引(compound index)。
26。聚集索引確定表中數(shù)據(jù)的物理順序。由于聚集索引規(guī)定數(shù)據(jù)在表中的物理存儲(chǔ)順序,因此一個(gè)表只能包含一個(gè)聚集索引。但該索引可以包含多個(gè)列(組合索引)
非聚集索引一種索引,該索引中索引的邏輯順序與磁盤上行的物理存儲(chǔ)順序不同。一個(gè)表可以有多個(gè)聚集索引
1、鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)
這一類數(shù)據(jù)庫(kù)主要會(huì)使用到一個(gè)哈希表,這個(gè)表中有一個(gè)特定的鍵和一個(gè)指針指向特定的數(shù)據(jù)。Key/value模型對(duì)于IT系統(tǒng)來(lái)說(shuō)的優(yōu)勢(shì)在于簡(jiǎn)單、易部署。
但是如果數(shù)據(jù)庫(kù)管理員(DBA)只對(duì)部分值進(jìn)行查詢或更新的時(shí)候,Key/value就顯得效率低下了。舉例如:Tokyo Cabinet/Tyrant,Redis,Voldemort,Oracle BDB。
2、列存儲(chǔ)數(shù)據(jù)庫(kù)
這部分?jǐn)?shù)據(jù)庫(kù)通常用來(lái)應(yīng)對(duì)分布式存儲(chǔ)的海量數(shù)據(jù)。鍵仍然存在,但是它們的特點(diǎn)是指向了多個(gè)列。這些列是由列家族來(lái)安排的。如:Cassandra,HBase,Riak。
3、文檔型數(shù)據(jù)庫(kù)
文檔型數(shù)據(jù)庫(kù)的靈感是來(lái)自于Lotus Notes辦公軟件的,而且它同第一種鍵值存儲(chǔ)相類似。該類型的數(shù)據(jù)模型是版本化的文檔,半結(jié)構(gòu)化的文檔以特定的格式存儲(chǔ),比如JSON。
文檔型數(shù)據(jù)庫(kù)可以看作是鍵值數(shù)據(jù)庫(kù)的升級(jí)版,允許之間嵌套鍵值,在處理網(wǎng)頁(yè)等復(fù)雜數(shù)據(jù)時(shí),文檔型數(shù)據(jù)庫(kù)比傳統(tǒng)鍵值數(shù)據(jù)庫(kù)的查詢效率更高。如:CouchDB,MongoDb,國(guó)內(nèi)也有文檔型數(shù)據(jù)庫(kù)SequoiaDB,已經(jīng)開源。
4、圖形(Graph)數(shù)據(jù)庫(kù)
圖形結(jié)構(gòu)的數(shù)據(jù)庫(kù)同其他行列以及剛性結(jié)構(gòu)的SQL數(shù)據(jù)庫(kù)不同,它是使用靈活的圖形模型,并且能夠擴(kuò)展到多個(gè)服務(wù)器上。
NoSQL數(shù)據(jù)庫(kù)沒有標(biāo)準(zhǔn)的查詢語(yǔ)言(SQL),因此進(jìn)行數(shù)據(jù)庫(kù)查詢需要制定數(shù)據(jù)模型。許多NoSQL數(shù)據(jù)庫(kù)都有REST式的數(shù)據(jù)接口或者查詢API。如:Neo4J,InfoGrid,Infinite Graph。
擴(kuò)展資料
NoSQL數(shù)據(jù)庫(kù)適合追求速度和可擴(kuò)展性、業(yè)務(wù)多變的應(yīng)用場(chǎng)景。對(duì)于非結(jié)構(gòu)化數(shù)據(jù)的處理更合適,如文章、評(píng)論,這些數(shù)據(jù)如全文搜索、機(jī)器學(xué)習(xí)通常只用于模糊處理,并不需要像結(jié)構(gòu)化數(shù)據(jù)一樣,進(jìn)行精確查詢,而且這類數(shù)據(jù)的數(shù)據(jù)規(guī)模往往是海量的,數(shù)據(jù)規(guī)模的增長(zhǎng)往往也是不可能預(yù)期的。
而NoSQL數(shù)據(jù)庫(kù)的擴(kuò)展能力幾乎也是無(wú)限的,所以NoSQL數(shù)據(jù)庫(kù)可以很好地滿足這一類數(shù)據(jù)的存儲(chǔ)。NoSQL數(shù)據(jù)庫(kù)利用key-value可以大量的獲取大量的非結(jié)構(gòu)化數(shù)據(jù),并且數(shù)據(jù)的獲取效率很高,但用它查詢結(jié)構(gòu)化數(shù)據(jù)效果就比較差。
參考資料來(lái)源:百度百科-數(shù)據(jù)庫(kù)
參考資料來(lái)源:百度百科-NoSQL