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概念可参考。
来源:oschina
链接:https://my.oschina.net/u/4391872/blog/4443778