高曙光
摘 要:近年來,隨著互聯(lián)網(wǎng)的深入發(fā)展,企業(yè)的數(shù)據(jù)庫面臨規(guī)模日益擴(kuò)大的海量數(shù)據(jù),傳統(tǒng)的關(guān)系型數(shù)據(jù)庫在性能上的不足逐漸顯現(xiàn),面對(duì)這一挑戰(zhàn),互聯(lián)網(wǎng)領(lǐng)域開始出現(xiàn)了大批針對(duì)特定場(chǎng)景,以高性能和使用便利為目的的功能特殊化的數(shù)據(jù)庫產(chǎn)品,這一類數(shù)據(jù)庫被統(tǒng)稱為NoSQL。這類數(shù)據(jù)庫近幾年發(fā)展迅速,企業(yè)對(duì)相關(guān)技術(shù)人才的需求也迅速增加,高職院校是培養(yǎng)應(yīng)用技術(shù)人才的主力教育機(jī)構(gòu),但是在這一技術(shù)的應(yīng)用上幾乎沒有起步,本文從NoSQL在社會(huì)上的應(yīng)用著手,結(jié)合高職院校數(shù)據(jù)庫教學(xué)改革,對(duì)高職開設(shè)NoSQL類數(shù)據(jù)庫課程相關(guān)問題進(jìn)行初步探討和研究。
關(guān)鍵詞:NoSQL;高職;數(shù)據(jù)庫;教學(xué)
1 概述
隨著互聯(lián)網(wǎng)的不斷發(fā)展,各種類型的應(yīng)用層出不窮,所以導(dǎo)致在這個(gè)云計(jì)算的時(shí)代,對(duì)技術(shù)提出了更多的需求。雖然關(guān)系型數(shù)據(jù)庫已經(jīng)在業(yè)界的數(shù)據(jù)存儲(chǔ)方面占據(jù)不可動(dòng)搖的地位,但是其固有的缺點(diǎn)如擴(kuò)展困難、讀寫慢、成本高使其在當(dāng)今時(shí)代的某些數(shù)據(jù)庫應(yīng)用領(lǐng)域力不從心。業(yè)界為了解決互聯(lián)網(wǎng)發(fā)展中對(duì)數(shù)據(jù)庫的新的要求,推出了各種類型的“NoSQL”數(shù)據(jù)庫。
NoSQL這一概念是由Eric Evans在2009年正式提出,一般被認(rèn)為是指非關(guān)系型的分布式數(shù)據(jù)庫,并且不支持原子性、一致性、隔離性、持久性的數(shù)據(jù)庫設(shè)計(jì)模式。
總的來說,在設(shè)計(jì)上,它們非常關(guān)注對(duì)數(shù)據(jù)高并發(fā)地讀寫和對(duì)海量數(shù)據(jù)的存儲(chǔ)等,與關(guān)系型數(shù)據(jù)庫相比,它們?cè)诩軜?gòu)和數(shù)據(jù)模型方面做了一些減少和簡(jiǎn)化,而在擴(kuò)展和并發(fā)等功能上做了增強(qiáng)。
2 NoSQL的應(yīng)用和分類
隨著大數(shù)據(jù)時(shí)代的到來,現(xiàn)今的計(jì)算機(jī)體系結(jié)構(gòu)在數(shù)據(jù)存儲(chǔ)方面要求具備龐大的水平擴(kuò)展性,傳統(tǒng)的數(shù)據(jù)庫在解決這一問題上困難重重,許多互聯(lián)網(wǎng)知名公司只能求助于新興的NoSQL數(shù)據(jù)庫技術(shù),如Google、Yahoo、Facebook、Twitter、Amazon等都進(jìn)行了大量的開發(fā)工作。而國內(nèi)的一些知名IT企業(yè),尤其是互聯(lián)網(wǎng)企業(yè)也紛紛采用了一些NoSQL型數(shù)據(jù)庫技術(shù),比如新浪微博就使用了REDIS,淘寶更是開發(fā)設(shè)計(jì)了數(shù)據(jù)存儲(chǔ)系統(tǒng)oceanbase,優(yōu)酷的在線評(píng)論業(yè)務(wù)則使用MONGODB,運(yùn)營數(shù)據(jù)分析及挖掘則使用HBASE。
通過近些年企業(yè)對(duì)NOSQL數(shù)據(jù)庫的使用,我們發(fā)現(xiàn),NOSQL數(shù)據(jù)庫正在成為數(shù)據(jù)庫領(lǐng)域不可或缺的一部分,它彌補(bǔ)了關(guān)系型數(shù)據(jù)庫在某些應(yīng)用中的不足,所以得到了飛速的發(fā)展。根據(jù)2014年1月的數(shù)據(jù),已經(jīng)有七種NOSQL類數(shù)據(jù)庫產(chǎn)品躋身數(shù)據(jù)庫的前二十名行列。
NoSQL可以大體上分為4個(gè)種類:Key-value、Document-Oriented、Column-Family Databases以及 Graph-Oriented Databases。這些類型的特性如下:
鍵值(Key-Value)數(shù)據(jù)庫
鍵值數(shù)據(jù)庫就像在傳統(tǒng)語言中使用的哈希表。你可以通過key來添加、查詢或者刪除數(shù)據(jù),鑒于使用主鍵訪問,所以會(huì)獲得不錯(cuò)的性能及擴(kuò)展性。
面向文檔(Document-Oriented)數(shù)據(jù)庫
面向文檔數(shù)據(jù)庫會(huì)將數(shù)據(jù)以文檔的形式儲(chǔ)存。每個(gè)文檔都是自包含的數(shù)據(jù)單元,是一系列數(shù)據(jù)項(xiàng)的集合。每個(gè)數(shù)據(jù)項(xiàng)都有一個(gè)名稱與對(duì)應(yīng)的值,值既可以是簡(jiǎn)單的數(shù)據(jù)類型,如字符串、數(shù)字和日期等;也可以是復(fù)雜的類型,如有序列表和關(guān)聯(lián)對(duì)象。
列存儲(chǔ)(Wide Column Store/Column-Family)數(shù)據(jù)庫
列存儲(chǔ)數(shù)據(jù)庫將數(shù)據(jù)儲(chǔ)存在列族(column family)中,一個(gè)列族存儲(chǔ)經(jīng)常被一起查詢的相關(guān)數(shù)據(jù)。
圖(Graph-Oriented)數(shù)據(jù)庫
圖數(shù)據(jù)庫允許我們將數(shù)據(jù)以圖的方式儲(chǔ)存。實(shí)體會(huì)被作為頂點(diǎn),而實(shí)體之間的關(guān)系則會(huì)被作為邊。
3 NoSQL的特點(diǎn)
NoSQL在使用中體現(xiàn)與傳統(tǒng)數(shù)據(jù)庫技術(shù)的幾個(gè)優(yōu)點(diǎn):
3.1 靈活的可擴(kuò)展性
當(dāng)數(shù)據(jù)快速增長(zhǎng)時(shí),一般的解決方案是使用更大型的服務(wù)器來承載增加的負(fù)載,達(dá)到擴(kuò)展數(shù)據(jù)庫的目的,這種方法成本較高,實(shí)現(xiàn)起來復(fù)雜。而使用增加主機(jī)數(shù)量來減輕負(fù)載是成本較低的方案,但在傳統(tǒng)數(shù)據(jù)庫中實(shí)現(xiàn)起來不是一件容易的事,而這是NoSQL數(shù)據(jù)庫擅長(zhǎng)的領(lǐng)域。
3.2 大數(shù)據(jù)的應(yīng)用
在過去的十年里,正如交易率發(fā)生了翻天覆地的增長(zhǎng)一樣,需要存儲(chǔ)的數(shù)據(jù)量也發(fā)生了急劇地膨脹。為了滿足數(shù)據(jù)量增長(zhǎng)的需要,關(guān)系型數(shù)據(jù)庫的容量也在日益增加,已經(jīng)大到技術(shù)和成本不能承受的地步?,F(xiàn)在,大量的“大數(shù)據(jù)”可以通過NoSQL系統(tǒng)來處理,它們能夠處理的數(shù)據(jù)量遠(yuǎn)遠(yuǎn)超出了最大型的關(guān)系型數(shù)據(jù)庫所能處理的極限。
3.3 對(duì)數(shù)據(jù)庫管理員要求降低
NoSQL數(shù)據(jù)庫從一開始就是為了降低管理方面的要求而設(shè)計(jì)的,它采用自動(dòng)修復(fù),數(shù)據(jù)分配和簡(jiǎn)單的數(shù)據(jù)模型,可以讓管理和優(yōu)化工作要求降低很多。
3.4 成本低
關(guān)系型數(shù)據(jù)庫通常需要依靠昂貴的專有服務(wù)器和存儲(chǔ)系統(tǒng)來進(jìn)行存儲(chǔ)。使用NoSQL,每GB的成本或每秒處理的事務(wù)的成本都比使用關(guān)系型數(shù)據(jù)庫的成本少得多,可以使企業(yè)花費(fèi)更低的成本來存儲(chǔ)和處理更多的數(shù)據(jù)。
4 NoSQL在高職中的應(yīng)用
NOSQL在企業(yè)的應(yīng)用時(shí)間不太長(zhǎng),而且相應(yīng)的數(shù)據(jù)庫產(chǎn)品各類繁多,多數(shù)沒有形成標(biāo)準(zhǔn),相關(guān)的資料書籍也很少,所以影響了它在高職院校的應(yīng)用,高職院校很少對(duì)NOSQL進(jìn)行研究,也沒有學(xué)校開設(shè)相關(guān)的系統(tǒng)課程。NOSQL研究和教學(xué)在高職院校發(fā)展基本為零,原因有以下幾點(diǎn):
4.1 教師對(duì)NOSQL的認(rèn)知和掌握能力有限
長(zhǎng)期以來,普通高校計(jì)算機(jī)專業(yè)的數(shù)據(jù)庫課程以關(guān)系數(shù)據(jù)庫為講授內(nèi)容。教師認(rèn)知能力有限,基本很少接觸NOSQL方面的內(nèi)容,研究和學(xué)習(xí)掌握NOSQL有較大困難。
在講授數(shù)據(jù)庫課程時(shí),因?yàn)殛P(guān)系數(shù)據(jù)庫長(zhǎng)期占主導(dǎo)和統(tǒng)治地位,忽略了對(duì)其他數(shù)據(jù)庫的研究。當(dāng)前高校與市場(chǎng)的聯(lián)系遠(yuǎn)遠(yuǎn)不如想象的那樣緊密,因此,當(dāng)前高校教師面對(duì)著對(duì)NoSQL 技術(shù)的認(rèn)知能力,這里不僅包含對(duì)技術(shù)的掌握和熟悉,而更重要的是對(duì)該新興技術(shù)的認(rèn)可。在授課的過程中,如何把握NoSQL 技術(shù)和關(guān)系數(shù)據(jù)庫的之間的關(guān)系,巧妙地融合兩種技術(shù),使學(xué)生有個(gè)全面和清晰的認(rèn)識(shí)是數(shù)據(jù)庫課程教師的重要工作之一。
4.2 學(xué)生的知識(shí)水平有限
高職的學(xué)生來源決定了他們?cè)诔橄笏季S能力上和自學(xué)能力上都不能達(dá)到優(yōu)秀的程序,成熟的親和度高的關(guān)系型數(shù)據(jù)庫產(chǎn)品對(duì)高職學(xué)生來說容易接受,對(duì)于需要掌握更多低層技術(shù)的NoSQL數(shù)據(jù)庫學(xué)習(xí)起來難度就大的多,而且兩種技術(shù)原理有很大不同,理解新技術(shù)的困難也是要考慮的問題。
4.3 學(xué)校的實(shí)驗(yàn)條件限制
實(shí)驗(yàn)一直是數(shù)據(jù)庫課程教學(xué)的重要環(huán)節(jié),現(xiàn)有大多數(shù)學(xué)校的實(shí)驗(yàn)條件和環(huán)境能夠基本滿足關(guān)系數(shù)據(jù)庫技術(shù)的教學(xué)需要,但是對(duì)于實(shí)驗(yàn)和實(shí)訓(xùn)的進(jìn)程設(shè)計(jì)中如何體現(xiàn)NoSQL技術(shù)的優(yōu)勢(shì)和特點(diǎn),如何合理構(gòu)建實(shí)驗(yàn)環(huán)境也是教學(xué)的一大課題和難點(diǎn)。
5 如何在高職數(shù)據(jù)庫教學(xué)中開展NoSQL教學(xué)活動(dòng)
在社會(huì)強(qiáng)大的需求面前,在高職開設(shè)NoSQL的教學(xué)勢(shì)所必然,在充分研究的基礎(chǔ)上,我認(rèn)為應(yīng)在以下幾個(gè)方面來建設(shè)這一類課程:
5.1 教學(xué)內(nèi)容選取
數(shù)據(jù)庫課程的學(xué)習(xí)內(nèi)容分為三大階段,利用學(xué)習(xí)任務(wù)的遞進(jìn)實(shí)現(xiàn)教學(xué)目標(biāo)。第一,數(shù)據(jù)庫系統(tǒng)基礎(chǔ)知識(shí)階段;第二,項(xiàng)目學(xué)習(xí)階段;第三,項(xiàng)目實(shí)踐階段。
NoSQL數(shù)據(jù)庫系統(tǒng)教學(xué)中基礎(chǔ)知識(shí)階段的教學(xué)主要內(nèi)容應(yīng)該有數(shù)據(jù)庫系統(tǒng)基本概念、NoSQL基本概念、NoSQL的類別和原理。通過本階段學(xué)習(xí),學(xué)生能掌握NoSQL數(shù)據(jù)庫系統(tǒng)的基本內(nèi)容和領(lǐng)域內(nèi)涵,為后面的實(shí)際操作技能學(xué)習(xí)打下理論基礎(chǔ)。項(xiàng)目學(xué)習(xí)階段:選取一個(gè)實(shí)際的互聯(lián)網(wǎng)項(xiàng)目,作為實(shí)例貫穿全過程,依據(jù)流行的結(jié)構(gòu)和開發(fā)過程,將課程內(nèi)容分為:項(xiàng)目準(zhǔn)備,數(shù)據(jù)庫定義,應(yīng)用開發(fā),數(shù)據(jù)庫安全管理與維護(hù)四個(gè)學(xué)習(xí)情景。項(xiàng)目實(shí)踐階段是以小型互聯(lián)網(wǎng)應(yīng)用為例進(jìn)行從需求分析到最終系統(tǒng)集成的完整開發(fā)過程實(shí)踐.。學(xué)生通過完整的項(xiàng)目的開發(fā),熟悉數(shù)據(jù)庫設(shè)計(jì)和構(gòu)建的基本原則,掌握數(shù)據(jù)庫系統(tǒng)的分析和設(shè)計(jì)方法,提高學(xué)生實(shí)際編程能力,為今后從事信息系統(tǒng)開發(fā)提供必要的技能。
5.2 教學(xué)方法的綜合應(yīng)用
NoSQL數(shù)據(jù)庫的教學(xué)應(yīng)該沿用近些年已經(jīng)成熟的“工學(xué)一體”教學(xué)方法。以項(xiàng)目導(dǎo)向教學(xué)法為主線,將相關(guān)的知識(shí)點(diǎn)匯集,把整個(gè)課程的教學(xué)演變程連貫的相關(guān)的可實(shí)際操作的業(yè)務(wù)訓(xùn)練。在各教學(xué)單元中采用任務(wù)驅(qū)動(dòng)教學(xué)方法,使“任務(wù)”存在于課程教學(xué)過程的始終,把一個(gè)項(xiàng)目分解為若干個(gè)大任務(wù),每一個(gè)大任務(wù),又分解為若干個(gè)小任務(wù),讓學(xué)生有目標(biāo),有方向。 采用角色扮演教學(xué)法,以小型互聯(lián)網(wǎng)應(yīng)用開發(fā)團(tuán)隊(duì)為模擬單位,學(xué)生在團(tuán)隊(duì)中扮演不同角色,引導(dǎo)學(xué)生去發(fā)現(xiàn)問題,探索問題和熟悉開發(fā)團(tuán)隊(duì)的協(xié)作關(guān)系。
[參考文獻(xiàn)]
[1]周雙喜.以人為本構(gòu)建科學(xué)有效的高校教師激勵(lì)機(jī)制.中國成人教育,2012.1.
[2]婁穎.淺析NoSQL技術(shù)與數(shù)據(jù)庫教學(xué)的關(guān)系.計(jì)算機(jī)時(shí)代,2013.2.
[3]Eric Redmond.Seven database in seven weeks.人民郵電出版社,2012.4.
[4]佐佐木達(dá)也(日).NoSQL數(shù)據(jù)庫入門.人民郵電出版社,2012.5.
[5]陸嘉恒.大數(shù)據(jù)挑戰(zhàn)與NoSQL數(shù)據(jù)庫技術(shù).電子工業(yè)出版社,2013.4.
[6]shashank tiwari(?。?深入NoSQL.人民郵電出版社,2012.11.
[7]蔡金花.淺析NoSQL及使用.電腦知識(shí)與技術(shù),2011.4.
[8]黃賢立.NoSQL非關(guān)系型數(shù)據(jù)庫的發(fā)展及應(yīng)用初探.福建電腦,2010.7.
[9]盧冬海,何先波.淺析NoSQL數(shù)據(jù)庫.中國西部科技,2011.2.
[10]沈姝.NoSQL數(shù)據(jù)庫技術(shù)及其應(yīng)用研究.南京信息工程大學(xué),2012.1.
[11]張華強(qiáng).關(guān)系型數(shù)據(jù)庫與NoSQL數(shù)據(jù)庫.電腦知識(shí)與技術(shù),2012.6.