什么是NoSQL數(shù)據(jù)庫?從名稱“非SQL”或“非關(guān)系型”衍生而來,這些數(shù)據(jù)庫不使用類似SQL的查詢語言,通常稱為結(jié)構(gòu)化存儲。這些數(shù)據(jù)庫自1960年就已經(jīng)存在,但是直到現(xiàn)在一些大公司(例如Google和Facebook)開始使用它們時,這些數(shù)據(jù)庫才流行起來。該數(shù)據(jù)庫最明顯的優(yōu)勢是擺脫了一組固定的列、連接和類似SQL的查詢語言的限制。有時,NoSQL這個名稱也可能表示“不僅僅SQL”,來確保它們可能支持SQL。 NoSQL數(shù)據(jù)庫使用諸如鍵值、寬列、圖形或文檔之類的數(shù)據(jù)結(jié)構(gòu),并且可以如JSON之類的不同格式存儲。
創(chuàng)新互聯(lián)長期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為馬關(guān)企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),馬關(guān)網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
Web1.0的時代,數(shù)據(jù)訪問量很有限,用一夫當(dāng)關(guān)的高性能的單點(diǎn)服務(wù)器可以解決大部分問題。
隨著Web2.0的時代的到來,用戶訪問量大幅度提升,同時產(chǎn)生了大量的用戶數(shù)據(jù)。加上后來的智能移動設(shè)備的普及,所有的互聯(lián)網(wǎng)平臺都面臨了巨大的性能挑戰(zhàn)。
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,泛指非關(guān)系型的數(shù)據(jù)庫。
NoSQL 不依賴業(yè)務(wù)邏輯方式存儲,而以簡單的key-value模式存儲。因此大大的增加了數(shù)據(jù)庫的擴(kuò)展能力。
Memcache Memcache Redis Redis MongoDB MongoDB 列式數(shù)據(jù)庫 列式數(shù)據(jù)庫 Hbase Hbase
HBase是Hadoop項(xiàng)目中的數(shù)據(jù)庫。它用于需要對大量的數(shù)據(jù)進(jìn)行隨機(jī)、實(shí)時的讀寫操作的場景中。
HBase的目標(biāo)就是處理數(shù)據(jù)量非常龐大的表,可以用普通的計(jì)算機(jī)處理超過10億行數(shù)據(jù),還可處理有數(shù)百萬列元素的數(shù)據(jù)表。
Cassandra Cassandra
Apache Cassandra是一款免費(fèi)的開源NoSQL數(shù)據(jù)庫,其設(shè)計(jì)目的在于管理由大量商用服務(wù)器構(gòu)建起來的龐大集群上的海量數(shù)據(jù)集(數(shù)據(jù)量通常達(dá)到PB級別)。在眾多顯著特性當(dāng)中,Cassandra最為卓越的長處是對寫入及讀取操作進(jìn)行規(guī)模調(diào)整,而且其不強(qiáng)調(diào)主集群的設(shè)計(jì)思路能夠以相對直觀的方式簡化各集群的創(chuàng)建與擴(kuò)展流程。
主要應(yīng)用:社會關(guān)系,公共交通網(wǎng)絡(luò),地圖及網(wǎng)絡(luò)拓譜(n*(n-1)/2)
常用數(shù)據(jù)庫有:
1、關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫是由IBM的E.F. Codd于1970年發(fā)明的,它是一個表格數(shù)據(jù)庫,其中定義了數(shù)據(jù),因此可以以多種不同的方式對其進(jìn)行重組和訪問。關(guān)系數(shù)據(jù)庫由一組表組成,其中的數(shù)據(jù)屬于預(yù)定義的類別。每個表在一個列中至少有一個數(shù)據(jù)類別,并且每一行對于列中定義的類別都有一個特定的數(shù)據(jù)實(shí)例。
2、分布式數(shù)據(jù)庫
分布式數(shù)據(jù)庫是一種數(shù)據(jù)庫,數(shù)據(jù)庫存儲在多個物理位置,處理在網(wǎng)絡(luò)中的不同點(diǎn)之間分散或復(fù)制。分布式數(shù)據(jù)庫可以是同構(gòu)的,也可以是異構(gòu)的。同構(gòu)分布式數(shù)據(jù)庫系統(tǒng)中的所有物理位置都具有相同的底層硬件,并運(yùn)行相同的操作系統(tǒng)和數(shù)據(jù)庫應(yīng)用程序。異構(gòu)分布式數(shù)據(jù)庫中的硬件、操作系統(tǒng)或數(shù)據(jù)庫應(yīng)用程序在每個位置上可能是不同的。
3、云數(shù)據(jù)庫
云數(shù)據(jù)庫是針對虛擬化環(huán)境優(yōu)化或構(gòu)建的數(shù)據(jù)庫。云數(shù)據(jù)庫提供了一些好處,比如可以按每次使用支付存儲容量和帶寬的費(fèi)用,還可以根據(jù)需要提供可伸縮性和高可用性。云數(shù)據(jù)庫還為企業(yè)提供了在軟件即服務(wù)部署中支持業(yè)務(wù)應(yīng)用程序的機(jī)會。
4、NoSQL數(shù)據(jù)庫
NoSQL數(shù)據(jù)庫對于大型分布式數(shù)據(jù)集非常有用。NoSQL數(shù)據(jù)庫對于關(guān)系數(shù)據(jù)庫無法解決的大數(shù)據(jù)性能問題非常有效。當(dāng)組織必須分析大量非結(jié)構(gòu)化數(shù)據(jù)或存儲在云中多個虛擬服務(wù)器上的數(shù)據(jù)時,它們是最有效的。
5、面向?qū)ο蟮臄?shù)據(jù)庫
使用面向?qū)ο缶幊陶Z言創(chuàng)建的項(xiàng)通常存儲在關(guān)系數(shù)據(jù)庫中,但是面向?qū)ο髷?shù)據(jù)庫非常適合于這些項(xiàng)。面向?qū)ο蟮臄?shù)據(jù)庫是圍繞對象(而不是操作)和數(shù)據(jù)(而不是邏輯)組織的。例如,關(guān)系數(shù)據(jù)庫中的多媒體記錄可以是可定義的數(shù)據(jù)對象,而不是字母數(shù)字值。
6、圖形數(shù)據(jù)庫
面向圖形的數(shù)據(jù)庫是一種NoSQL數(shù)據(jù)庫,它使用圖形理論存儲、映射和查詢關(guān)系。圖數(shù)據(jù)庫基本上是節(jié)點(diǎn)和邊的集合,其中每個節(jié)點(diǎn)表示一個實(shí)體,每個邊表示節(jié)點(diǎn)之間的連接。
經(jīng)常會有人問我數(shù)據(jù)庫是干啥的,其實(shí)一開始我是拒絕回答的,因?yàn)槲乙膊荒茏龅酵ㄋ滓锥谋磉_(dá)出來,畢竟我接觸這個概念也沒有多長時間,但隨著問的人多了,我覺得是時候腦補(bǔ)一下我的第一堂課了,萬一哪天冒出來個貨跟你掰扯這事兒,你沒分分鐘給他說清,最后弄個丟里兒丟面兒,好尷尬呀。
數(shù)據(jù)庫,說白了就是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,這些數(shù)據(jù)是結(jié)構(gòu)化的,并可為多種應(yīng)用服務(wù)。也就是說,數(shù)據(jù)庫是使用計(jì)算機(jī)服務(wù)器來存儲數(shù)據(jù)的,專門用來提供各種數(shù)據(jù)服務(wù)??梢赃@樣想像,過去一個公司的所有財務(wù)數(shù)據(jù)都是放在保險柜里面,而現(xiàn)在我們就可以針對這些財務(wù)數(shù)據(jù)搭建一個數(shù)據(jù)庫放在某臺計(jì)算機(jī)或服務(wù)器上面;再比如,企業(yè)或事業(yè)單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個數(shù)據(jù)庫。有了這個"數(shù)據(jù)倉庫"我們就可以根據(jù)需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內(nèi)的職工人數(shù)等等。這些工作如果都能在計(jì)算機(jī)上自動進(jìn)行,那我們的人事管理就可以達(dá)到極高的水平。此外,在財務(wù)管理、倉庫管理、生產(chǎn)管理中也需要建立眾多的這種"數(shù)據(jù)庫",使其可以利用計(jì)算機(jī)實(shí)現(xiàn)財務(wù)、倉庫、生產(chǎn)的自動化管理。最常見的數(shù)據(jù)庫有:銀行儲蓄系統(tǒng)、手機(jī)話費(fèi)系統(tǒng)、美容美發(fā)會員系統(tǒng)、超市會員積分系統(tǒng)、水電費(fèi)系統(tǒng)、機(jī)票或火車票系統(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ā)展之基都不為過,因此,維護(hù)數(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、VisualFoxpro。在眾多的數(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。在中國市場上的計(jì)算機(jī)專業(yè)系統(tǒng)后臺所使用的數(shù)據(jù)庫尤以O(shè)racle數(shù)據(jù)庫居多。但是購買Oracle數(shù)據(jù)庫需要很大一筆費(fèi)用,一般的大型企業(yè)使用,需要有專業(yè)人員進(jìn)行管理和維護(hù),中小企業(yè)承擔(dān)不起。中小企業(yè)為了節(jié)省成本,一般使用MySQL、PostgreSQL這類免費(fèi)開源的數(shù)據(jù)庫,所以O(shè)racle數(shù)據(jù)庫相關(guān)的工作崗位一般是在大型企業(yè)中。
對于為什么選擇Oracle數(shù)據(jù)庫,而不是其他的數(shù)據(jù)庫?
第一,是因?yàn)镺racle數(shù)據(jù)庫占據(jù)最大的市場份額,并且越來越大,市場需要很多Oracle數(shù)據(jù)庫方面的人才,中國有句老話說"做對事,選對人",是同樣的道理;第二,是很多非Oracle數(shù)據(jù)庫的老系統(tǒng)正往Oracle數(shù)據(jù)庫遷移,其他數(shù)據(jù)庫市場占有率在減少,其他數(shù)據(jù)庫工作者有面臨失業(yè)的風(fēng)險;第三,Oracle有大量的官方學(xué)習(xí)文檔,還有部分中文文檔,可以有效地進(jìn)行學(xué)習(xí);第四,Oracle有大量的從業(yè)人員,有共同方向的朋友可以互相幫助,不再是孤膽英雄;第五,是可以很容易地從Oracle官方網(wǎng)站下載功能齊全的數(shù)據(jù)庫最新版本進(jìn)行學(xué)習(xí),可以讓你了解數(shù)據(jù)庫方面的最新發(fā)展趨勢等。
在此說明,以后的所有內(nèi)容都是基于Oracle11g數(shù)據(jù)庫產(chǎn)品的,下面我們就簡單介紹一下Oracle11g的系列產(chǎn)品:
企業(yè)版(EnterpriseEdition)此版本包含了數(shù)據(jù)庫的所有組件,并且能夠通過購買選項(xiàng)和程序包來進(jìn)一步對其增強(qiáng)。
能支持例如大業(yè)務(wù)量的在線事務(wù)處理OLTP(On-LineTransactionProcessing聯(lián)機(jī)事務(wù)處理系統(tǒng))環(huán)境、查詢密集的數(shù)據(jù)倉庫和要求苛刻的互聯(lián)網(wǎng)應(yīng)用程序。
標(biāo)準(zhǔn)版1(StandardEditionOne)此版本為工作組、部門級和互聯(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)版(StandardEdition)此版本提供了StandardEditionOne所不具有的易用性、能力和性能,并且利用真正的應(yīng)用集群(RAC)提供了對更大型計(jì)算機(jī)和服務(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)點(diǎn):
1、容易理解
二維表結(jié)構(gòu)是非常貼近邏輯世界的一個概念,關(guān)系模型相對網(wǎng)狀、層次等其他模型來說更容易理解。
2、使用方便
通用的SQL語言使得操作關(guān)系型數(shù)據(jù)庫非常方便。
3、易于維護(hù)
豐富的完整性大大減低了數(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、高擴(kuò)展性和可用性
在基于WEB的結(jié)構(gòu)中,數(shù)據(jù)庫是最難進(jìn)行橫向擴(kuò)展的,當(dāng)一個應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時候,數(shù)據(jù)庫卻沒有辦法像WEBServer和APPLICATIONServer那樣簡單的通過添加更多的硬件和服務(wù)節(jié)點(diǎn)來擴(kuò)展性能和負(fù)載能力。對于很多需要提供24小時不間斷服務(wù)的網(wǎng)站來說,對數(shù)據(jù)庫系統(tǒng)進(jìn)行升級和擴(kuò)展是非常痛苦的事情,往往需要停機(jī)維護(hù)和數(shù)據(jù)遷移。
NoSQL數(shù)據(jù)庫
NoSQL一詞首先是CarloStrozzi在1998年提出的。2009年再次提出了NoSQL一詞,用于指那些非關(guān)系型的、分布式的,且一般不保證遵循ACID原則的數(shù)據(jù)存儲系統(tǒng)。
NoSQL具有以下特點(diǎn):
1、可以彌補(bǔ)關(guān)系型數(shù)據(jù)庫的不足
2、針對某些特定的需求而設(shè)計(jì),可以具有極高的性能
3、大部分都是開源的,由于成熟度不夠,存在潛在的穩(wěn)定性和維護(hù)性問題。
關(guān)系型數(shù)據(jù)庫適用于結(jié)構(gòu)化數(shù)據(jù),而非關(guān)系型數(shù)據(jù)庫適用于非結(jié)構(gòu)化數(shù)據(jù),二者優(yōu)勢互補(bǔ),相得益彰。
Oracle數(shù)據(jù)庫未來的發(fā)展方向是提供結(jié)構(gòu)化、非結(jié)構(gòu)化、半結(jié)構(gòu)化的解決方案,實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫和NoSQL共存互補(bǔ)。值得強(qiáng)調(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é)合使用,相互彌補(bǔ)各自的不足。
關(guān)于數(shù)據(jù)庫及其代表產(chǎn)品Oracle今天就介紹這么多,有興趣的可以繼續(xù)深挖,希望我的介紹能讓你對數(shù)據(jù)庫有一個更深入的認(rèn)識。如果有志于在這方面發(fā)展的話,就讓我們一起跟往事干杯從頭再來。
NoSQL,是not only sql,是非關(guān)系數(shù)據(jù)庫,不同于oracle等關(guān)系數(shù)據(jù)庫。hadoop,是分布式解決方案,即為Mapreduce(計(jì)算的)和HDFS(文件系統(tǒng)),使用Hadoop和NoSQL可以構(gòu)造海量數(shù)據(jù)解決方案。
一般將NoSQL數(shù)據(jù)庫分為四大類:鍵值(Key-Value)存儲數(shù)據(jù)庫、列存儲數(shù)據(jù)庫、文檔型數(shù)據(jù)庫和圖形(Graph)數(shù)據(jù)庫。它們的數(shù)據(jù)模型、優(yōu)缺點(diǎn)、典型應(yīng)用場景。
鍵值(Key-Value)存儲數(shù)據(jù)庫Key指向Value的鍵值對,通常用hash表來實(shí)現(xiàn)查找速度快數(shù)據(jù)無結(jié)構(gòu)化(通常只被當(dāng)作字符串或者二進(jìn)制數(shù)據(jù))內(nèi)容緩存,主要用于處理大量數(shù)據(jù)的高訪問負(fù)載,也用于一些日志系統(tǒng)等。
列存儲數(shù)據(jù)庫,以列簇式存儲,將同一列數(shù)據(jù)存在一起查找速度快,可擴(kuò)展性強(qiáng),更容易進(jìn)行分布式擴(kuò)展功能相對局限分布式的文件系統(tǒng)。
文檔型數(shù)據(jù)庫,Key-Value對應(yīng)的鍵值對,Value為結(jié)構(gòu)化數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格,表結(jié)構(gòu)可變(不需要像關(guān)系型數(shù)據(jù)庫一樣需預(yù)先定義表結(jié)構(gòu)),查詢性能不高,而且缺乏統(tǒng)一的查詢語法,Web應(yīng)用。
圖形(Graph)數(shù)據(jù)庫,圖結(jié)構(gòu),利用圖結(jié)構(gòu)相關(guān)算法(如最短路徑尋址,N度關(guān)系查找等),很多時候需要對整個圖做計(jì)算才能得出需要的信息,而且這種結(jié)構(gòu)不太好做分布式的集群方案,社交網(wǎng)絡(luò),推薦系統(tǒng)等。