上一节我们讲述了数据库容器化之持久保存数据,本节将讲诉MongoDB容器化实践,并且接下来将逐步讲解其他数据库(MySql、Redis等等)的容器化实践,然后将讲诉一些分布式架构的项目实践。由于实践需要花费大量的时间,而目年前业务繁忙,只能加班来进行一些实践并编写,如果编写比较慢,请多多海涵。另外,考虑到文本内容表达有限,2月份将会推出视频教程,并且提供脚本、代码和笔记。

MongoDB容器化

MongoDB是一个免费的、开源的、跨平台分布式面向文档存储的数据库,由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

官网:https://www.mongodb.com/

适用场景

  • 网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

  • 缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。

  • 高伸缩性高可用的场景。MongoDB使用分片水平缩放,并且可以运行在多个服务器上,平衡负载或复制数据,以便在硬件出现故障时保持系统正常运行。

  • 海量数据。

不适用的场景

  • 要求高度事务性的系统。

  • 传统的商业智能应用。

  • 复杂的跨文档(表)级联查询。

镜像说明

官方镜像地址:

https://hub.docker.com/_/mongo

主要环境变量说明

  • MONGO_INITDB_ROOT_YSERNAME:管理员账号,例如:root

  • MONGO_INITDB_ROOT_PASSWORD:管理员密码,例如:12345

运行MongoDB容器镜像

Powershell:

docker run  -p 27017:27017 --name myMongodb `

-d mongo

使用主机目录保存数据库文件

PowerShell:

docker run  -p 27017:27017 --name myMongodb `

-v d:/temp/data/mongodb:/data/db `

-d mongo

执行之后如下图所示:

注意:Windows和OS X上的Docker默认设置使用VirtualBox VM来托管Docker守护程序。但是,VirtualBox用于在主机系统和Docker容器之间共享文件夹的机制与MongoDB使用的内存映射文件不兼容(请参阅vbox bug,docs.mongodb.org和相关的jira.mongodb.org错误)这意味着无法运行映射到主机的数据目录的MongoDB容器。

管理Mongodb

使用nosqlbooster管理MongoDB

nosqlbooster以shell为中心的跨平台GUI的MongoDB管理工具,它提供全面的服务器监控工具,流畅的查询构建器,SQL查询支持,ES2017语法支持和真正的智能感知体验,是非常值得推荐的一个MongoDB管理工具。

官方网址:https://nosqlbooster.com

非常值得推荐的是,NoSQLBooster支持我们使用SQL查询语法来执行查询(MongoDB本身不支持,是由NoSQLBooster进行了验证和转换处理)。

例如以下MongoDB查询语法:

db.employees.aggregate([{

$group: { _id:   "$department", total: { $sum: "$salary" }}

}])

可以使用我们熟悉的SQL查询语法来查询:

mb.runSQLQuery(`

SELECT department, SUM(salary) AS total FROM employees GROUP BY department

