1.MongoDB安装


MongoDB的版本命名规范如:x.y.z;

y为奇数时表示当前版本为开发版,如:1.5.2、4.1.13;

y为偶数时表示当前版本为稳定版,如:1.6.3、4.0.10;

z是修正版本号,数字越大越好。

2.MongoDB启动

  • 1.命令方式启动 : mongod --dbpath=..\data\db
    创建db存放的文件夹 mongodb-win32-x86_64-2008plus-ssl-4.0.12\data\db

mongodb 部署在k8s中_数据库

打开 data\db文件夹 生成数据库文件

mongodb 部署在k8s中_mongodb_02

mongoDB的默认端口是27017,如果我们想改变默认的启动端口,可以通过--port来指定端口。 mongod --dbpath=..\data\db --port 27018

为了方便我们每次启动,可以将安装目录的bin目录设置到环境变量的path中, bin 目录下是一些常用命令,比如 mongod 启动服务用的, mongo 客户端连接服务用的。

  • 2.配置文件方式启动服务
    新建存放配置文件的文件夹 conf\mongod.conf
    配置mongod.conf文件

storage:
   dbPath: D:\mongodb-win32-x86_64-2008plus-ssl-4.0.12\data\db

mongodb 部署在k8s中_nosql_03

启动命令:
mongod -f ../conf/mongod.conf
mongod --config ../conf/mongod.conf 

mongodb 部署在k8s中_mongodb_04

连接MongoDB

重新打开一个doc 之前那个不能关闭

命令连接:


mongo mongo --host=127.0.0.1 --port=27017


mongodb 部署在k8s中_nosql_05

linux下的安装启动和连接

(1)先到官网下载压缩包 mongod-linux-x86_64-4.0.10.tgz 。

(2)解压mongodb到当前目录:

tar -xvf mongodb-linux-x86_64-4.0.10.tgz

(3)移动解压后的文件夹到指定的目录中:

mv mongodb-linux-x86_64-4.0.10 /usr/local/mongodb

(4)新建目录 存储数据和日志:

#数据存储目录
mkdir -p /mongodb/single/data/db
#日志存储目录
mkdir -p /mongodb/single/log

(5)新建并修改配置文件

vi /mongodb/single/mongod.conf

systemLog:
#MongoDB发送所有日志输出的目标指定为文件
# #The path of the log file to which mongod or mongos should send all diagnostic logging information
    destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
    path: "/mongodb/single/log/mongod.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
    logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
##The directory where the mongod instance stores its data.Default Value is "/data/db".
    dbPath: "/mongodb/single/data/db"
    journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
      enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
    fork: true
net:
#服务实例绑定的IP,默认是localhost
    bindIp: localhost,192.168.0.155
#bindIp
#绑定的端口,默认是27017
    port: 27016

关闭防火墙或开启端口白名单

#查看防火墙状态 systemctl status firewalld

#临时关闭防火墙 systemctl stop firewalld

#开机禁止启动防火墙 systemctl disable firewalld

(6)启动MongoDB服务

[root@bobohost single]# /usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 90384
child process started successfully, parent exiting

查看服务是否启动了:

ps -ef |grep mongod
[root@localhost single]# /usr/local/mongodb/bin/mongod -f /mongodb/single/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 156494
child process started successfully, parent exiting

(8)停止关闭服务 停止服务的方式有两种:快速关闭和标准关闭,下面依次说明: (一)快速关闭方法(快速,简单,数据可能会出错) 目标:通过系统的kill命令直接杀死进程: 杀完要检查一下,避免有的没有杀掉。

#通过进程编号关闭节点
kill -2 145313

mongodb 部署在k8s中_mongodb 部署在k8s中_06

如果一旦是因为数据损坏,则需要进行如下操作

1)删除lock文件:

