翟霞
摘? ?要:新一輪科技革命和產(chǎn)業(yè)變革正在加速推進(jìn),技術(shù)創(chuàng)新日益成為重塑經(jīng)濟(jì)發(fā)展模式和促進(jìn)經(jīng)濟(jì)增長(zhǎng)的重要驅(qū)動(dòng)力量,而大數(shù)據(jù)無疑是第一核心推動(dòng)力。當(dāng)前,發(fā)展大數(shù)據(jù)已經(jīng)成為國家戰(zhàn)略,大數(shù)據(jù)在引領(lǐng)經(jīng)濟(jì)社會(huì)發(fā)展中的新引擎作用更加突顯。文章在闡述關(guān)系型數(shù)據(jù)庫面臨的問題基礎(chǔ)上,針對(duì)非關(guān)系數(shù)據(jù)庫遇到的問題,提出大數(shù)據(jù)技術(shù)與數(shù)據(jù)庫系列課程體系的銜接和創(chuàng)新研究。
關(guān)鍵詞:非關(guān)系數(shù)據(jù)庫;分布式架構(gòu);Hadoop;MongoDB
1? ? 非關(guān)系型數(shù)據(jù)庫提出背景
伴隨著互聯(lián)網(wǎng)的興起,人們生產(chǎn)、收集數(shù)據(jù)的能力大大增強(qiáng),也更加希望從數(shù)據(jù)中獲得新價(jià)值。大數(shù)據(jù)業(yè)務(wù)不斷出現(xiàn),例如搜索引擎、推薦系統(tǒng)、位置服務(wù)與日志分析等。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫可能無法對(duì)這些新業(yè)務(wù)進(jìn)行有效支撐。首先,關(guān)系型數(shù)據(jù)庫的橫向擴(kuò)展能力較差,使之無法對(duì)不斷增加的大數(shù)據(jù)進(jìn)行有效管理。其次,關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)模型嚴(yán)格固定,使之對(duì)多源數(shù)據(jù)或復(fù)雜的數(shù)據(jù)類型的處理能力較差。最后,一些大數(shù)據(jù)業(yè)務(wù)對(duì)事務(wù)機(jī)制、一致性和完整性的要求較低,這使得關(guān)系型數(shù)據(jù)庫的優(yōu)勢(shì)難以發(fā)揮作用,反而成為制約。
在這種背景下,多家互聯(lián)網(wǎng)企業(yè)的技術(shù)團(tuán)隊(duì)不約而同地著手研發(fā)非關(guān)系型數(shù)據(jù)庫,其核心理念是通過犧牲事務(wù)機(jī)制和強(qiáng)一致性保障機(jī)制,以獲得更好的分布式部署能力和橫向擴(kuò)展能力;通過打破關(guān)系模型、創(chuàng)造新的數(shù)據(jù)模型,使其在特定大數(shù)據(jù)場(chǎng)景下,對(duì)特定業(yè)務(wù)數(shù)據(jù)的處理性能更佳。
2? ? 非關(guān)系數(shù)據(jù)庫
隨著新型數(shù)據(jù)庫產(chǎn)品不斷涌現(xiàn),一些流行的分布式、非關(guān)系型數(shù)據(jù)庫統(tǒng)稱為NoSQL,代表了大數(shù)據(jù)時(shí)代來臨,需要為不同的業(yè)務(wù)場(chǎng)景選擇更適合的技術(shù)工具,此時(shí)不再強(qiáng)調(diào)技術(shù)工具的全面,而是強(qiáng)調(diào)“取舍”。此外,NoSQL并非是對(duì)關(guān)系型數(shù)據(jù)庫或SQL語言的否定,而是對(duì)傳統(tǒng)數(shù)據(jù)庫的發(fā)展和補(bǔ)充。NoSQL無法代替關(guān)系型數(shù)據(jù)庫,就像關(guān)系型數(shù)據(jù)庫也無法代替NoSQL。作為新生事物,NoSQL在技術(shù)原理和使用方法上,都和傳統(tǒng)數(shù)據(jù)庫有所不同,而且,由于沒有統(tǒng)一的標(biāo)準(zhǔn),不同NoSQL產(chǎn)品之間的技術(shù)差別也非常大。這使得傳統(tǒng)的數(shù)據(jù)庫用戶在產(chǎn)品選型和使用上無所適從,可能遇到以下問題[1]。
第一,不理解不同 NoSQL產(chǎn)品的設(shè)計(jì)理念和技術(shù)特點(diǎn),因此難以進(jìn)行產(chǎn)品選擇。
第二,不理解分布式系統(tǒng)可能遇到的技術(shù)問題和解決方法,因此難以進(jìn)行有效的部署、配置和優(yōu)化。
第三,習(xí)慣使用SQL語句操作數(shù)據(jù)庫,對(duì)新的數(shù)據(jù)庫操作方法感到陌生。
3? ? 大數(shù)據(jù)技術(shù)與關(guān)系數(shù)據(jù)庫理論相融合
針對(duì)以上問題,將NoSQL數(shù)據(jù)庫的分布式架構(gòu)、數(shù)據(jù)模型、數(shù)據(jù)管理策略等核心原理融入關(guān)系數(shù)據(jù)庫理論體系中,使學(xué)生在學(xué)習(xí)數(shù)據(jù)庫基本理論的同時(shí),能夠理解NoSQL數(shù)據(jù)庫的特點(diǎn),進(jìn)而判斷NoSQL的適用場(chǎng)景。通過介紹典型 NoSQL數(shù)據(jù)庫的部署方法、數(shù)據(jù)操作方法和編程訪問方法,使學(xué)生在實(shí)際工作中能夠初步運(yùn)用這些工具。
在關(guān)系數(shù)據(jù)庫基本原理部分,融入NoSQL的原理,主要突出NoSQL數(shù)據(jù)庫為進(jìn)行分布式部署、實(shí)現(xiàn)高可用性、高效率和易用性等目標(biāo)所采取的設(shè)計(jì)方法和功能取舍。在數(shù)據(jù)庫系列課程的學(xué)習(xí)中,學(xué)生已經(jīng)熟悉了SQL Server,Oracle和MySQL等關(guān)系數(shù)據(jù)庫管理系統(tǒng),但對(duì)非關(guān)系數(shù)據(jù)庫幾乎一無所知。所以在授課過程中,建議引導(dǎo)學(xué)生自主了解典型的非關(guān)系數(shù)據(jù)庫系統(tǒng),例如現(xiàn)階段國內(nèi)外較為流行的HBase,Cassandra,MongoDB,Redis和Neo4j等數(shù)據(jù)庫。
4? ? 典型NoSQL數(shù)據(jù)庫
(1)HBase是一種經(jīng)典的、基于列族的NoSQL數(shù)據(jù)庫,一般會(huì)和著名大數(shù)據(jù)工具Hadoop共同部署、配合使用。由于Hadoop是大數(shù)據(jù)工具的一個(gè)事實(shí)標(biāo)準(zhǔn),很多大數(shù)據(jù)工具都會(huì)保持和Hadoop,HBase的兼容性,使得HBase的應(yīng)用領(lǐng)域很廣,構(gòu)建各類解決方案的能力很強(qiáng),在互聯(lián)網(wǎng)、電信、電力、金融等行業(yè)均能看到其使用案例。
(2)Cassandra也是基于列族的NoSQL數(shù)據(jù)庫,其特點(diǎn)是:一方面,采用了環(huán)形拓?fù)浣Y(jié)構(gòu),避免了主節(jié)點(diǎn)單點(diǎn)失效問題;另一方面,提供了類似SQL的CQL語言。
(3)MongoDB是一種基于文檔模型的分布式NoSQL數(shù)據(jù)庫,其特點(diǎn)在于可以利用單表存儲(chǔ)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),例如列的嵌套,而不必考慮關(guān)系型數(shù)據(jù)庫所要求的列原子性。此外,MongoDB支持非常靈活的數(shù)據(jù)查詢操作,且在大數(shù)量的情況下,查詢性能也很高。
(4)Neo4j是一個(gè)圖數(shù)據(jù)庫,其分布式部署能力較弱,但數(shù)據(jù)結(jié)構(gòu)很有特色,適合存儲(chǔ)節(jié)點(diǎn)和關(guān)系模型,例如社交網(wǎng)絡(luò)上的關(guān)注關(guān)系、網(wǎng)頁之間的鏈接關(guān)系等。
5? ? 大數(shù)據(jù)技術(shù)與數(shù)據(jù)庫系列課程的銜接
在內(nèi)容側(cè)重上,突出大數(shù)據(jù)技術(shù)的覆蓋面,融合介紹了多種軟件的原理以及部署、操作和編程方法。在原理方面,盡可能介紹和NoSQL直接相關(guān)的、有特色的技術(shù)原理,并盡量用比較通俗的方式進(jìn)行解釋,避免對(duì)技術(shù)原理進(jìn)行過于深入的分析。此外,可以給學(xué)生推薦一些經(jīng)典的技術(shù)論文,供學(xué)生做擴(kuò)展閱讀;在實(shí)踐部署方法上,主要介紹部署的核心步驟和基本方法,例如盡可能多地采用默認(rèn)參數(shù)等,目的是突出分布式軟件的部署需求和重點(diǎn)配置內(nèi)容。詳細(xì)步驟將通過配套實(shí)驗(yàn)等方式體現(xiàn);在使用方法上,主要介紹基本的庫表操作、數(shù)據(jù)增刪改查方法、數(shù)據(jù)批量操作方法等,并介紹不同軟件所提供的特色功能,所介紹的方法在深度和覆蓋面上要盡可能簡(jiǎn)略;在編程方法上,可以提供Java和 Python兩種語言的示例。一般來說,通過Java編程可以實(shí)現(xiàn)更多功能和更高的效率;而Python語言更易使用,更容易進(jìn)行功能驗(yàn)證,學(xué)習(xí)時(shí)可以根據(jù)需要進(jìn)行取舍。為突出大數(shù)據(jù)技術(shù)與數(shù)據(jù)庫課程的銜接,不需要對(duì)Java和Python的基礎(chǔ)編程方法、開發(fā)環(huán)境以及如何導(dǎo)入依賴包等問題進(jìn)行介紹。
考慮到一般情況下,缺少分布式環(huán)境下的定制化部署、性能優(yōu)化和運(yùn)維管理等內(nèi)容,實(shí)驗(yàn)環(huán)境可能有所限制,對(duì)于如何在分布式環(huán)境下進(jìn)階使用和維護(hù)NoSQL數(shù)據(jù)庫等內(nèi)容,可以不做介紹。
6? ? 大數(shù)據(jù)技術(shù)發(fā)展的創(chuàng)新研究
大數(shù)據(jù)是一個(gè)復(fù)雜的系統(tǒng)工程,需要以進(jìn)步發(fā)展的理念,積極主動(dòng)適應(yīng)大數(shù)據(jù)時(shí)代所帶來的深刻變革。推動(dòng)大數(shù)據(jù)發(fā)展需要注重以下5個(gè)方面的辯證統(tǒng)一和統(tǒng)籌兼顧[2]。
6.1? 注重“長(zhǎng)與短結(jié)合”
所謂“長(zhǎng)”就是要目標(biāo)長(zhǎng)遠(yuǎn),要注重制定大數(shù)據(jù)發(fā)展的頂層設(shè)計(jì)和中長(zhǎng)期發(fā)展規(guī)劃,明確發(fā)展方向和總體目標(biāo);所謂“短”就是要著眼當(dāng)前,注重短期收益,從實(shí)處著手,快速起效,并形成效益反哺的良性循環(huán)。
6.2? 注重“快與慢結(jié)合”
所謂“快”就是要注重發(fā)揮新一代信息技術(shù)產(chǎn)業(yè)爆炸性增長(zhǎng)的特點(diǎn),以實(shí)際應(yīng)用需求為牽引加快推進(jìn),力爭(zhēng)快速占領(lǐng)大數(shù)據(jù)技術(shù)和產(chǎn)業(yè)制高點(diǎn);所謂“慢”就是要注重夯實(shí)大數(shù)據(jù)發(fā)展的基礎(chǔ),著重積累發(fā)展大數(shù)據(jù)基礎(chǔ)理論與核心共性關(guān)鍵技術(shù),培養(yǎng)行業(yè)領(lǐng)域發(fā)展中的大數(shù)據(jù)思維,潛心培育大數(shù)據(jù)專業(yè)人才。
6.3? 注重“高與低結(jié)合”
所謂“高”就是要打造大數(shù)據(jù)創(chuàng)新發(fā)展高地,部署高端大數(shù)據(jù)公共服務(wù)平臺(tái),組織開展大數(shù)據(jù)重大示范工程,提升重點(diǎn)領(lǐng)域和標(biāo)志性行業(yè)的大數(shù)據(jù)技術(shù)水平和應(yīng)用能力;所謂“低”就是要堅(jiān)持推進(jìn)大數(shù)據(jù)在各行各業(yè)和民生領(lǐng)域的廣泛應(yīng)用,擴(kuò)展大數(shù)據(jù)發(fā)展的廣度和深度。
6.4? 注重“內(nèi)與外結(jié)合”
所謂“內(nèi)”就是要向內(nèi)深度挖掘和深入研究大數(shù)據(jù),作為一門學(xué)科領(lǐng)域的深刻技術(shù)內(nèi)涵,構(gòu)建和完善大數(shù)據(jù)發(fā)展的完整理論體系和技術(shù)支撐體系;所謂“外”就是要加強(qiáng)開放創(chuàng)新,推動(dòng)大數(shù)據(jù)與人工智能、云計(jì)算、物聯(lián)網(wǎng)、網(wǎng)絡(luò)安全等信息技術(shù)領(lǐng)域的協(xié)同發(fā)展,促進(jìn)數(shù)據(jù)科學(xué)與計(jì)算機(jī)科學(xué)、基礎(chǔ)科學(xué)和各種應(yīng)用科學(xué)的深度融合。
6.5? 注重“開與閉結(jié)合”
所謂“開”就是要堅(jiān)持開放共享,加強(qiáng)科研機(jī)構(gòu)、企業(yè)間技術(shù)交流和合作,推動(dòng)大數(shù)據(jù)資源高效利用,打破數(shù)據(jù)壁壘,普惠數(shù)據(jù)服務(wù),縮小數(shù)據(jù)鴻溝,破除數(shù)據(jù)孤島;所謂“閉”就是要形成價(jià)值鏈生態(tài)閉環(huán),充分發(fā)揮大數(shù)據(jù)發(fā)展中技術(shù)驅(qū)動(dòng)與需求牽引的雙引擎作用,形成技術(shù)創(chuàng)新鏈和產(chǎn)業(yè)發(fā)展鏈協(xié)同發(fā)展的態(tài)勢(shì),構(gòu)建大數(shù)據(jù)產(chǎn)業(yè)良性發(fā)展的閉環(huán)生態(tài)圈。
7? ? 結(jié)語
推動(dòng)大數(shù)據(jù)的創(chuàng)新發(fā)展,已經(jīng)成為新時(shí)代的新訴求。推動(dòng)大數(shù)據(jù)、人工智能等信息技術(shù)產(chǎn)業(yè)與實(shí)體經(jīng)濟(jì)深度融合,培育新增長(zhǎng)點(diǎn),為建設(shè)網(wǎng)絡(luò)強(qiáng)國、數(shù)字中國、智慧社會(huì)提供新動(dòng)能。
[參考文獻(xiàn)]
[1]胡世昆.分布式數(shù)據(jù)庫技術(shù)在大數(shù)據(jù)中的應(yīng)用[J].電子技術(shù)與軟件工程,2019(1):153.
[2]侯賓.NoSQL數(shù)據(jù)庫原理[M].北京:人民郵電出版社,2018.