1. MongoDB介绍

1.1、MongoDB 简介

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。具有以下特点:

  • 面向集合文档型存储,易于存储对象类型的数据, 以键-值对形式存储,支持数组,支持文档之间嵌套。
  • 模式自由,无需知道存储数据的任何结构定义,支持动态查询。
  • 支持完全索引, 支持B+索引,全文索引,地理空间索引。
  • 支持复制和故障恢复, 可以通过配置复制集的方式实现节点间复制以及故障转移, 基于复制集的读写分离以分散IO,提高性能
  • 支持分片, 可以基于片键实现分片,即将数据集分散在不同的节点,支持分片自动均衡以及手动均衡。
  • 易伸缩,支持水平的数据库集群,可动态添加额外的服务器。

1.2、Mongodb中基本的概念

Mongodb中基本的概念是文档、集合、数据库:

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

1.3、 MongoDB数据类型

MongoDB中常用的几种数据类型:

数据类型 描述
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array 用于将数组或列表或多个值存储为一个键。
Timestamp 时间戳。记录文档修改或添加的具体时间。
Object 用于内嵌文档。
Null 用于创建空值。
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID 对象 ID。用于创建文档的 ID。
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型。用于存储正则表达式。

1.4、 MongoDB使用场景

MongoDB实际广泛使用的案例:

  • 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
  • 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
  • 社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
  • 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
  • 视频直播,使用 MongoDB 存储用户信息、礼物信息等

实际项目当中如何选择?

应用特征 YES / NO
应用不需要事务及复杂 join 支持 必须 Yes
新应用,需求会变,数据模型无法确定,想快速迭代开发
应用需要2000-3000以上的读写QPS(更高也可以)
应用需要TB甚至 PB 级别数据存储 ?
应用发展迅速,需要能快速水平扩展 ?
应用要求存储的数据不丢失 ?
应用需要99.999%高可用 ?
应用需要大量的地理位置查询、文本查询

如果项目符合其中1个特征就可以考虑使用, 如果2个以上特征, 就可以完全确定采用MongoDB。

2. MongoDB 单节点安装(Windows)

  1. 下载地址

    MongoDB服务端:

    MongoDB服务端

    MongoDB Compass 可视化管理工具:

    MongoDB Compass

  2. 单节点安装比较简单, 网上资料教程也比较多,就不在此赘述。

3. 集群安装(Windows)

需要在本机安装MongoDB集群, MongoDB的事务功能,只有在集群才能正常使用。

  1. 按照上面步骤, 确保单节点安装完成

  2. 集群安装目录与配置

    D:\TestCode\Mongo_ReplicSet

    创建三个文件夹

    在每个目录下面创建一个data目录, 配置文件并将mongod.exe执行程序拷贝过来

    三个目录依次创建, 并修改对应conf配置中的端口信息:

    port=27011
    bind_ip=127.0.0.1
    dbpath=./data
    replSet=mongoReplic
    
  3. 启动三个节点

    D:\TestCode\Mongo_ReplicSet\27011\mongod.exe -f 27011.conf
    
  4. 创建集群

    • 通过客户端连入主节点

      C:\Program Files\MongoDB\Server\4.2\bin\mongo.exe --port 27001

    • 执行初始化命令

      rs.initiate()

    • 添加另外两个节点

      rs.add(“127.0.0.1:27012”)

      rs.add(“127.0.0.1:27013”)

    • 查看集群状态

      rs.status()

      正常可以看到所有节点信息:

       "members" : [{"_id" : 0,"name" : "127.0.0.1:27011","ip" : "127.0.0.1","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 586,"optime" : {"ts" : Timestamp(1568107734, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2019-09-10T09:28:54Z"),"syncingTo" : "","syncSourceHost" : "","syncSourceId" : -1,"infoMessage" : "","electionTime" : Timestamp(1568107282, 2),"electionDate" : ISODate("2019-09-10T09:21:22Z"),"configVersion" : 3,"self" : true,"lastHeartbeatMessage" : ""},{"_id" : 1,"name" : "127.0.0.1:27012","ip" : "127.0.0.1","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 351,"optime" : {"ts" : Timestamp(1568107734, 1),"t" : NumberLong(1)},"optimeDurable" : {"ts" : Timestamp(1568107734, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2019-09-10T09:28:54Z"),"optimeDurableDate" : ISODate("2019-09-10T09:28:54Z"),"lastHeartbeat" : ISODate("2019-09-10T09:29:00.356Z"),"lastHeartbeatRecv" : ISODate("2019-09-10T09:29:01.375Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncingTo" : "127.0.0.1:27013","syncSourceHost" : "127.0.0.1:27013","syncSourceId" : 2,"infoMessage" : "","configVersion" : 3},{"_id" : 2,"name" : "127.0.0.1:27013","ip" : "127.0.0.1","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 347,"optime" : {"ts" : Timestamp(1568107734, 1),"t" : NumberLong(1)},"optimeDurable" : {"ts" : Timestamp(1568107734, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2019-09-10T09:28:54Z"),"optimeDurableDate" : ISODate("2019-09-10T09:28:54Z"),"lastHeartbeat" : ISODate("2019-09-10T09:29:00.356Z"),"lastHeartbeatRecv" : ISODate("2019-09-10T09:29:00.879Z"),"pingMs" : NumberLong(0),"lastHeartbeatMessage" : "","syncingTo" : "127.0.0.1:27011","syncSourceHost" : "127.0.0.1:27011","syncSourceId" : 0,"infoMessage" : "","configVersion" : 3}],
      