rm -f /mongodb/single/data/db/*.lock

 2)修复数据:

/usr/local/mongdb/bin/mongod --repair --dbpath=/mongodb/single/data/db

(二)标准的关闭方法

通过mongo客户端中的shutdownServer命令来关闭服务:

//客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。
mongo --port 27017
//#切换到admin库
use admin
//关闭服务
db.shutdownServer()

2.体系结构

MySQL和MongoDB对比

mongodb 部署在k8s中_数据_07

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

数据记录行/文档

column

field

数据字段/域

index

index

索引

table joins

表连接,MongoDB不支持

嵌入文档

MongoDB通过嵌入式文档来替代多表连接

primary key

key primary

主键,MongoDB自动将_id字段设置为主键

数据模型

MongoDB的最小存储单位就是文档(document)对象。文档(document)对象对应于关系型数据库的行。数据在MongoDB中以
BSON(Binary-JSON)文档的格式存储在磁盘上。
BSON(Binary Serialized Document Format)是一种类json的一种二进制形式的存储格式,简称Binary JSON。BSON和JSON一样,支持
内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
BSON采用了类似于 C 语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的三个特点,可
以有效描述非结构化数据和结构化数据。这种格式的优点是灵活性高,但它的缺点是空间利用率不是很理想。
Bson中,除了基本的JSON类型:string,integer,boolean,double,null,array和object,mongo还使用了特殊的数据类型。这些类型包括
date,object id,binary data,regular expression 和code。每一个驱动都以特定语言的方式实现了这些类型,查看你的驱动的文档来获取详
细信息。
BSON数据类型参考列表: 

数据类型

描述

举例

字符串

UTF-8字符串都可表示为字符串类型的数据

{"x" : "foobar"}

对象id

对象id是文档的12字节的唯一 ID

{"X" :ObjectId() }

布尔值

真或者假:true或者false

{"x":true}+

数组

值的集合或者列表可以表示成数组

{"x" : ["a", "b", "c"]}

32位整数

类型不可用。JavaScript仅支持64位浮点数,所以32位整数会被自动转换。

shell是不支持该类型的,shell中默认会转换成64位浮点数

64位整数

不支持这个类型。shell会使用一个特殊的内嵌文档来显示64位 整数

shell是不支持该类型的,shell中默认会转换成64 位浮点数

64位浮点数

shell中的数字就是这一种类型

{"x":3.14159,"y":3}

null

表示空值或者未定义的对象

{"x":null}

undefined

文档中也可以使用未定义类型

{"x":undefined}

符号

shell不支持,shell会将数据库中的符号类型的数据自动转换成 字符串

正则表达式

文档中可以包含正则表达式,采用JavaScript的正则表达式语法

{"x" : /foobar/i}

代码

文档中还可以包含JavaScript代码

{"x" : function() { /* …… */ }}

二进制数据

二进制数据可以由任意字节的串组成,不过shell中无法使用

最大值/最 小值

BSON包括一个特殊类型,表示可能的最大值。shell中没有这个 类型。

shell默认使用64位浮点型数值。{“x”:3.14}或{“x”:3}。对于整型值,可以使用NumberInt(4字节符号整数)或NumberLong(8字节符 号整数),{“x”:NumberInt(“3”)}{“x”:NumberLong(“3”)}

MongoDB的特点 

MongoDB主要有如下特点:
(1)高性能:
MongoDB提供高性能的数据持久性。特别是,
对嵌入式数据模型的支持减少了数据库系统上的I/O活动。
索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键。(文本索引解决搜索的需求、TTL索引解决历史数据自动过期的需求、地
理位置索引可用于构建各种 O2O 应用)
mmapv1、wiredtiger、mongorocks(rocksdb)、in-memory 等多引擎支持满足各种场景需求。
Gridfs解决文件存储的需求。
(2)高可用性:
MongoDB的复制工具称为副本集(replica set),它可提供自动故障转移和数据冗余。
(3)高扩展性:
MongoDB提供了水平可扩展性作为其核心功能的一部分。
分片将数据分布在一组集群的机器上。(海量数据存储,服务能力水平扩展)
从3.4开始,MongoDB支持基于片键创建数据区域。在一个平衡的集群中,MongoDB将一个区域所覆盖的读写只定向到该区域内的那些
片。
(4)丰富的查询支持:
MongoDB支持丰富的查询语言,支持读和写操作(CRUD),比如数据聚合、文本搜索和地理空间查询等。
(5)其他特点:如无模式(动态模式)、灵活的文档模型、

3.MongoDB常用命令

数据库:articledb

专栏文章评论

comment

字段名称

字段含义

字段类型

备注

_id

ID

ObjectId或String

Mongo的主键的字段

articleid

文章ID

String

content

评论内容

String

userid

评论人ID

String

nickname

评论人昵称

String

createdatetime

评论的日期时间

Date

likenum

点赞数

Int32

replynum

回复数

Int32

state

状态

String

0:不可见;1:可见;

parentid

上级ID

String

如果为0表示文章的顶级评论

选择和创建数据库:

创建语法:

use 数据库名称  #use 跟数据库名称 如果存在则切换到数据库 ,如果不存在则创建数据库

查看有权限查看的所有的数据库命令

show dbs
show databases

查看当前正在使用的数据库:

db

MongoDB 中默认的数据库为 test,如果你没有选择数据库,集合将存放在 test 数据库中

数据库名可以是满足以下条件的任意UTF-8字符串。

  • 不能是空字符串("")。
  • 不得含有' '(空格)、.、$、/、\和\0 (空字符)。
  • 应全部小写。
  • 最多64字节。

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

  • admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特 定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
  • local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
  • config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

 

mongodb 部署在k8s中_数据库_08

MongoDB分为两块,一块为内存,一块为磁盘,创建的数据库会存放在内存中,当添加一条数据后会存在磁盘中

删除数据

主要用来删除已经持久化的数据库 , 语法:

db.dropDatabase()

mongodb 部署在k8s中_mongodb_09

集合显示创建

mongodb 部署在k8s中_数据_10