MongoDB 部署
MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及 各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB的数据模式可以随着应用程序的发 展而灵活地更新。与此同时,它也为开发人员 提供了传统数据库的功能:二级索引,完整的查询系统以及严格 一致性等等。 MongoDB能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用MongoDB来 创建新的应用,提高与客户之间的工作效率,加快产品上市时间,以及降低企业成本。
MongoDB是专为可扩展性,高性能和高可用性而设计的数据库。它可以从单服务器部署扩展到大型、复杂的多 数据中心架构。利用内存计算的优势,MongoDB能够提供高性能的数据读写操作。 MongoDB的本地复制和自 动故障转移功能使您的应用程序具有企业级的可靠性和操作灵活性。 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数 据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能丰富,像关系数 据库的。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON 对象。 字段值可以包含其他文档,数组及文档数组。
主要特点
MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。 你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。 你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。 如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点 上这就是所谓的分片。 Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。 Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。 Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函 数进行处理。 Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执 行MapReduce操作。 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。 MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函 数的定义存储在服务端,下次直接调用即可。 MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 MongoDB安装简单。
具体可参考官方文档 关于mongodb的功能特性 一、部署MongoDB
#下载并解包
[root@mongodb ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.3.tgz
[root@mongodb ~]# tar zxf mongodb-linux-x86_64-rhel70-4.2.3.tgz
[root@mongodb ~]# mv mongodb-linux-x86_64-rhel70-4.2.3/ /usr/local/mongo
#添加环境变量
[root@mongodb ~]# echo 'export PATH=/usr/local/mongo/bin/:${PATH}' >> /etc/profile
[root@mongodb ~]# source /etc/profile
#定义配置文件
[root@mongodb ~]# mkdir -p /data/mongodb/27017
#注意,mongodb.conf这个文件是自己创建的
[root@mongodb ~]# cat /data/mongodb/27017/mongodb.conf # 主配置文件内容如下
systemLog: # 日志相关
destination: file
logAppend: true # 日志写入模式为追加
path: /data/mongodb/27017/mongodb.log # 定义日志文件
storage: # 定义存储相关
dbPath: /data/mongodb/27017/ # 定义数据存储路径
journal:
enabled: true
processManagement: # 进程管理相关,fork表示预派生
fork: true
net:
port: 27017 # 监听端口
bindIp: 0.0.0.0 # 监听地址
# 启动mongodb
# 创建系统用户并更改属主
[root@mongodb ~]# useradd mongodb -s /sbin/nologin
[root@mongodb ~]# chown -R mongodb:mongodb /usr/local/mongo/ /data/mongodb/
# 使用普通用户启动
[root@mongodb ~]# su -s /bin/bash -c "mongod -f /data/mongodb/27017/mongodb.conf" mongodb
about to fork child process, waiting until server is ready for connections.
forked process: 2326
child process started successfully, parent exiting
# 确定端口在监听
[root@mongodb ~]# ss -anput | grep 27017
tcp LISTEN 0 128 *:27017 *:* users:(("mongod",pid=2326,fd=11))
登录到mongodb
[root@mongodb ~]# mongo --host 192.168.171.151 --port 27017
如果系统没有优化过相关配置,那么在第一次登录时大多会报以下warning事项(如果不是使用普通用户启动,还会多报一个用户相关的warning):
现在开始解决这些warning。 禁止内存巨大页
[root@mongodb ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
[root@mongodb ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
# 写入以下文件并添加执行权限,以防止重启后失效
[root@mongodb ~]# tail -2 /etc/rc.d/rc.local # # 写入下面两行配置
echo 'never' >/sys/kernel/mm/transparent_hugepage/enabled
echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag
[root@mongodb ~]# chmod +x /etc/rc.d/rc.local
WARNING: Access control is not enabled for the database
[root@mongodb ~]# mongo # 登录到mongodb,默认为本机的27017端口
# 创建用户
> use admin
switched to db admin
> db.createUser(
... {
... user:"myUserAdmin",
... pwd:"123.com",
... roles:[{role:"userAdminAnyDatabase",db:"admin"}]
... }
... )
Successfully added user: {
> db.shutdownServer() # 关闭数据库
# 启动mongodb的选项中增加“--auth”选项。开启认证模式
[root@mongodb ~]# su -s /bin/bash -c "mongod --auth -f /data/mongodb/27017/mongodb.conf" mongodb
[root@mongodb ~]# mongo
MongoDB shell version v4.2.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("6d7e4bbc-1efa-40cb-98c9-8e01136ea98e") }
MongoDB server version: 4.2.3
> show databases # 在认证之前不会查看到什么信息
> use admin # 必须进入admin库进行认证,否则会认证失败
switched to db admin
> db.auth('myUserAdmin','123.com') # 使用刚才新建的用户进行认证
1
> show databases # 即可查看到库信息
admin 0.000GB
config 0.000GB
local 0.000GB
mongodb基础指令 查看所有数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
切换数据库
> use admin
显示所有表
> show collections
显示数据库状态信息
> db.stats()
显示集合表状态信息
> db.numbers.stats()
停止数据库
> db.shutdownServer()
获取数据库操作命令
> db.help
获取表操作命令
> db.foo.help
mongodb概念可参考。
- 让priority_queue支持小根堆的几种方法
- 一招解决4道leetcode hard题,动态规划在字符串匹配问题中的应用
- 细数Python中的数据类型以及他们的方法
- 洛谷 P3807 【模板】卢卡斯定理
- 数据城堡参赛代码实战篇(六)---使用sklearn进行数据标准化及参数寻优
- 震惊!Vector两行代码求逆序对,六行代码过普通平衡树
- 数据城堡参赛代码实战篇(五)---使用sklearn解决分类问题
- 洛谷P1894 [USACO4.2]完美的牛栏The Perfect Stall
- [编程经验]Python生成器、迭代器与yield语句小结
- TensorFlow从0到1 - 12 - TensorFlow构建3层NN玩转MNIST
- 数据城堡参赛代码实战篇(四)---使用pandas合并数据表
- HDU 2586 How far away ?
- HDU 3078 Network
- 数据城堡参赛代码实战篇(三)---我们来探究一个深奥的问题!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法