MongoDB的部署与基本操作

NoSQL

NoSQL简介

NoSQL(Not Only SQL),即不仅仅是SQL。这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理。 1970年 E.F.Codd’s提出的关系模型的论文 “A relational model of data for large shared data banks”,这使得数据建模和应用程序编程更加简单。
通过应用实践证明,关系模型是非常适合于客户服务器编程,远远超出预期的利益,今天它是结构化数据存储在网络和商务应用的主导技术。
NoSQL 是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

为什么使用NoSQL

今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。

NoSQL的优势

  • 高可扩展性
  • 分布式计算
  • 没有复杂的关系
  • 低成本
  • 架构灵活
  • 半结构化数据

NoSQL代表

  • MongoDB
  • Redis
  • Memcache

MongoDB

什么是MongoDB

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富的,最像关系数据库的。他支持的数据结构分厂松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB特点

他的特点是高性能、易部署、易使用,存储数据非常方便。
主要功能特性有:

  • 面向集合存储,易存储对象类型的数据
  • 模式自由
  • 支持动态查询
  • 支持完全索引,包含内部对象
  • 支持查询
  • 支持复制和故障恢复
  • 使用高效的二进制数据存储,包括大型对象(如视频等)
  • 自动处理碎片,以支持云计算层次的扩展性
  • 支持Golang、Ruby、python、Java、C++、PHP、C#等多种语言
  • 文件存储格式为BSON(一种json的扩展)
  • 可通过网络访问

MongoDB适用场景

  • 网站数据
  • 缓存
  • 大尺寸、低价值的数据
  • 高伸缩性的场景
    1. 业务结构经常发生变化的场景(表结构经常变,需求总在变得情况)
    2. 架构变化频繁的场景,数据或者业务量膨胀式增长的情况
  • 用于对象及json数据的存储

部署MongoDB

  • 关闭防火墙以及selinux
systemctl stop firewalld
setenforce 0
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
  • 关闭大页内存
vim /etc/rc.local
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
  • 创建所需的用户和组
groupadd -g 800 mongod
useradd -u 800 -g mongod mongod
passwd mongod
  • 创建目录
