1.1、MongoDB 简介
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。具有以下特点:
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实际广泛使用的案例:
实际项目当中如何选择?
应用特征 | YES / NO |
---|---|
应用不需要事务及复杂 join 支持 | 必须 Yes |
新应用,需求会变,数据模型无法确定,想快速迭代开发 | ? |
应用需要2000-3000以上的读写QPS(更高也可以) | ? |
应用需要TB甚至 PB 级别数据存储 | ? |
应用发展迅速,需要能快速水平扩展 | ? |
应用要求存储的数据不丢失 | ? |
应用需要99.999%高可用 | ? |
应用需要大量的地理位置查询、文本查询 | ? |
如果项目符合其中1个特征就可以考虑使用, 如果2个以上特征, 就可以完全确定采用MongoDB。
下载地址
MongoDB服务端:
MongoDB Compass 可视化管理工具:
单节点安装比较简单, 网上资料教程也比较多,就不在此赘述。
需要在本机安装MongoDB集群, MongoDB的事务功能,只有在集群才能正常使用。
按照上面步骤, 确保单节点安装完成
集群安装目录与配置
D:\TestCode\Mongo_ReplicSet
创建三个文件夹
在每个目录下面创建一个data目录, 配置文件并将mongod.exe执行程序拷贝过来
三个目录依次创建, 并修改对应conf配置中的端口信息:
port=27011
bind_ip=127.0.0.1
dbpath=./data
replSet=mongoReplic
启动三个节点
D:\TestCode\Mongo_ReplicSet\27011\mongod.exe -f 27011.conf
创建集群
通过客户端连入主节点
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。
连接配置
单节点配置主机地址和端口名称,集群需要配置主节点的地址、端口和Replica Set Name集群名称。
管理界面
连接配置成功之后, 可以看到主机相关信息。