《如何用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数据库,不妨试试该教程.