mkdir -p /mongod/bin
mkdir -p /mongod/conf
mkdir -p /mongod/log
mkdir -p /mongod/data
tar -zxvf mongodb-linux-x86_64-rhel70-4.2.8.tgz
mv mongodb-linux-x86_64-rhel70-4.2.8/bin/* /mongodb/bin
  • 将MongoDB命令加入环境变量
su - mongod
vim .bash_profile
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/mongod/bin
  • 启动MongoDB
su - mongdod
mongod --dbpath=/mongod/data --logpath=/mongod/log/mongodb.log --port=27017 --logappend --fork
  • 启动参数介绍
参数 介绍
–dbpath 数据存放路径
–logpath 日志存放路径
–port 服务端口号
–logappend 日志以追加记录(默认是覆盖形式)
–fork 以后台守护进程形式运行
  • 以配置文件形式启动
vim /mongod/conf/mongo.conf
systemLog:
    destination: file
    path: "/mongod/log/mongod.log"
    logAppend: true
processManagement:
    fork: true
storage:
    journal:
       enabled: true
    dbPath: "/mongod/data"
net:
    port: 27017
  • 启动
mongod -f /mongod/conf/mongo.conf
  • 关闭MongoDB
mongod -f /mongod/conf/mongod.conf --shutdown

MongoDB基本操作

  • 登录到MongoDB
mongo
或
mongo --port 端口号
  • 查看数据库、表
show dbs
show databases
show collections (show tables)
  • 查看帮助
> help
	db.help()                    help on db methods
	db.mycoll.help()             help on collection methods
	sh.help()                    sharding helpers
	rs.help()                    replica set helpers
	help admin                   administrative help
	help connect                 connecting to a db help
	help keys                    key shortcuts
	help misc                    misc things to know
	help mr                      mapreduce

	show dbs                     show database names
	show collections             show collections in current database
	show users                   show users in current database
	show profile                 show most recent system.profile entries with time >= 1ms
	show logs                    show the accessible logger names
	show log [name]              prints out the last segment of log in memory, 'global' is default
	use <db_name>                set current database
	db.foo.find()                list objects in collection foo
	db.foo.find( { a : 1 } )     list objects in foo where a == 1
	it                           result of the last line evaluated; use to further iterate
	DBQuery.shellBatchSize = x   set default number of items to display on shell
	exit                         quit the mongo shell
  • 查看版本
db.version()
  • 查看当前所在数据库
db
  • 查看当前所在数据库状态
db.status()
  • 查看当前数据库的连接机器地址
db.getMongo()
  • 创建一个集合
> use test
switched to db test
> db
test
> db.createCollection('a')
{ "ok" : 1 }
> show collections 
a
  • 直接向一个不存在的集合中插入数据
> db.collections.insert({name:"mongo"})
WriteResult({ "nInserted" : 1 })
> show collections
a
collections
  • 获取集合中数据
> db.collections.find()
{ "_id" : ObjectId("5f0810f700d18b4f07619bd2"), "name" : "mongo" }
  • 批量插入数据
> for (i = 0;i <=1000;i++){db.log.insert({"uid":i,"name":"mongodb","age":"6","date":new Date()});}
WriteResult({ "nInserted" : 1 })
> db.log.find()
{ "_id" : ObjectId("5f081bb500d18b4f07619bd3"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.858Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd4"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.889Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd5"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.890Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd6"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.891Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd7"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.891Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd8"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.892Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd9"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.892Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bda"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.892Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bdb"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.892Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bdc"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.893Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bdd"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.893Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bde"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.893Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bdf"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.894Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be0"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.894Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be1"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.894Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be2"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.895Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be3"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.895Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be4"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.896Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be5"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.896Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be6"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.897Z") }
Type "it" for more
  • 统计集合中数据量
> db.log.count()
3003
  • 移除集合中数据
> db.log.count()
3003
> db.log.remove({uid:0})
WriteResult({ "nRemoved" : 2 })
> db.log.count()
3001

不指定uid为删除全部

  • 去重
> db.log.distinct("name")
[ "mongodb" ]
  • 删除集合
> db.a.drop()
true
> show tables
collections
  • 修改集合名称
> show tables
collections
> db.collections.renameCollection("mongo")
{ "ok" : 1 }
> show tables
mongo
  • 查看第一条记录
> db.log.findOne()
{
	"_id" : ObjectId("5f081bb500d18b4f07619bd3"),
	"uid" : 1,
	"name" : "mongodb",
	"age" : "6",
	"date" : ISODate("2020-07-10T07:41:41.858Z")
}
  • 设置每页显示多少条数据,默认20条
> DBQuery.shellBatchSize=50
50
> db.log.find()
{ "_id" : ObjectId("5f081bb500d18b4f07619bd3"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.858Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd4"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.889Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd5"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.890Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd6"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.891Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd7"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.891Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd8"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.892Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bd9"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.892Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bda"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.892Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bdb"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.892Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bdc"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.893Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bdd"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.893Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bde"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.893Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bdf"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.894Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be0"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.894Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be1"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.894Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be2"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.895Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be3"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.895Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be4"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.896Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be5"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.896Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be6"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.897Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be7"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.897Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be8"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.898Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619be9"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.898Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bea"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.899Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619beb"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.899Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bec"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.899Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bed"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.900Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bee"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.900Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bef"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.900Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf0"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.901Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf1"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.901Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf2"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.901Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf3"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.902Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf4"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.902Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf5"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.902Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf6"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.903Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf7"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.903Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf8"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.904Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bf9"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.905Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bfa"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.905Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bfb"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.906Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bfc"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.906Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bfd"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.907Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bfe"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.907Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619bff"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.907Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619c00"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.908Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619c01"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.908Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619c02"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.909Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619c03"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.909Z") }
{ "_id" : ObjectId("5f081bb500d18b4f07619c04"), "uid" : 1, "name" : "mongodb", "age" : "6", "date" : ISODate("2020-07-10T07:41:41.910Z") }
Type "it" for more
  • 查看集合中数据的原始大小
> db.log.dataSize()
234078
  • 查看集合中索引数据的原始大小
> db.log.totalIndexSize()
86016
  • 查看集合中索引和数据压缩存储之后的大小
> db.log.totalSize()
204800
  • 查看占用磁盘空间大小
> db.log.storageSize()
118784
  • 以json形式查看
> db.log.find().pretty()
{
	"_id" : ObjectId("5f081bb500d18b4f07619bd3"),
	"uid" : 1,
	"name" : "mongodb",
	"age" : "6",
	"date" : ISODate("2020-07-10T07:41:41.858Z")
}
{
	"_id" : ObjectId("5f081bb500d18b4f07619bd4"),
	"uid" : 1,
	"name" : "mongodb",
	"age" : "6",
	"date" : ISODate("2020-07-10T07:41:41.889Z")

猜你喜欢

转载自blog.csdn.net/qq_33235529/article/details/107227242