《如何用Scala實(shí)現(xiàn)MongoDB連接》要點(diǎn):
本文介紹了如何用Scala實(shí)現(xiàn)MongoDB連接,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
相關(guān)主題:非關(guān)系型數(shù)據(jù)庫(kù)
《如何用Scala實(shí)現(xiàn)MongoDB連接》是否對(duì)您有啟發(fā),歡迎查看更多與《如何用Scala實(shí)現(xiàn)MongoDB連接》相關(guān)教程,學(xué)精學(xué)透。維易PHP學(xué)院為您提供精彩教程。
文章開(kāi)始之前,先簡(jiǎn)單介紹一下Scala,Scala是一門多范式編程語(yǔ)言,一種類似java的編程語(yǔ)言 ,設(shè)計(jì)初衷是實(shí)現(xiàn)可伸縮的語(yǔ)言、并集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性.可能不久之前,編程語(yǔ)言還可以毫無(wú)疑義地歸類為“命令式”或者“面向?qū)ο蟆?但Scala卻代表了一個(gè)新的語(yǔ)言類別,它抹平了這些人為劃分的界限,它也確實(shí)抓住了很多開(kāi)發(fā)者的眼球,如果你粗略地瀏覽Scala的網(wǎng)站,你會(huì)覺(jué)得Scala是一種純粹的面向?qū)ο缶幊陶Z(yǔ)言,但仔細(xì)研究就會(huì)發(fā)現(xiàn),它無(wú)縫結(jié)合了命令式編程和函數(shù)式編程風(fēng)格.
大數(shù)據(jù)時(shí)代的席卷而來(lái),MongoDB也著實(shí)在開(kāi)發(fā)者的世界火了一把.MongoDB已經(jīng)有了許多編程語(yǔ)言的擴(kuò)展驅(qū)動(dòng)程序集.在下面的教程中,開(kāi)發(fā)者將會(huì)看到使用Scala驅(qū)動(dòng)程序連接到MongoDB的具體方法,包括通過(guò)設(shè)置SSL提高連接的平安性.
驅(qū)動(dòng)程序安裝
就像Java連接MySQL數(shù)據(jù)庫(kù)必要JDBC一樣,Scala連接MongoDB數(shù)據(jù)庫(kù)也必要一種中間件,Casbah是MongoDB官方的Scala驅(qū)動(dòng)程序包.MongoDB的Scala驅(qū)動(dòng)程序可以使用以下依賴項(xiàng)添加到項(xiàng)目中:
你也可以從GitHub頁(yè)面下載MongoDB的Scala驅(qū)動(dòng)程序.不得不提,Scala包含其相關(guān)的驅(qū)動(dòng)程序或參考文章在Github上也十分受歡迎,這其中有不少貢獻(xiàn)來(lái)源于Java開(kāi)發(fā)者.
MongoDB的Scala驅(qū)動(dòng)程序附帶了多個(gè)便于連接到MongoDB實(shí)例的類.
接下來(lái),我們按步驟,一步步操作.
1、連接
與MongoDB實(shí)例的連接可以使用Mongo客戶端設(shè)置.Mongo Client是一個(gè)用來(lái)管理MongoDB連接的類.創(chuàng)建連接最簡(jiǎn)單的辦法是使用如下語(yǔ)句:
可以在連接字符串中設(shè)置諸如認(rèn)證,端口號(hào)等選項(xiàng).例如,副本集選項(xiàng)可以設(shè)置為/?replicaSet=rs0.有關(guān)選項(xiàng)的完整列表,可以戳(https://docs.mongodb.com/manual/reference/connection-string/).
另一個(gè)辦法是使用MongoClientSettings()類,MongoClientSettings()類可用于控制Mongo客戶端的行為.先用ClusterSettings類將集群設(shè)置添加到Mongoclientsettings類.使用這三個(gè)類的連接語(yǔ)句如下:
默認(rèn)情況下,是從系統(tǒng)的JDK中使用AsynchronousSocketChannel連接,如果你使用的SSL或JDK版本早于1.7,你還必要在SSL部分使用Netty,Netty是一個(gè)異步事件驅(qū)動(dòng)的網(wǎng)絡(luò)應(yīng)用程序框架,用于快速開(kāi)發(fā)可維護(hù)的高性能協(xié)議服務(wù)器和客戶端(具體說(shuō)明請(qǐng)戳http://netty.io/).
2、SSL
你可以使用SSL提高與MongoDB連接的平安性.如果你在互聯(lián)網(wǎng)上部署生產(chǎn)數(shù)據(jù)庫(kù)集群,SSL絕對(duì)是你應(yīng)該考慮的.使用SSL加密的數(shù)據(jù),可以保證只有兩個(gè)端點(diǎn)可以訪問(wèn)未加密的數(shù)據(jù),避免數(shù)據(jù)的竊聽(tīng)和篡改.
要驗(yàn)證MongoDB服務(wù)器提供的證書,必要將適當(dāng)?shù)腃A證書添加到系統(tǒng)的信任存儲(chǔ).
你還必要為驅(qū)動(dòng)程序添加屬性,以便使用Netty庫(kù)而不是使用AsynchronousSocketChannel.你必要下載Netty JAR并將它們添加到當(dāng)前項(xiàng)目中,因?yàn)镾cala依賴項(xiàng)不會(huì)自動(dòng)下載它.下載完成后,還必要通過(guò)以下import語(yǔ)句導(dǎo)入:
使用SSL的MongoDB連接語(yǔ)句如下所寫:
如果在連接服務(wù)器時(shí)遇到問(wèn)題,你可以看看服務(wù)器SSL證書上的主機(jī)名是否與你構(gòu)建MongoClient時(shí)指定的主機(jī)名相同.你可以在SslSettings中使用.invalidHostNameAllowed(true)禁用此設(shè)置.
3、驗(yàn)證
你可以使用MongoCredential類向MongoClientSettings中添加憑據(jù).MongoCredentials類的典型用法如下:
請(qǐng)注意,當(dāng)你在集群設(shè)置中添加了多個(gè)主機(jī)時(shí),可以將憑據(jù)作為列表添加.例如,你可以為兩個(gè)主機(jī)添加List(credential1,credential2).asJava.
總的來(lái)說(shuō),在Scala中使用SSL連接MongoDB的完整代碼如下:
4、測(cè)試
一切設(shè)置完成后,為了確??梢哉_\(yùn)行,必需進(jìn)行測(cè)試.測(cè)試時(shí)如果遇到任何問(wèn)題,可以參考(http://mongodb.github.io/mongo-scala-driver/1.0/reference/crud/).
結(jié)語(yǔ)
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的.最大的特點(diǎn)是支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引.現(xiàn)在已經(jīng)有很多公司選擇了MongoDB,如果項(xiàng)目開(kāi)展中,必要用到Scala連接MongoDB數(shù)據(jù)庫(kù),不妨試試該教程.
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/10167.html