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