3.3 可视化管理工具(Compass)

安装MongoDB官方提供的可视化管理工具Compass,能够更为直观的管理与操作MongoDB。

  • 下载
    MongoDB Compass 下载

  • 连接配置

    单节点配置主机地址和端口名称,集群需要配置主节点的地址、端口和Replica Set Name集群名称。

  • 管理界面

    连接配置成功之后, 可以看到主机相关信息。

MongoDB的集群安装搭建配置相关推荐

  1. 基于zookeeper(集群)+LevelDB的ActiveMq高可用集群安装、配置、测试

    Linux 环境 zookeeper集群安装.配置.测试https://blog.csdn.net/weixin_40816738/article/details/100576259 MQ集群部署规划 ...

  2. Hadoop集群安装及其配置(三台虚拟机)

    Hadoop集群安装及其配置(三台虚拟机) 利安装配置前准备--安装虚拟机 利用cat查看配置文件 修改主机名称 配置IP映射 配置网卡设备的mac地址 Xshell的安装与配置 ssh的配置 JDK ...

  3. Hadoop集群安装与配置

    转载自Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 本教程讲述如何配置 Hadoop 集群,默认读者已经掌握了 Hadoop 的单机伪分布式配置,否则请先查看Had ...

  4. MySQL Galera 集群安装与配置详解

    galera 集群概述与搭建 Galera replication原理 从客户端看整体的流程 其中对应的角色分为2个:协调者和参与者 协调者: 1. 接收客户端请求 2. 广播请求到其他参与者(包括自 ...

  5. KafKa集群安装、配置

    一.事前准备 1.kafka官网:http://kafka.apache.org/downloads. 2.选择使用版本下载. 3.kafka集群环境准备:(linux) 192.168.145.12 ...

  6. hadoop2.8配置_Hadoop 2.8集群安装及配置记录

    第一部分:环境配置(含操作系统.防火墙.SSH.JAVA安装等) Hadoop 2.8集群安装模拟环境为: 主机:Hostname:Hadoop-host,IP:10.10.11.225 节点1:Ho ...

  7. zookeeper集群安装和配置解读 - 雨中散步撒哈拉

    一.集群安装 0.环境准备 1.下载好的zk进行解压 2.创建数据和日志目录 3.修改配置 4.分发到集群节点 5.分别添加id 6.添加环境变量 二.集群常用命令 2.2.1 启动客户端 2.2.2 ...

  8. FastDFS分布式文件系统集群安装与配置

    原文链接:http://blog.csdn.net/xyang81/article/details/52928230 FastDFS集群规划 跟踪服务器负载均衡节点1:192.168.1.206 df ...

  9. 【ZooKeeper】集群安装与配置

    单机模式 下载zookeeper的安装包之后, 解压到合适目录. 进入zookeeper目录下的conf子目录, 创建zoo.cfg: tickTime=2000 dataDir=/Users/app ...

最新文章

  1. PHP内核介绍及扩展开发指南—基础知识
  2. Matlab画图小结(一)
  3. Serverless 时代前端避坑指南
  4. 一步步编写操作系统 09 写个mbr
  5. 优先队列c++ STL用法
  6. 国内Maven仓库--阿里云Aliyun仓库地址及设置
  7. [SHELL进阶] (转)最牛B的 Linux Shell 命令 (三)
  8. 安卓中如何修改创建的模拟器的存储位置
  9. 阿里云云计算 42 CDN中的常用名词
  10. 计算机网络实验教程金伟祖,基于PDCA循环的计算机网络实验教学改革
  11. 华为实习面经(技术面+主管面)
  12. 在 isilon 中使用 ldap 登录 ftp 服务
  13. 2021美赛C题解题记录(内含完整代码)
  14. ruoyi-ui下载依赖报错npm ERR! cb() never called!
  15. 春天正是补气的好时刻,喝枸杞+黄芪就对了
  16. java入门到秃路线导航,元芳你怎么看?【教学视频+博客+书籍整理】
  17. 《论语》原文及其全文翻译 学而篇2
  18. oracle怎样创建scott用户,oracle 手工创建Scott用户
  19. Unity预计算全局光照的学习(速度优化,LightProbe,LPPV)
  20. python 地理坐标与投影坐标的转换

热门文章

  1. 能让人少奋斗十年的语录!
  2. Spring框架技术总结(一),如何才能更容易拿到大厂Offer
  3. Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?
  4. 苹果cms用宝塔定时采集+添加百度推送教程
  5. 自制廉价难度低性能较好的锂电充电器(转)
  6. 如何获取维普免费账号--应对大家工作后在校外下载维普万方等全文
  7. 数字签名与数字信封流程
  8. 软件工程部署图_部署图| 软件工程
  9. STM32—OLED显示屏
  10. ofo共享单车和摩拜单车背后的物联网技术分析