文章开始之前,先简单介绍一下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客户端设置。MongoClient是一个用来管理MongoDB连接的类。创建连接最简单的方法是使用如下语句:
可以在连接字符串中设置诸如认证,端口号等选项。例如,副本集选项可以设置为/?replicaSet=rs0。有关选项的完整列表,可以戳(
另一个方法是使用MongoClientSettings()类,MongoClientSettings()类可用于控制Mongo客户端的行为。先用ClusterSettings类将集群设置添加到Mongoclientsettings类。使用这三个类的连接语句如下:
默认情况下,是从系统的JDK中使用AsynchronousSocketChannel连接,如果你使用的SSL或JDK版本早于1.7,你还需要在SSL部分使用Netty,Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端(具体说明请戳
要验证MongoDB服务器提供的证书,需要将适当的CA证书添加到系统的信任存储。
你还需要为驱动程序添加属性,以便使用Netty库而不是使用AsynchronousSocketChannel。你需要下载NettyJAR并将它们添加到当前项目中,因为Scala依赖项不会自动下载它。下载完成后,还需要通过以下import语句导入:
使用SSL的MongoDB连接语句如下所写:
如果在连接服务器时遇到问题,你可以看看服务器SSL证书上的主机名是否与你构建MongoClient时指定的主机名相同。你可以在SslSettings中使用.invalidHostNameAllowed(true)禁用此设置。
3验证你可以使用MongoCredential类向MongoClientSettings中添加凭据。MongoCredentials类的典型用法如下:
请注意,当你在集群设置中添加了多个主机时,可以将凭据作为列表添加。例如,你可以为两个主机添加List(credential1,credential2).asJava。
总的来说,在Scala中使用SSL连接MongoDB的完整代码如下:
4测试一切设置完成后,为了确保可以正常运行,必须进行测试。测试时如果遇到任何问题,可以参考(
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。最大的特点是支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。现在已经有很多公司选择了MongoDB,如果项目开展中,需要用到Scala连接MongoDB数据库,不妨试试该教程。
白癜风早期能治愈吗北京白癜风医院网站