Chapter6- 大數(shù)據(jù)基礎(chǔ)編程、實驗和案例教程-第6章-典型NoSQL數(shù)據(jù)庫的安裝和使用_第1頁
Chapter6- 大數(shù)據(jù)基礎(chǔ)編程、實驗和案例教程-第6章-典型NoSQL數(shù)據(jù)庫的安裝和使用_第2頁
Chapter6- 大數(shù)據(jù)基礎(chǔ)編程、實驗和案例教程-第6章-典型NoSQL數(shù)據(jù)庫的安裝和使用_第3頁
Chapter6- 大數(shù)據(jù)基礎(chǔ)編程、實驗和案例教程-第6章-典型NoSQL數(shù)據(jù)庫的安裝和使用_第4頁
Chapter6- 大數(shù)據(jù)基礎(chǔ)編程、實驗和案例教程-第6章-典型NoSQL數(shù)據(jù)庫的安裝和使用_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第6章典型NoSQL數(shù)據(jù)庫的安裝和使用(PPT版本號:2020年12月版本)

提綱6.1Redis安裝和使用6.2MongoDB的安裝和使用6.1Redis安裝和使用6.1.1Redis簡介6.1.2安裝Redis6.1.3Redis實例演示6.1.1Redis簡介Redis是一個鍵值(key-value)存儲系統(tǒng),即鍵值對非關(guān)系型數(shù)據(jù)庫,和Memcached類似,目前正在被越來越多的互聯(lián)網(wǎng)公司采用。Redis作為一個高性能的鍵值數(shù)據(jù)庫,不僅在很大程度上彌補了memcached這類鍵值存儲的不足,而且在部分場合下可以對關(guān)系數(shù)據(jù)庫起到很好的補充作用。Redis提供了Python、Ruby、Erlang、PHP客戶端,使用很方便。Redis支持存儲的值(value)類型包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。這些數(shù)據(jù)類型都支持push/pop、add/remove以及取交集、并集和差集等豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,Redis支持各種不同方式的排序。與memcached一樣,為了保證效率,Redis中的數(shù)據(jù)都是緩存在內(nèi)存中的,它會周期性地把更新的數(shù)據(jù)寫入磁盤,或者把修改操作寫入追加的記錄文件;此外,Redis還實現(xiàn)了主從(master-slave)同步。6.1.2安裝Redis訪問Redis官網(wǎng)(/)下載安裝包redis-5.0.5.tar.gz執(zhí)行以下命令將Redis解壓至“/usr/local/”目錄下并重命名:$cd~$sudotar-zxvf./下載/redis-5.0.5.tar.gz-C/usr/local$cd/usr/local$sudomv./redis-5.0.5./redis然后,執(zhí)行如下命令把redis目錄的權(quán)限賦予hadoop用戶:$sudochown-Rhadoop:hadoop./redis接下來,進入“/usr/local/redis”目錄,輸入以下命令編譯和安裝Redis:$sudomake$sudomakeinstall6.1.2安裝Redis至此,Redis已經(jīng)安裝完成,現(xiàn)在可以執(zhí)行如下命令開啟Redis服務(wù)器:$cd/usr/local/redis$./src/redis-server6.1.2安裝Redis然后,再新建一個終端,輸入如下命令啟動Redis客戶端:$cd/usr/local/redis$./src/redis-cli如圖6-2所示,客戶端連上服務(wù)器之后,會顯示“:6379>”的命令提示符信息,表示服務(wù)器的IP地址為,端口為6379。現(xiàn)在可以執(zhí)行簡單的操作,比如,設(shè)置鍵為”hello”,值為”world”,并且取出鍵為”hello”時對應(yīng)的值,圖6-2給出了具體的操作效果。6.1.3Redis實例演示假設(shè)有三個表,即Student、Course和SC,三個表的字段(列)和數(shù)據(jù)如圖6-3所示。6.1.3Redis實例演示Redis數(shù)據(jù)庫是以<key,value>的形式存儲數(shù)據(jù),把三個表的數(shù)據(jù)存入Redis數(shù)據(jù)庫時,key和value的確定方法如下:key=表名:主鍵值:列名value=列值例如,把每個表的第一行記錄保存到Redis數(shù)據(jù)中,需要執(zhí)行的命令和執(zhí)行結(jié)果如圖6-4所示。setSC:95001:1:Grade926.1.3Redis實例演示1.插入數(shù)據(jù)6.1.3Redis實例演示2.修改數(shù)據(jù)6.1.3Redis實例演示3.刪除數(shù)據(jù)6.2MongoDB的安裝和使用6.2.1MongDB簡介6.2.2安裝MongoDB6.2.3使用Shell命令操作MongoDB6.2.4JavaAPI編程實例6.2.1MongDB簡介MongoDB是一個基于分布式文件存儲的文檔數(shù)據(jù)庫,介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富、最像關(guān)系數(shù)據(jù)庫的一種NoSQL數(shù)據(jù)庫。MongoDB支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點是支持的查詢語言非常強大,語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。6.2.2安裝MongoDBMongoDB既可以安裝在Windows系統(tǒng)下使用,也可以安裝在Linux系統(tǒng)下使用,這里采用Linux系統(tǒng)。MongoDB安裝很簡單,無需下載源文件,可以直接用apt-get命令進行安裝。但是,需要說明的是,如果直接使用“sudoapt-getinstallmongodb”命令進行安裝,默認安裝的版本是MongoDB2.6.10。由于目前MongoDB已經(jīng)升級到4.0.16,這里將通過添加軟件源的方式來安裝4.0.16版本。首先,在Linux系統(tǒng)中打開一個終端,執(zhí)行如下命令導(dǎo)入公共秘鑰到包管理器中:$sudoapt-keyadv--keyserverhkp://:80--recv9DA31620334BD75D9DCB49F368818C72E52529D46.2.2安裝MongoDB然后,創(chuàng)建MongoDB的文件列表,命令如下:#對于Ubuntu18.04,使用如下命令:$echo"deb[arch=amd64]/apt/ubuntubionic/mongodb-org/4.0multiverse"|sudotee/etc/apt/sources.list.d/mongodb.list#對于Ubuntu16.04,使用如下命令:$echo"deb[arch=amd64,arm64]/apt/ubuntuxenial/mongodb-org/4.0multiverse"|sudotee/etc/apt/sources.list.d/mongodb.list6.2.2安裝MongoDB執(zhí)行如下命令來更新包管理器:$sudoapt-getupdate最后,執(zhí)行如下命令安裝MongoDB:$sudoaptinstallmongodb-org安裝完成后,在終端輸入以下命令查看MongoDB版本:$mongo-version6.2.2安裝MongoDB如果能夠輸出版本信息(如圖6-8所示),則表明安裝成功。安裝成功以后,啟動MongoDB的命令如下:$sudoservicemongodstart默認設(shè)置下,MongoDB是隨Ubuntu啟動而自動啟動的。可以輸入以下命令查看是否啟動成功:$pgrepmongod-l#注意:-l是英文字母l,不是阿拉伯?dāng)?shù)字16.2.2安裝MongoDB如果能夠出現(xiàn)如圖6-9所示信息,則表明啟動成功:使用MongoDB結(jié)束后,關(guān)閉MongoDB的命令如下:$sudoservicemongodstop6.2.3使用Shell命令操作MongoDB1.進入MongoDBShell模式在Linux系統(tǒng)打開一個終端,輸入如下命令啟動MongoDB:$sudoservicemongodstart再輸入如下命令進入MongoDBShell模式:執(zhí)行該命令后,屏幕截圖如圖6-10所示。6.2.3使用Shell命令操作MongoDB2.常用操作命令6.2.3使用Shell命令操作MongoDB3.簡單操作演示(1)切換到School數(shù)據(jù)庫

