

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、,廈門大學計算機科學系 2017年2月版本,林子雨廈門大學計算機科學系E-mail: ziyulin@xmu.edu.cn主頁:http://www.cs.xmu.edu.cn/linziyu,第5章 NoSQL數據庫 (PPT版本號:2017年2月版本),,,,http://dbla
2、b.xmu.edu.cn/post/bigdata,溫馨提示:編輯幻燈片母版,可以修改每頁PPT的廈大?;蘸偷撞课淖?《大數據技術原理與應用(第2版)》,本章配套教學視頻,http://dblab.xmu.edu.cn/post/bigdata-online-course/#lesson5,《大數據技術原理與應用(第2版)》《第5章 NoSQL數據庫》在線視頻觀看地址,提綱,5.1 NoSQL簡介5.2 NoSQL興起的原因5.3
3、 NoSQL與關系數據庫的比較5.4 NoSQL的四大類型5.5 NoSQL的三大基石5.6 從NoSQL到NewSQL數據庫5.7 文檔數據庫MongoDB,歡迎訪問《大數據技術原理與應用》教材官方網站:http://dblab.xmu.edu.cn/post/bigdata,本PPT是如下教材的配套講義:《大數據技術原理與應用——概念、存儲、處理、分析與應用》 (2017年2月第2版)ISBN:978-7-115-
4、44330-4廈門大學 林子雨 編著,人民郵電出版社,5.1 NoSQL簡介,通常,NoSQL數據庫具有以下幾個特點:(1)靈活的可擴展性(2)靈活的數據模型(3)與云計算緊密融合,5.1 NoSQL簡介,現在已經有很多公司使用了NoSQL數據庫:GoogleFacebookMozillaAdobeFoursquareLinkedInDiggMcGraw-Hill EducationVermont Publ
5、ic Radio百度、騰訊、阿里、新浪、華為……,5.2 NoSQL興起的原因,1、關系數據庫已經無法滿足Web2.0的需求。主要表現在以下幾個方面:(1)無法滿足海量數據的管理需求(2)無法滿足數據高并發(fā)的需求(3)無法滿足高可擴展性和高可用性的需求,5.2 NoSQL興起的原因,復雜性:部署、管理、配置很復雜數據庫復制:MySQL主備之間采用復制方式,只能是異步復制,當主庫壓力較大時可能產生較大延遲,主備切換可能會丟失
6、最后一部分更新事務,這時往往需要人工介入,備份和恢復不方便擴容問題:如果系統(tǒng)壓力過大需要增加新的機器,這個過程涉及數據重新劃分,整個過程比較復雜,且容易出錯動態(tài)數據遷移問題:如果某個數據庫組壓力過大,需要將其中部分數據遷移出去,遷移過程需要總控節(jié)點整體協調,以及數據庫節(jié)點的配合。這個過程很難做到自動化,MySQL集群是否可以完全解決問題?,5.2 NoSQL興起的原因,2、“One size fits all”模式很難適用于截然不
7、同的業(yè)務場景關系模型作為統(tǒng)一的數據模型既被用于數據分析,也被用于在線業(yè)務。但這兩者一個強調高吞吐,一個強調低延時,已經演化出完全不同的架構。用同一套模型來抽象顯然是不合適的Hadoop就是針對數據分析MongoDB、Redis等是針對在線業(yè)務,兩者都拋棄了關系模型,5.2 NoSQL興起的原因,3、關系數據庫的關鍵特性包括完善的事務機制和高效的查詢機制。但是,關系數據庫引以為傲的兩個關鍵特性,到了Web2.0時代卻成了雞肋,主要
8、表現在以下幾個方面:(1)Web2.0網站系統(tǒng)通常不要求嚴格的數據庫事務(2)Web2.0并不要求嚴格的讀寫實時性(3)Web2.0通常不包含大量復雜的SQL查詢(去結構化,存儲空間換取更好的查詢性能),5.3 NoSQL與關系數據庫的比較,表5-1 NoSQL和關系數據庫的簡單比較,5.3 NoSQL與關系數據庫的比較,表5-1 NoSQL和關系數據庫的簡單比較(續(xù)),5.3 NoSQL與關系數據庫的比較,表5-1 NoS
9、QL和關系數據庫的簡單比較(續(xù)),5.3 NoSQL與關系數據庫的比較,總結(1)關系數據庫優(yōu)勢:以完善的關系代數理論作為基礎,有嚴格的標準,支持事務ACID四性,借助索引機制可以實現高效的查詢,技術成熟,有專業(yè)公司的技術支持劣勢:可擴展性較差,無法較好支持海量數據存儲,數據模型過于死板、無法較好支持Web2.0應用,事務機制影響了系統(tǒng)的整體性能等(2)NoSQL數據庫優(yōu)勢:可以支持超大規(guī)模數據存儲,靈活的數據模型可以很
10、好地支持Web2.0應用,具有強大的橫向擴展能力等劣勢:缺乏數學理論基礎,復雜查詢性能不高,大都不能實現事務強一致性,很難實現數據完整性,技術尚不成熟,缺乏專業(yè)團隊的技術支持,維護較困難等,5.3 NoSQL與關系數據庫的比較,總結關系數據庫和NoSQL數據庫各有優(yōu)缺點,彼此無法取代關系數據庫應用場景:電信、銀行等領域的關鍵業(yè)務系統(tǒng),需要保證強事務一致性NoSQL數據庫應用場景:互聯網企業(yè)、傳統(tǒng)企業(yè)的非關鍵業(yè)務(比如數據分析
11、)采用混合架構案例:亞馬遜公司就使用不同類型的數據庫來支撐它的電子商務應用對于“購物籃”這種臨時性數據,采用鍵值存儲會更加高效當前的產品和訂單信息則適合存放在關系數據庫中大量的歷史訂單信息則適合保存在類似MongoDB的文檔數據庫中,5.4 NoSQL的四大類型,NoSQL數據庫雖然數量眾多,但是,歸結起來,典型的NoSQL數據庫通常包括鍵值數據庫、列族數據庫、文檔數據庫和圖形數據庫,5.4 NoSQL的四大類型,5.4
12、 NoSQL的四大類型,文檔數據庫,圖數據庫,鍵值數據庫,列族數據庫,5.4.1 鍵值數據庫,5.4.1 鍵值數據庫,鍵值數據庫成為理想的緩沖層解決方案,Redis有時候會被人們稱為“強化版的Memcached”支持持久化、數據恢復、更多數據類型,5.4.2 列族數據庫,5.4.3 文檔數據庫,“文檔”其實是一個數據記錄,這個記錄能夠對包含的數據類型和內容進行“自我描述”。XML文檔、HTML文檔和JSON 文檔就屬于這一類
13、。SequoiaDB就是使用JSON格式的文檔數據庫,它的存儲的數據是這樣的:,關系數據庫:必須有schema信息才能理解數據的含義學生(學號,姓名,性別,年齡,系,年級)(1001,張三,男,20,計算機,2002),一個XML文檔:hbase.rootdirhdfs://localhost:9000/hbase ,5.4.3 文檔數據庫,數據是不規(guī)則的,每一條記錄包含了所有的有關“SequoiaDB”的信息而沒有
14、任何外部的引用,這條記錄就是“自包含”的這使得記錄很容易完全移動到其他服務器,因為這條記錄的所有信息都包含在里面了,不需要考慮還有信息在別的表沒有一起遷移走同時,因為在移動過程中,只有被移動的那一條記錄(文檔)需要操作,而不像關系型中每個有關聯的表都需要鎖住來保證一致性,這樣一來ACID的保證就會變得更快速,讀寫的速度也會有很大的提升,5.4.3 文檔數據庫,5.4.4 圖形數據庫,5.4.5 不同類型數據庫比較分析,MySQL
15、產生年代較早,而且隨著LAMP大潮得以成熟。盡管其沒有什么大的改進,但是新興的互聯網使用的最多的數據庫MongoDB是個新生事物,提供更靈活的數據模型、異步提交、地理位置索引等五花十色的功能HBase是個“仗勢欺人”的大象兵。依仗著Hadoop的生態(tài)環(huán)境,可以有很好的擴展性。但是就像象兵一樣,使用者需要養(yǎng)一頭大象(Hadoop),才能驅使他Redis是鍵值存儲的代表,功能最簡單。提供隨機數據存儲。就像一根棒子一樣,沒有多余的構造。
16、但是也正是因此,它的伸縮性特別好。就像悟空手里的金箍棒,大可捅破天,小能成縮成針,5.5 NoSQL的三大基石,5.5.1 CAP,所謂的CAP指的是:C(Consistency):一致性,是指任何一個讀操作總是能夠讀到之前完成的寫操作的結果,也就是在分布式環(huán)境中,多點的數據是一致的,或者說,所有節(jié)點在同一時間具有相同的數據A:(Availability):可用性,是指快速獲取數據,可以在確定的時間內返回操作結果,保證每個請求不
17、管成功或者失敗都有響應;P(Tolerance of Network Partition):分區(qū)容忍性,是指當出現網絡分區(qū)的情況時(即系統(tǒng)中的一部分節(jié)點無法和其他節(jié)點進行通信),分離的系統(tǒng)也能夠正常運行,也就是說,系統(tǒng)中任意信息的丟失或失敗不會影響系統(tǒng)的繼續(xù)運作。,5.5.1 CAP,CAP理論告訴我們,一個分布式系統(tǒng)不可能同時滿足一致性、可用性和分區(qū)容忍性這三個需求,最多只能同時滿足其中兩個,正所謂“魚和熊掌不可兼得”。,5.5.
18、1 CAP,(a)初始狀態(tài),一個犧牲一致性來換取可用性的實例,5.5.1 CAP,(b)正常執(zhí)行過程,一個犧牲一致性來換取可用性的實例,5.5.1 CAP,(c) 更新傳播失敗時的執(zhí)行過程,一個犧牲一致性來換取可用性的實例,5.5.1 CAP,當處理CAP的問題時,可以有幾個明顯的選擇:CA:也就是強調一致性(C)和可用性(A),放棄分區(qū)容忍性(P),最簡單的做法是把所有與事務相關的內容都放到同一臺機器上。很顯然,這種做法會嚴
19、重影響系統(tǒng)的可擴展性。傳統(tǒng)的關系數據庫(MySQL、SQL Server和PostgreSQL),都采用了這種設計原則,因此,擴展性都比較差CP:也就是強調一致性(C)和分區(qū)容忍性(P),放棄可用性(A),當出現網絡分區(qū)的情況時,受影響的服務需要等待數據一致,因此在等待期間就無法對外提供服務AP:也就是強調可用性(A)和分區(qū)容忍性(P),放棄一致性(C),允許系統(tǒng)返回不一致的數據,5.5.1 CAP,圖5-5 不同產品在CAP理論
20、下的不同設計原則,5.5.2 BASE,說起B(yǎng)ASE(Basically Availble, Soft-state, Eventual consistency),不得不談到ACID。,5.5.2 BASE,一個數據庫事務具有ACID四性:A(Atomicity):原子性,是指事務必須是原子工作單元,對于其數據修改,要么全都執(zhí)行,要么全都不執(zhí)行C(Consistency):一致性,是指事務在完成時,必須使所有的數據都保持一致狀態(tài)
21、I(Isolation):隔離性,是指由并發(fā)事務所做的修改必須與任何其它并發(fā)事務所做的修改隔離D(Durability):持久性,是指事務完成之后,它對于系統(tǒng)的影響是永久性的,該修改即使出現致命的系統(tǒng)故障也將一直保持,5.5.2 BASE,BASE的基本含義是基本可用(Basically Availble)、軟狀態(tài)(Soft-state)和最終一致性(Eventual consistency):,基本可用 基本可用,是
22、指一個分布式系統(tǒng)的一部分發(fā)生問題變得不可用時,其他部分仍然可以正常使用,也就是允許分區(qū)失敗的情形出現軟狀態(tài) “軟狀態(tài)(soft-state)”是與“硬狀態(tài)(hard-state)”相對應的一種提法。數據庫保存的數據是“硬狀態(tài)”時,可以保證數據一致性,即保證數據一直是正確的?!败洜顟B(tài)”是指狀態(tài)可以有一段時間不同步,具有一定的滯后性,5.5.2 BASE,BASE的基本含義是基本可用(Basically Availble
23、)、軟狀態(tài)(Soft-state)和最終一致性(Eventual consistency):,最終一致性 一致性的類型包括強一致性和弱一致性,二者的主要區(qū)別在于高并發(fā)的數據訪問操作下,后續(xù)操作是否能夠獲取最新的數據。對于強一致性而言,當執(zhí)行完一次更新操作后,后續(xù)的其他讀操作就可以保證讀到更新后的最新數據;反之,如果不能保證后續(xù)訪問讀到的都是更新后的最新數據,那么就是弱一致性。而最終一致性只不過是弱一致性的一種特例,允許后續(xù)
24、的訪問操作可以暫時讀不到更新后的數據,但是經過一段時間之后,必須最終讀到更新后的數據。 最常見的實現最終一致性的系統(tǒng)是DNS(域名系統(tǒng))。一個域名更新操作根據配置的形式被分發(fā)出去,并結合有過期機制的緩存;最終所有的客戶端可以看到最新的值。,5.5.3 最終一致性,最終一致性根據更新數據后各進程訪問到數據的時間和方式的不同,又可以區(qū)分為:因果一致性:如果進程A通知進程B它已更新了一個數據項,那么進程B的后續(xù)訪問將獲得A寫入的最
25、新值。而與進程A無因果關系的進程C的訪問,仍然遵守一般的最終一致性規(guī)則“讀己之所寫”一致性:可以視為因果一致性的一個特例。當進程A自己執(zhí)行一個更新操作之后,它自己總是可以訪問到更新過的值,絕不會看到舊值單調讀一致性:如果進程已經看到過數據對象的某個值,那么任何后續(xù)訪問都不會返回在那個值之前的值,5.5.3 最終一致性,最終一致性根據更新數據后各進程訪問到數據的時間和方式的不同,又可以區(qū)分為:會話一致性:它把訪問存儲系統(tǒng)的進程放到
26、會話(session)的上下文中,只要會話還存在,系統(tǒng)就保證“讀己之所寫”一致性。如果由于某些失敗情形令會話終止,就要建立新的會話,而且系統(tǒng)保證不會延續(xù)到新的會話單調寫一致性:系統(tǒng)保證來自同一個進程的寫操作順序執(zhí)行。系統(tǒng)必須保證這種程度的一致性,否則就非常難以編程了,5.5.3 最終一致性,如何實現各種類型的一致性?對于分布式數據系統(tǒng):N — 數據復制的份數W — 更新數據是需要保證寫完成的節(jié)點數R — 讀取數據的時候需
27、要讀取的節(jié)點數如果W+R>N,寫的節(jié)點和讀的節(jié)點重疊,則是強一致性。例如對于典型的一主一備同步復制的關系型數據庫,N=2,W=2,R=1,則不管讀的是主庫還是備庫的數據,都是一致的。一般設定是R+W = N+1,這是保證強一致性的最小設定如果W+R<=N,則是弱一致性。例如對于一主一備異步復制的關系型數據庫,N=2,W=1,R=1,則如果讀的是備庫,就可能無法讀取主庫已經更新過的數據,所以是弱一致性。,5.5.3
28、最終一致性,對于分布式系統(tǒng),為了保證高可用性,一般設置N>=3。不同的N,W,R組合,是在可用性和一致性之間取一個平衡,以適應不同的應用場景。如果N=W,R=1,任何一個寫節(jié)點失效,都會導致寫失敗,因此可用性會降低,但是由于數據分布的N個節(jié)點是同步寫入的,因此可以保證強一致性。實例:HBase是借助其底層的HDFS來實現其數據冗余備份的。HDFS采用的就是強一致性保證。在數據沒有完全同步到N個節(jié)點前,寫操作是不會返回成功的
29、。也就是說它的W=N,而讀操作只需要讀到一個值即可,也就是說它R=1。像Voldemort,Cassandra和Riak這些類Dynamo的系統(tǒng),通常都允許用戶按需要設置N,R,W三個值,即使是設置成W+R<= N也是可以的。也就是說他允許用戶在強一致性和最終一致性之間自由選擇。而在用戶選擇了最終一致性,或者是W<N的強一致性時,則總會出現一段“各個節(jié)點數據不同步導致系統(tǒng)處理不一致的時間”。為了提供最終一致性的支持,這些
30、系統(tǒng)會提供一些工具來使數據更新被最終同步到所有相關節(jié)點。,5.6 從NoSQL到NewSQL數據庫,圖5-6 大數據引發(fā)數據處理架構變革,5.6 從NoSQL到NewSQL數據庫,圖5-7 關系數據庫、NoSQL和NewSQL數據庫產品分類圖,5.7 文檔數據庫MongoDB,5.7.1 MongoDB簡介5.7.2 MongoDB概念解析5.7.3 安裝MongoDB,具體請參考網絡教程:http://www.runoob.c
31、om/mongodb/mongodb-tutorial.html,或者參考廈門大學數據庫實驗室建設的中國高校大數據課程公共服務平臺的技術文章:http://dblab.xmu.edu.cn/blog/115/,5.7.1 MongoDB簡介,MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統(tǒng)。在高負載的情況下,添加更多的節(jié)點,可以保證服務器性能。MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解
32、決方案。MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。,5.7.1 MongoDB簡介,提供了一個面向文檔存儲,操作起來比較簡單和容易可以設置任何屬性的索引來實現更快的排序具有較好的水平可擴展性支持豐富的查詢表達式,可輕易查詢文檔中內嵌的對象及數組可以實現替換完成的文檔(數據)或者一些指定的數據字段
33、MongoDB中的Map/Reduce主要是用來對數據進行批量處理和聚合操作支持各種編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等語言MongoDB安裝簡單,主要特點,5.7.2 MongoDB概念解析,在mongodb中基本的概念是文檔、集合、數據庫,5.7.2 MongoDB概念解析,通過下圖實例,我們也可以更直觀的的了解MongoDB中的一些概念:,,{ "_id"
34、: ObjectId("5146bb52d8524270060001f3"), "age": 25, "city": "Los Angeles", "email": "mark@abc.com", "user_name&qu
35、ot;: "Mark Hanks "}{"_id": ObjectId("5146bb52d8524270060001f2"),"age": 31,"city": "Dallas","email": "richard@abc.com","user_
36、name": "Richard Peter "},5.7.2 MongoDB概念解析,舉例2:在一個關系型數據庫中,一篇博客(包含文章內容、評論、評論的投票)會被打散在多張數據表中。在文檔數據庫MongoDB中,能用一個文檔來表示一篇博客, 評論與投票作為文檔數組,放在正文主文檔中。這樣數據更易于管理,消除了傳統(tǒng)關系型數據庫中影響性能和水平擴展性的“JOIN”操作。,author:,blogposts:,
37、comments:,5.7.2 MongoDB概念解析,{“id”:1,“author”:”Jane”,“blogposts”:{ “tile”:”MyFirstPost”, “comment”:{ “by”:”Ada”,”text”:”Good post
38、” } }},關系數據庫中的其中一條記錄,在文檔數據庫MongoDB中的存儲方式類似如下:,5.7.2 MongoDB概念解析,數據庫,一個mongodb中可以建立多個數據庫。MongoDB的默認數據庫為"db&
39、quot;,該數據庫存儲在data目錄中。MongoDB的單個實例可以容納多個獨立的數據庫,每一個都有自己的集合和權限,不同的數據庫也放置在不同的文件中。,文檔,文檔是一個鍵值(key-value)對(即BSON)。MongoDB 的文檔不需要設置相同的字段,并且相同的字段不需要相同的數據類型,這與關系型數據庫有很大的區(qū)別,也是 MongoDB 非常突出的特點。,一個簡單的文檔例子如下:,{“site”:“dblab.xmu.edu.
40、cn”, “name”:“廈門大學數據庫實驗室"},5.7.2 MongoDB概念解析,下表列出了 RDBMS 與 MongoDB 對應的術語:,5.7.2 MongoDB概念解析,集合,集合就是 MongoDB 文檔組,類似于 RDBMS (關系數據庫管理系統(tǒng):Relational Database Management System)中的表格。集合存在于數據庫中,集合沒有固定的結構,這意味著你在對集合可以插入不同格式和類
41、型的數據,但通常情況下我們插入集合的數據都會有一定的關聯性。比如,我們可以將以下不同數據結構的文檔插入到集合中:,{"site":"www.baidu.com"} {“site”:“dblab.xmu.edu.cn”, “name”:“廈門大學數據庫實驗室"} {"site":"www.runoob.com","name"
42、:"菜鳥教程","num":5},5.7.2 MongoDB概念解析,MongoDB 數據類型,5.7.3 安裝MongoDB,Window平臺安裝 MongoDB,MongoDB提供了可用于32位和64位系統(tǒng)的預編譯二進制包,你可以從MongoDB官網下載安裝,MongoDB預編譯二進制包下載地址:http://www.mongodb.org/downloads注意:在 MongoD
43、B2.2 版本后已經不再支持 Windows XP 系統(tǒng)。,Linux平臺安裝MongoDB,MongoDB提供了linux平臺上32位和64位的安裝包,你可以在官網下載安裝包。下載地址:http://www.mongodb.org/downloads,啟動 MongoDB服務,只需要在MongoDB安裝目錄的bin目錄下執(zhí)行'mongod'即可,5.7.4 訪問MongoDB,5.7.4.1 使用 MongoDB s
44、hell訪問MongoDB5.7.4.2 使用Java程序訪問 MongoDB,5.7.4.1 使用 MongoDB shell訪問MongoDB,mongodb://localhost,使用 MongoDB shell 來連接 MongoDB 服務器,使用用戶名和密碼連接登陸到指定數據庫:,mongodb://admin:123456@localhost/test,5.7.4.1 使用 MongoDB shell訪問MongoDB,
45、MongoDB 創(chuàng)建數據庫,MongoDB 創(chuàng)建數據庫的語法格式如下:,use DATABASE_NAME,如果數據庫不存在,則創(chuàng)建數據庫,否則切換到指定數據庫。,如果你想查看所有數據庫,可以使用 show dbs 命令,創(chuàng)建集合,MongoDB沒有單獨創(chuàng)建集合名的shell命令,在插入數據的時候,MongoDB會自動創(chuàng)建對應的集合。,5.7.4.1 使用 MongoDB shell訪問MongoDB,MongoDB
46、 插入文檔,文檔的數據結構和JSON基本一樣。所有存儲在集合中的數據都是BSON格式。BSON是一種類JSON的一種二進制形式的存儲格式,簡稱Binary JSON。,MongoDB 使用 insert() 或 save() 方法向集合中插入文檔,語法如下:,db.COLLECTION_NAME.insert(document),實例,>db.col.insert({title: 'MongoDB 教程
47、9;, description: 'MongoDB 是一個 Nosql 數據庫', by: ‘廈門大學數據庫實驗室', url: 'http://dblab.xmu.edu.cn', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 }),5.7.4.2 使用Java程序訪問 Mongo
48、DB,MongoDB Java,環(huán)境配置在Java程序中如果要使用MongoDB,需要確保已經安裝了Java環(huán)境及MongoDB JDBC 驅動。首先必須下載mongo jar包,下載地址:https://github.com/mongodb/mongo-java-driver/downloads, 請確保下載最新版本。需要將mongo.jar包含在你的 classpath 中,5.7.4.2 使用Java程序訪問 MongoDB
49、,(1)連接數據庫,import com.mongodb.MongoClient;……//這里省略其他需要導入的包public class MongoDBJDBC{ public static void main( String args[] ){ try{ // 連接到 mongodb 服務 MongoClient mongoClient = new MongoClient( &q
50、uot;localhost" , 27017 ); // 連接到數據庫 DB db = mongoClient.getDB( "test" ); System.out.println("Connect to database successfully"); boolean auth = db.authenticate(myUse
51、rName, myPassword); System.out.println("Authentication: "+auth); }catch(Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } }},5.7.4.2 使用Java程序訪
52、問 MongoDB,(2)創(chuàng)建集合,可以使用com.mongodb.DB類中的createCollection()來創(chuàng)建集合,public class MongoDBJDBC{ public static void main( String args[] ){ try{ // 連接到 mongodb 服務 MongoClient mongoClient = new MongoClie
53、nt( "localhost" , 27017 ); // 連接到數據庫 DB db = mongoClient.getDB( "test" ); System.out.println("Connect to database successfully"); boolean auth = db.authenticate(
54、myUserName, myPassword); System.out.println("Authentication: "+auth); DBCollection coll = db.createCollection("mycol"); System.out.println("Collection created successfully&quo
55、t;); }catch(Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } }},5.7.4.2 使用Java程序訪問 MongoDB,(3)插入文檔,可以使用com.mongodb.DBCollection類的 insert() 方法來插入一個文檔,publi
56、c class MongoDBJDBC{ public static void main( String args[] ){ try{ // 連接到 mongodb 服務 MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); // 連接到數據庫 DB db =
57、 mongoClient.getDB( "test" ); System.out.println("Connect to database successfully"); boolean auth = db.authenticate(myUserName, myPassword); System.out.println("Authentication: &quo
58、t;+auth); DBCollection coll = db.getCollection("mycol"); System.out.println("Collection mycol selected successfully"); BasicDBObject doc = new BasicDBObject("t
59、itle", "MongoDB"). append("description", "database"). append("likes", 100). append("url", "http://www.w3cschool.cc/mongodb/&
60、quot;). append("by", "w3cschool.cc"); coll.insert(doc); System.out.println("Document inserted successfully"); }catch(Exception e){ System.err.printl
61、n( e.getClass().getName() + ": " + e.getMessage() ); } }},本章小結,本章介紹了NoSQL數據庫的相關知識NoSQL數據庫較好地滿足了大數據時代的各種非結構化數據的存儲需求,開始得到越來越廣泛的應用。但是,需要指出的是,傳統(tǒng)的關系數據庫和NoSQL數據庫各有所長,彼此都有各自的市場空間,不存在一方完全取代另一方的問題,在很長的一段時期內,二者都會
62、共同存在,滿足不同應用的差異化需求NoSQL數據庫主要包括鍵值數據庫、列族數據庫、文檔型數據庫和圖形數據庫等四種類型,不同產品都有各自的應用場合。CAP、BASE和最終一致性是NoSQL數據庫的三大理論基石,是理解NoSQL數據庫的基礎介紹了融合傳統(tǒng)關系數據庫和NoSQL優(yōu)點的NewSQL數據庫本章最后介紹了具有代表性的NoSQL數據庫——文檔數據庫MongoDB,附錄:主講教師林子雨簡介,,單位:廈門大學計算機科學系E-mai
63、l: ziyulin@xmu.edu.cn個人網頁:http://www.cs.xmu.edu.cn/linziyu數據庫實驗室網站:http://dblab.xmu.edu.cn,主講教師:林子雨,林子雨,男,1978年出生,博士(畢業(yè)于北京大學),現為廈門大學計算機科學系助理教授(講師),曾任廈門大學信息科學與技術學院院長助理、晉江市發(fā)展和改革局副局長。中國計算機學會數據庫專業(yè)委員會委員,中國計算機學會信息系統(tǒng)專業(yè)委員會委員,榮
64、獲“2016中國大數據創(chuàng)新百人”稱號。中國高校首個“數字教師”提出者和建設者,廈門大學數據庫實驗室負責人,廈門大學云計算與大數據研究中心主要建設者和骨干成員,2013年度廈門大學獎教金獲得者。主要研究方向為數據庫、數據倉庫、數據挖掘、大數據、云計算和物聯網,并以第一作者身份在《軟件學報》《計算機學報》和《計算機研究與發(fā)展》等國家重點期刊以及國際學術會議上發(fā)表多篇學術論文。作為項目負責人主持的科研項目包括1項國家自然科學青年基金項目(No
65、.61303004)、1項福建省自然科學青年基金項目(No.2013J05099)和1項中央高?;究蒲袠I(yè)務費項目(No.2011121049),同時,作為課題負責人完成了國家發(fā)改委城市信息化重大課題、國家物聯網重大應用示范工程區(qū)域試點泉州市工作方案、2015泉州市互聯網經濟調研等課題。中國高校首個“數字教師”提出者和建設者,2009年至今,“數字教師”大平臺累計向網絡免費發(fā)布超過100萬字高價值的研究和教學資料,累計網絡訪問量超過10
66、0萬次。打造了中國高校大數據教學知名品牌,編著出版了中國高校第一本系統(tǒng)介紹大數據知識的專業(yè)教材《大數據技術原理與應用》,并成為京東、當當網等網店暢銷書籍;建設了國內高校首個大數據課程公共服務平臺,為教師教學和學生學習大數據課程提供全方位、一站式服務,年訪問量超過50萬次。具有豐富的政府和企業(yè)信息化培訓經驗,廈門大學管理學院EDP中心、浙江大學管理學院EDP中心、廈門大學繼續(xù)教育學院、泉州市科技培訓中心特邀培訓講師,曾給中國移動通信集團公
67、司、福州馬尾區(qū)政府、福建龍巖卷煙廠、福建省物聯網科學研究院、石獅市物流協會、廈門市物流協會、浙江省中小企業(yè)家、四川瀘州企業(yè)家、江蘇沛縣企業(yè)家等開展信息化培訓,累計培訓人數達3000人以上。,掃一掃訪問個人主頁,附錄:《大數據技術原理與應用》教材,歡迎訪問《大數據技術原理與應用——概念、存儲、處理、分析與應用》教材官方網站:http://dblab.xmu.edu.cn/post/bigdata,掃一掃訪問教材官網,《大數據技術原理與應用
68、——概念、存儲、處理、分析與應用(第2版)》,由廈門大學計算機科學系林子雨博士編著,是中國高校第一本系統(tǒng)介紹大數據知識的專業(yè)教材。全書共有15章,系統(tǒng)地論述了大數據的基本概念、大數據處理架構Hadoop、分布式文件系統(tǒng)HDFS、分布式數據 庫HBase、NoSQL數據庫、云數據庫、分布式并行編程模型MapReduce、Spark、流計算、圖計算、數據可視化以及大數據在互聯網、生物醫(yī)學和物流等各個領域的應用。在Hadoop、HDFS、
69、HBase和MapReduce等重要章節(jié),安排了入門級的實踐操作,讓讀者更好地學習和掌握大數據關鍵技術。本書可以作為高等院校計算機專業(yè)、信息管理等相關專業(yè)的大數據課程教材,也可供相關技術人員參考、學習、培訓之用。,附錄:中國高校大數據課程公共服務平臺,掃一掃訪問平臺主頁,http://dblab.xmu.edu.cn/post/bigdata-teaching-platform/,掃一掃觀看3分鐘FLASH動畫宣傳片,,Depart
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- chapter12-廈門大學-林子雨-大數據技術原理與應用(第2版教材)-第12章-數據可視化(20
- lesson13-廈門大學-林子雨-大數據技術原理與應用-第13講-教材第十一、十二、十三章-大數據
- 數據庫原理與應用第2版
- 3 數據庫第2章第5題解答
- (林子雨-2017新版-大數據技術原理與應用)廈門大學本科課程教學大綱
- (林子雨-2017新版-大數據技術原理與~應用)廈門大學本科課程教學大綱
- 大數據技術原理與應用林子雨版課后習題答案
- 大數據技術原理與應用 林子雨版 課后習題答案
- 第5章 數據庫操作
- 大數據技術原理與應用林子雨課后習題答案
- 大數據技術原理與應用林子雨課后習題答案
- [林子雨_2018年新版_大數據技術原理及應用]廈門大學本科課程教學大綱
- 數據庫原理及其應用(第2版)習題參考.答案
- 《數據庫原理與應用》第05章在線測試
- 數據庫原理及應用第2版習題參考答案
- 《數據庫原理與應用》第05章在線測試
- 第5章數據庫的創(chuàng)建和管理
- 廈門大學林子雨編著
- 2 數據庫第2章第3、4、6題解答
- 4 數據庫第3章第3、4、5題解答
評論
0/150
提交評論