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