命令如下:>useSchool(2)創(chuàng)建集合

創(chuàng)建集合(Collection)的命令如下:6.2.3使用Shell命令操作MongoDB(3)插入數(shù)據(jù)6.2.3使用Shell命令操作MongoDB6.2.3使用Shell命令操作MongoDB運行完以上例子,student已自動創(chuàng)建,這也說明MongoDB不需要預(yù)先定義集合(collection),在第一次插入數(shù)據(jù)后,集合會被自動創(chuàng)建。此時,可以使用“showcollections”命令查詢數(shù)據(jù)中當(dāng)前已經(jīng)存在的集合,如圖6-15所示。6.2.3使用Shell命令操作MongoDB(4)查找數(shù)據(jù)查找數(shù)據(jù)所使用的基本命令格式如下:>db.youCollection.find(criteria,filterDisplay)查詢所有記錄>db.student.find()查詢sname='lisi'的記錄>db.student.find({sname:'lisi'})查詢指定列sname、sage數(shù)據(jù)>db.student.find({},{sname:1,sage:1})6.2.3使用Shell命令操作MongoDBAND條件查詢>db.student.find({sname:'zhangsan',sage:22})OR條件查詢>db.student.find({$or:[{sage:22},{sage:25}]})格式化輸出6.2.3使用Shell命令操作MongoDB(5)修改數(shù)據(jù)修改數(shù)據(jù)的基本命令格式如下:>db.youCollection.update(criteria,objNew,upsert,multi)這里給出一個實例,語句如下:>db.student.update({sname:'lisi'},{$set:{sage:30}},false,true)6.2.3使用Shell命令操作MongoDB(6)刪除數(shù)據(jù)(7)刪除集合4.退出MongoDBShell模式可以輸入如下命令退出MongoDBShell模式:>exit6.2.4JavaAPI編程實例編寫Java程序訪問MongoDB數(shù)據(jù)庫時,首先,需要下載JavaMongoDBDriver驅(qū)動JAR包,JavaMongoDBDriver下載地址如下:/maven2/org/mongodb/mongo-java-driver/3.12.1/mongo-java-driver-3.12.1.jar6.2.4JavaAPI編程實例importjava.util.ArrayList;importjava.util.List;importorg.bson.Document;importcom.mongodb.MongoClient;importcom.mongodb.client.MongoCollection;importcom.mongodb.client.MongoCursor;importcom.mongodb.client.MongoDatabase;importcom.mongodb.client.model.Filters;publicclassTestMongoDB{/***@paramargs*/publicstaticvoidmain(String[]args){//insert();//插入數(shù)據(jù)。執(zhí)行插入時,可將其他三句函數(shù)調(diào)用語句注釋,下同find();//查找數(shù)據(jù)//update();//更新數(shù)據(jù)//delete();//刪除數(shù)據(jù)}6.2.4JavaAPI編程實例/***返回指定數(shù)據(jù)庫中的指定集合*@paramdbname數(shù)據(jù)庫名*@paramcollectionname集合名*@return*///MongoDB無需預(yù)定義數(shù)據(jù)庫和集合,在使用的時候會自動創(chuàng)建publicstaticMongoCollection<Document>getCollection(Stringdbname,Stringcollectionname){//實例化一個mongo客戶端,服務(wù)器地址:localhost(本地),端口號:27017MongoClientmongoClient=newMongoClient("localhost",27017);//實例化一個mongo數(shù)據(jù)庫MongoDatabasemongoDatabase=mongoClient.getDatabase(dbname);//獲取數(shù)據(jù)庫中某個集合MongoCollection<Document>collection=mongoDatabase.getCollection(collectionname);returncollection;}6.2.4JavaAPI編程實例/***插入數(shù)據(jù)*/publicstaticvoidinsert(){try{//連接MongoDB,指定連接數(shù)據(jù)庫名,指定連接表名。MongoCollection<Document>collection=getCollection("School","student");//數(shù)據(jù)庫名:School集合名:student//實例化一個文檔,文檔內(nèi)容為{sname:'Mary',sage:25},如果還有其他字段,可以繼續(xù)追加appendDocumentdoc1=newDocument("sname","Mary").append("sage",25);//實例化一個文檔,文檔內(nèi)容為{sname:'Bob',sage:20}Documentdoc2=newDocument("sname","Bob").append("sage",20);List<Document>documents=newArrayList<Document>();//將doc1、doc2加入到documents列表中documents.add(doc1);documents.add(doc2);//將documents插入集合collection.insertMany(documents);System.out.println("插入成功");}catch(Exceptione){System.err.println(e.getClass().getName()+":"+e.getMessage());}}6.2.4JavaAPI編程實例/***查詢數(shù)據(jù)*/publicstaticvoidfind(){try{MongoCollection<Document>collection=getCollection("School","student");//數(shù)據(jù)庫名:School集合名:student//通過游標遍歷檢索出的文檔集合//MongoCursor<Document>cursor=collection.find(newDocument("sname","Mary")).projection(newDocument("sname",1).append("sage",1).append("_id",0)).iterator();//find查詢條件:sname='Mary'。projection篩選:顯示sname和sage,不顯示_id(_id默認會顯示)//查詢所有數(shù)據(jù)MongoCursor<Document>cursor=collection.find().iterator();while(cursor.hasNext()){System.out.println(cursor.next().toJson());}}catch(Exceptione){System.err.println(e.getClass().getName()+":"+e.getMessage());}}6.2.4JavaAPI編程實例/***更新數(shù)據(jù)*/publicstaticvoidupdate(){try{MongoCollection<Document>collection=getCollection("School","student");//數(shù)據(jù)庫名:School集合名:student//更新文檔,將文檔中sname='Mary'的文檔修改為sage=22collection.updateMany(Filters.eq("sname","Mary"),newDocument("$set",newDocument("sage",22)));System.out.println("更新成功!");}catch(Exceptione){System.err.println(e.getClass().getName()+":"+e.getMessage());}}6.2.4JavaAPI編程實例/***刪除數(shù)據(jù)*/publicstaticvoiddelete(){try{MongoCollection<Document>collection=getCollection("School","student");//數(shù)據(jù)庫名:Sch

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論