登录 / 注册
IT168技术开发频道
IT168首页 > 技术开发 > 技术开发技术 > 正文

不得不看!用Scala实现MongoDB连接

2016-12-16 16:21    it168网站原创  作者: zyy 编辑: 覃里

  【IT168 技术】文章开始之前,先简单介绍一下Scala,Scala是一门多范式编程语言,一种类似java的编程语言 ,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。可能不久之前,编程语言还可以毫无疑义地归类为“命令式”或者“面向对象”。但Scala却代表了一个新的语言类别,它抹平了这些人为划分的界限,它也确实抓住了很多开发者的眼球,如果你粗略地浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,但仔细研究就会发现,它无缝结合了命令式编程和函数式编程风格。

用Scala实现MongoDB连接

  大数据时代的席卷而来,MongoDB也着实在开发者的世界火了一把。MongoDB已经有了许多编程语言的扩展驱动程序集。在下面的教程中,开发者将会看到使用Scala驱动程序连接到MongoDB的具体方法,包括通过设置SSL提高连接的安全性。

  驱动程序安装

  就像Java连接MySQL数据库需要JDBC一样,Scala连接MongoDB数据库也需要一种中间件,Casbah是MongoDB官方的Scala驱动程序包。MongoDB的Scala驱动程序可以使用以下依赖项添加到项目中:

用Scala实现MongoDB连接

  你也可以从GitHub页面下载MongoDB的Scala驱动程序。不得不提,Scala包括其相关的驱动程序或参考文章在Github上也十分受欢迎,这其中有不少贡献来源于Java开发者。

  MongoDB的Scala驱动程序附带了多个便于连接到MongoDB实例的类。

  接下来,我们按步骤,一步步操作。

  1、连接

  与MongoDB实例的连接可以使用Mongo客户端设置。Mongo Client是一个用来管理MongoDB连接的类。创建连接最简单的方法是使用如下语句:

用Scala实现MongoDB连接

  可以在连接字符串中设置诸如认证,端口号等选项。例如,副本集选项可以设置为/?replicaSet=rs0。有关选项的完整列表,可以戳(https://docs.mongodb.com/manual/reference/connection-string/)。

  另一个方法是使用MongoClientSettings()类,MongoClientSettings()类可用于控制Mongo客户端的行为。先用ClusterSettings类将集群设置添加到Mongoclientsettings类。使用这三个类的连接语句如下:

用Scala实现MongoDB连接

  默认情况下,是从系统的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语句导入:

用Scala实现MongoDB连接

  使用SSL的MongoDB连接语句如下所写:

用Scala实现MongoDB连接

  如果在连接服务器时遇到问题,你可以看看服务器SSL证书上的主机名是否与你构建MongoClient时指定的主机名相同。你可以在SslSettings中使用.invalidHostNameAllowed(true)禁用此设置。

  3、验证

  你可以使用MongoCredential类向MongoClientSettings中添加凭据。MongoCredentials类的典型用法如下:

用Scala实现MongoDB连接

  请注意,当你在集群设置中添加了多个主机时,可以将凭据作为列表添加。例如,你可以为两个主机添加List(credential1,credential2).asJava

  总的来说,在Scala中使用SSL连接MongoDB的完整代码如下:

用Scala实现MongoDB连接

  4、测试

  一切设置完成后,为了确保可以正常运行,必须进行测试。测试时如果遇到任何问题,可以参考(http://mongodb.github.io/mongo-scala-driver/1.0/reference/crud/)。

  结语

  MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。最大的特点是支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。现在已经有很多公司选择了MongoDB,如果项目开展中,需要用到Scala连接MongoDB数据库,不妨试试该教程。

标签: MongoDB
相关文章
  • IT168企业级IT168企业级
  • IT168文库IT168文库

扫码送文库金币

编辑推荐
系统架构师大会
系统架构师大会
点击或扫描关注
IT168企业级微信关注送礼
IT168企业级微信关注送礼
扫描关注
首页 评论 返回顶部