`)

这里附上一个MySql和MongoDB的语法对比示例:

同时,NoSQLBooster还提供丰富的性能监视和分析工具,如Visual Explain Plan:

使用MongoDB Compass

MongoDB Compass是MongoDB的可视化工具,适用于Linux,Mac或Windows,能够非常直观的查看和管理数据,并且可以轻松识别可能导致性能问题的瓶颈或慢查询,这意味着我们可以更快地解决问题。

Docker最全教程——从理论到实战(一)

Docker最全教程——从理论到实战(二)

Docker最全教程——从理论到实战(三)

Docker最全教程——从理论到实战(四)

Docker最全教程——从理论到实战(五)

Docker最全教程——从理论到实战(六)

Docker最全教程——从理论到实战(七)

Docker最全教程——从理论到实战(八)

Docker最全教程——从理论到实战(九)

Docker最全教程之使用TencentHub来完成CI(十)

Docker最全教程——数据库容器化(十一)

Docker最全教程——数据库容器化之持久保存数据(十二)

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

Docker最全教程——MongoDB容器化(十三)相关推荐

  1. Docker最全教程——Redis容器化以及排行榜实战(十三)

    Docker最全教程--Redis容器化以及排行榜实战(十三) 原文:Docker最全教程--Redis容器化以及排行榜实战(十三) 前言 容器教程的路还很长,笔者尽量根据实践来不断地完善.由于在编写 ...

  2. Docker最全教程——数据库容器化之持久保存数据(十一)

    Docker最全教程--数据库容器化之持久保存数据(十一) 原文:Docker最全教程--数据库容器化之持久保存数据(十一) 上一节我们讲述了SQL Server容器化实践(注意,SQL Server ...

  3. Docker最全教程——数据库容器化之持久保存数据(十二)

    上一节我们讲述了SQL Server容器化实践(注意,SQL Server现在也支持跨平台),本节将讲述如何持久保存数据,并且接下来将逐步讲解其他数据库(MySql.Redis.Mongodb等等)的 ...

  4. docker 虚拟机搭建mongodb一主一从一复制_Docker最全教程——MongoDB容器化(十三)...

    上一节我们讲述了数据库容器化之持久保存数据,本节将讲诉MongoDB容器化实践,并且接下来将逐步讲解其他数据库(MySql.Redis等等)的容器化实践,然后将讲诉一些分布式架构的项目实践.由于实践需 ...

  5. Docker最全教程——数据库容器化(十一)

    终于按时完成第二篇.本来准备着手讲一些实践,但是数据库部分没有讲到,部分实践会存在一些问题,于是就有了此篇以及后续--数据库容器化.本篇将从SQL Server容器化实践开始,并逐步讲解其他数据库的容 ...

  6. Docker最全教程之使用 Visual Studio Code玩转Docker(二十一)

    VS Code是一个年轻的编辑器,但是确实是非常犀利.通过本篇,老司机带你使用VS Code玩转Docker--相信阅读本篇之后,无论是初学者还是老手,都可以非常方便的玩转Docker了!所谓是&qu ...

  7. Docker最全教程之使用.NET Core推送钉钉消息(二十)

    前言 上一篇我们通过实战分享了使用Go推送钉钉消息,由于技痒,笔者现在也编写了一个.NET Core的Demo,作为简单的对照和说明. 最后,由于精力有限,笔者希望有兴趣的朋友可以分享下使用CoreR ...

  8. Docker最全教程之使用TeamCity来完成内部CI、CD流程(十七)

    本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置.教程中也分享了一个简单的CI.CD流程,仅作探讨.不过由于篇幅有限,完整的DevOps,我们后续独立探讨. 为了降 ...

  9. Docker最全教程之树莓派和Docker(十六)

    前言 树莓派(Raspberry Pi)是一台卡片电脑(只有信用卡大小),我们可以使用树莓派做很多事情,比如智能家居的中控.航空器.BT下载器.挖矿机.智能机器人.小型服务器(花生壳+网站)等等. 目 ...

最新文章

  1. 【面向工业界】推荐算法工程师培养计划
  2. node.js入门 - 2.创建一个简单聊天室
  3. python第三方库有哪些-我常用的几个第三方 Python 库
  4. Spring Data Pivotal Gemfire教程
  5. Linux core dumps 的生成
  6. 樊登读书分享ppt_最后一波 | 24份樊登亲手撰写PPT免费送
  7. 电脑连手机热点DNS服务器无响应,电脑连接手机热点无法上网解决方法有哪些
  8. 「 OptiTrack」搭建动作视觉运动捕捉系统教程
  9. 【10天企业定制课】2018秋PS软件photoshop/CC应用计划学习视频-孙伟-专题视频课程...
  10. 学习笔记——利用串口通信控制LED指示灯开关
  11. EF Core 批量写入数据使用整理_EF Core批量插入数据(一)
  12. 克罗内克积(Kronecker product)与笛卡尔乘积(Cartesian product)
  13. 排查内存orJVM内存飙高
  14. Win10 配置Java JDK 16 环境变量
  15. 大数据——把Kafka中的数据传输到HBase中
  16. 多多自走棋改动_多多自走棋:几个隐藏更新,体验服公告真没提,有一项熟悉又隐蔽...
  17. 解决VirtualBox CentOS8无法调整分辨率的问题
  18. 计算机二级Python嵩天老师Mooc学习笔记:天天向上的力量
  19. 基于cnn的图像二分类算法(一)
  20. 2008521美赛E题

热门文章

  1. VS2015不能修改安装路径问题
  2. 反射调用 java bean的set和get方法
  3. linux(centos) NET模式网络配置
  4. 李洪强经典面试题146-网络
  5. 【1】淘宝sdk装修入门引言
  6. 打造自己博客(wordpress)的wap手机版本
  7. 一起谈.NET技术,发布NGuestBook(一个基于.NET平台的分层架构留言本小系统)
  8. 嵌入式linux学习步骤(三)
  9. 借用虚拟机在真机安装 ubuntu, 亦可安装至移动硬盘
  10. Windows 10 2022 年更新来了!