經(jīng)常會有人問我數(shù)據(jù)庫是干啥的,其實一開始我是拒絕回答的,因為我也不能做到通俗易懂的表達(dá)出來,畢竟我接觸這個概念也沒有多長時間,但隨著問的人多了,我覺得是時候腦補一下我的第一堂課了,萬一哪天冒出來個貨跟你掰扯這事兒,你沒分分鐘給他說清,最后弄個丟里兒丟面兒,好尷尬呀。
數(shù)據(jù)庫,說白了就是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,這些數(shù)據(jù)是結(jié)構(gòu)化的,并可為多種應(yīng)用服務(wù)。也就是說,數(shù)據(jù)庫是使用計算機服務(wù)器來存儲數(shù)據(jù)的,專門用來提供各種數(shù)據(jù)服務(wù)??梢赃@樣想像,過去一個公司的所有財務(wù)數(shù)據(jù)都是放在保險柜里面,而現(xiàn)在我們就可以針對這些財務(wù)數(shù)據(jù)搭建一個數(shù)據(jù)庫放在某臺計算機或服務(wù)器上面;再比如,企業(yè)或事業(yè)單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個數(shù)據(jù)庫。有了這個"數(shù)據(jù)倉庫"我們就可以根據(jù)需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內(nèi)的職工人數(shù)等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達(dá)到極高的水平。此外,在財務(wù)管理、倉庫管理、生產(chǎn)管理中也需要建立眾多的這種"數(shù)據(jù)庫",使其可以利用計算機實現(xiàn)財務(wù)、倉庫、生產(chǎn)的自動化管理。最常見的數(shù)據(jù)庫有:銀行儲蓄系統(tǒng)、手機話費系統(tǒng)、美容美發(fā)會員系統(tǒng)、超市會員積分系統(tǒng)、水電費系統(tǒng)、機票或火車票系統(tǒng)等,這些都需要后臺數(shù)據(jù)庫基礎(chǔ)設(shè)施的支撐。舉了這么多例子,應(yīng)該是把數(shù)據(jù)庫說明白了,至少能在大腦里面有個概念,知道這個東西是干啥的。
現(xiàn)在大數(shù)據(jù)被炒的紅得發(fā)紫,而大數(shù)據(jù)的基礎(chǔ)也是數(shù)據(jù),由此可見,數(shù)據(jù)是一個企業(yè)的核心資源,說它是企業(yè)的立身之本、發(fā)展之基都不為過,因此,維護數(shù)據(jù)庫的數(shù)據(jù)庫管理員(DBA)是企業(yè)不可或缺的。
目前市面上的數(shù)據(jù)庫產(chǎn)品有很多,單從規(guī)模上分可分為大型、中型、小型幾種,典型的數(shù)據(jù)庫產(chǎn)品如下:
大型數(shù)據(jù)庫:Oracle、DB2、Sybase;
中型數(shù)據(jù)庫:MySQL、SQLServer、Infomix;
小型數(shù)據(jù)庫:Access、Visual Foxpro。
在眾多的數(shù)據(jù)庫產(chǎn)品中,Oracle數(shù)據(jù)庫一直處于行業(yè)領(lǐng)導(dǎo)先地位,也是當(dāng)今最流行的關(guān)系型數(shù)據(jù)庫。Oracle可翻譯成"甲骨文",它是一家以數(shù)據(jù)庫為主業(yè)的全球化公司,是全球第二大軟件公司(第一名是微軟公司),目前Oracle在數(shù)據(jù)庫軟件市場已經(jīng)排名第一,數(shù)據(jù)庫軟件市場份額達(dá)到48.6%,遙遙領(lǐng)先于第二名占有率僅為20.7%的IBM公司的DB2。在中國市場上的計算機專業(yè)系統(tǒng)后臺所使用的數(shù)據(jù)庫尤以O(shè)racle數(shù)據(jù)庫居多。但是購買Oracle數(shù)據(jù)庫需要很大一筆費用,一般的大型企業(yè)使用,需要有專業(yè)人員進行管理和維護,中小企業(yè)承擔(dān)不起。中小企業(yè)為了節(jié)省成本,一般使用MySQL、PostgreSQL這類免費開源的數(shù)據(jù)庫,所以O(shè)racle數(shù)據(jù)庫相關(guān)的工作崗位一般是在大型企業(yè)中。
對于為什么選擇Oracle數(shù)據(jù)庫,而不是其他的數(shù)據(jù)庫?
第一,是因為Oracle數(shù)據(jù)庫占據(jù)最大的市場份額,并且越來越大,市場需要很多Oracle數(shù)據(jù)庫方面的人才,中國有句老話說"做對事,選對人",是同樣的道理;第二,是很多非Oracle數(shù)據(jù)庫的老系統(tǒng)正往Oracle數(shù)據(jù)庫遷移,其他數(shù)據(jù)庫市場占有率在減少,其他數(shù)據(jù)庫工作者有面臨失業(yè)的風(fēng)險;第三,Oracle有大量的官方學(xué)習(xí)文檔,還有部分中文文檔,可以有效地進行學(xué)習(xí);第四,Oracle有大量的從業(yè)人員,有共同方向的朋友可以互相幫助,不再是孤膽英雄;第五,是可以很容易地從Oracle官方網(wǎng)站下載功能齊全的數(shù)據(jù)庫最新版本進行學(xué)習(xí),可以讓你了解數(shù)據(jù)庫方面的最新發(fā)展趨勢等。
在此說明,以后的所有內(nèi)容都是基于Oracle11g數(shù)據(jù)庫產(chǎn)品的,下面我們就簡單介紹一下Oracle11g的系列產(chǎn)品:
企業(yè)版(Enterprise Edition) 此版本包含了數(shù)據(jù)庫的所有組件,并且能夠通過購買選項和程序包來進一步對其增強。
能支持例如大業(yè)務(wù)量的在線事務(wù)處理OLTP(On-Line Transaction
Processing聯(lián)機事務(wù)處理系統(tǒng))環(huán)境、查詢密集的數(shù)據(jù)倉庫和要求苛刻的互聯(lián)網(wǎng)應(yīng)用程序。
標(biāo)準(zhǔn)版1(Standard Edition One)
此版本為工作組、部門級和互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)應(yīng)用程序提供了前所未有的易用性和性價比。從針對小型商務(wù)的單服務(wù)器環(huán)境到大型的分布式部門環(huán)境,該版本包含了構(gòu)建重要商務(wù)應(yīng)用程序所必需的全部工具。它僅許可在最高容量為2個處理器的服務(wù)器上使用,支持Windows/Linux/UNIX操作系統(tǒng),并支持64位平臺操作系統(tǒng)。
標(biāo)準(zhǔn)版(Standard Edition) 此版本提供了Standard Edition
One所不具有的易用性、能力和性能,并且利用真正的應(yīng)用集群(RAC)提供了對更大型計算機和服務(wù)集群的支持。它可以在最高容量為4個處理器的單臺服務(wù)器上、或者在一個支持最多4個處理器的集群上使用,可支持Windows、Linux和UNIX操作系統(tǒng),并支持64位平臺操作系統(tǒng)。
簡化版
此版本支持與標(biāo)準(zhǔn)版1、標(biāo)準(zhǔn)版和企業(yè)版完全兼容的單用戶開發(fā)和部署。通過將Oracle數(shù)據(jù)庫獲獎的功能引入到個人工作站中,該版本提供了結(jié)合世界上最流行的數(shù)據(jù)庫功能的數(shù)據(jù)庫,并且該數(shù)據(jù)庫具有桌面產(chǎn)品通常具有的易用性和簡單性,可支持Linux和Windows操作系統(tǒng)。
從存儲結(jié)構(gòu)上來說,目前流行的數(shù)據(jù)庫主要包含以下兩種:
RDBMS:關(guān)系型數(shù)據(jù)庫,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫;
NoSQL數(shù)據(jù)庫,是指那些非關(guān)系型的、分布式的數(shù)據(jù)庫。
簡單來說,關(guān)系模型指的就是二維表格模型,而一個關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個數(shù)據(jù)組織。
關(guān)系型數(shù)據(jù)庫優(yōu)點:
1、容易理解
二維表結(jié)構(gòu)是非常貼近邏輯世界的一個概念,關(guān)系模型相對網(wǎng)狀、層次等其他模型來說更容易理解。
2、使用方便
通用的SQL語言使得操作關(guān)系型數(shù)據(jù)庫非常方便。
3、易于維護
豐富的完整性大大減低了數(shù)據(jù)冗余和數(shù)據(jù)部移植的概率。
4、事務(wù)安全
所有關(guān)系型數(shù)據(jù)庫都不同程度的遵守事物的四個基本屬性,因此對于銀行、電信、證券等交易型業(yè)務(wù)是不可或缺的。
關(guān)系型數(shù)據(jù)庫的瓶頸:
1、高并發(fā)讀寫需求
網(wǎng)站的用戶并發(fā)性非常高,往往達(dá)到每秒上萬次讀寫請求,對于傳統(tǒng)型數(shù)據(jù)庫來說,硬盤I/O是一個很大的瓶頸。
2、海量數(shù)據(jù)的高效率讀寫
互聯(lián)網(wǎng)上每天產(chǎn)生的數(shù)據(jù)量是巨大的,對于關(guān)系型數(shù)據(jù)庫來說,在一張包含海量數(shù)據(jù)的表中查詢,效率是非常低的。
3、高擴展性和可用性
在基于WEB的結(jié)構(gòu)中,數(shù)據(jù)庫是最難進行橫向擴展的,當(dāng)一個應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時候,數(shù)據(jù)庫卻沒有辦法像WEB Server 和
APPLICATION Server
那樣簡單的通過添加更多的硬件和服務(wù)節(jié)點來擴展性能和負(fù)載能力。對于很多需要提供24小時不間斷服務(wù)的網(wǎng)站來說,對數(shù)據(jù)庫系統(tǒng)進行升級和擴展是非常痛苦的事情,往往需要停機維護和數(shù)據(jù)遷移。
NoSQL數(shù)據(jù)庫
NoSQL一詞首先是CarloStrozzi
在1998年提出的。2009年再次提出了NoSQL一詞,用于指那些非關(guān)系型的、分布式的,且一般不保證遵循ACID原則的數(shù)據(jù)存儲系統(tǒng)。
NoSQL具有以下特點:
1、可以彌補關(guān)系型數(shù)據(jù)庫的不足
2、針對某些特定的需求而設(shè)計,可以具有極高的性能
3、大部分都是開源的,由于成熟度不夠,存在潛在的穩(wěn)定性和維護性問題。
關(guān)系型數(shù)據(jù)庫適用于結(jié)構(gòu)化數(shù)據(jù),而非關(guān)系型數(shù)據(jù)庫適用于非結(jié)構(gòu)化數(shù)據(jù),二者優(yōu)勢互補,相得益彰。
Oracle數(shù)據(jù)庫未來的發(fā)展方向是提供結(jié)構(gòu)化、非結(jié)構(gòu)化、半結(jié)構(gòu)化的解決方案,實現(xiàn)關(guān)系型數(shù)據(jù)庫和NoSQL共存互補。值得強調(diào)的是,目前關(guān)系型數(shù)據(jù)庫仍是主流數(shù)據(jù)庫。
雖然NoSQL數(shù)據(jù)庫打破了關(guān)系型數(shù)據(jù)庫存儲的觀念,可以很好地滿足WEB2.0時代數(shù)據(jù)的存儲要求,但NoSQL數(shù)據(jù)庫也有自己的缺陷。在現(xiàn)階段的情況下,可以將關(guān)系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫結(jié)合使用,相互彌補各自的不足。
關(guān)于數(shù)據(jù)庫及其代表產(chǎn)品Oracle今天就介紹這么多,有興趣的可以繼續(xù)深挖,希望我的介紹能讓你對數(shù)據(jù)庫有一個更深入的認(rèn)識。如果有志于在這方面發(fā)展的話,就讓我們一起
跟往事干杯 從頭再來。