首页 > 数据库技术 > 详细

Mongodb简单介绍

时间:2019-03-06 13:22:54      阅读:191      评论:0      收藏:0      [点我收藏+]

Mongodb

MongoDB 是一个基于分布式文件存储的数据库。由C++ 语言编写。旨在为WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

关系型数据库:原子性、一致性、独立性、持久性。

分布式计算:可靠性(容错)、可扩展性、资源共享、灵活性、更快的速度、开放系统、更高的性能。

 

CAP定理:对于一个分布式计算系统来说,不可能同时满足以下三点:

  • 一致性(Consistency) (所有节点在同一时间具有相同的数据)
  • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
  • 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

因此,根据CAP 原理将NoSQL 数据库分成了满足CA 原则、满足CP 原则和满足AP 原则三 大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
  • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

数据库分类:

1、列存储:hbase、cassandra、hypertable

2、文档存储:mongodb、couchdb

3、键值对存储:redis、mencachedb、berkeleydb

4、图存储:neo4j、flockdb

5、对象存储:db4o、versant

6、Xml数据库:basex

 

数据库启动:mongodb --config=/opt/mongodb-3.4.0/mongo.conf

数据库关闭:ps -ef | grep mongo.conf | grep -v grep | awk ‘{print $2}’| xargs kill -9

连接数据库:mongo  -port  28018

URL连接格式:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

连接replica set 三台服务器, 写入操作应用在主服务器 并且分布查询到从服务器。mongodb://host1,host2,host3/?slaveOk=true

show dbs;  查询所有数据库

use dbname;   使用数据库,若不存在,则创建

db;  显示当前使用的数据库

db.dbname.insert({“name”:”zhangsan”});   在dbname中插入数据,若数据库不存在,则会创建

db.dropDatabase()     删除正在使用的数据库

db.createCollection(name,option).   创建集合

db.collectionname.drop() 删除集合

use dbname; show collections;db.setname.drop()  删除集合

use dbname;show tables;db.setname.drop().  删除数据库dbname中的集合setname

db.collectionname.insert(document).  在集合中插入文档

db.collectionname.find(). 查询集合中已经插入的文档

db.collectionname.updata(). 更新文档

db.collectionname.remove({‘title’:’yes’}) 可删除,但是不会真正释放空间,需要继续执行db.repairDatabase()来回收磁盘空间

db.collection.deleteMany({…}).   删除集合下的满足…的文档

查询文档:

db.col.find({“by”:”zhangsan”,”title”:”mongo”}).pretty()  查询by为zhangsan,并且title为mongo的数据

db.col.find({$or:[{“by”:”zhangsan”},{”title”:”mongo”}]}).pretty()  查询by为zhangsan,或者title为mongo的数据

条件操作符:

$gt 大于

$lt 小于

$gte 大于等于

$lte 小于等于

db.col.find({likes:{$gte:100}}). 查找likes大于等于100的数据

db.col.find({likes:{$gte:100,$lt:200}})  查找likes大于等于100且小于200的数据

$type 数据的类型,如double为1,string为2

db.col.find({“title”:{$type:2}}). 查找title类型为string的数据

db.col.find({“title”:{$type:2}}).limit(3). 查找title类型为string的数据且只显示3条

db.col.find({“title”:{$type:2}}).limit(1).skip(1)查找title类型为string的数据且显示第二条

db.col.find({“title”:{$type:2}}).sort({“likes”:-1}).  1:升序排列,-1:降序排列

创建索引:

db.col.createIndex({“title”:1,”likes”:-1})  1为升序索引,-1为降序索引

db.col.getIndexes().   查看索引

db.col.totalIndexSize().  查看索引大小

db.col.dropIndexes()   删除所有索引 

db.col.dropIndex(“索引名称”)  删除指定索引

 

 

mongodb主从复制:

一主一从,一主多从。主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。

 

主节点配置:

dbpath=/opt/mongodb-3.4.0/mongo.conf

logpath=/opt/mongodb-3.4.0/log.log

port=27017

bind_ip=127.0.0.1

master=true

从节点配置:

dbpath=/opt/mongodb-3.4.0/mongo.conf

logpath=/opt/mongodb-3.4.0/log.log

port=28018

bind_ip=127.0.0.1

slave=true

source=127.0.0.1:27017

分别启动两个mongodb数据库实例,在主库上做些操作,观看从库状态,若提示slaveok=false,则执行rs.slaveOk(),再查询。

查看主节点信息:db.printReplicationInfo();

查看从节点信息:db.printSlave ReplicationInfo();

 

Mongodb-replica set副本集:自带故障转移功能的主从复制

在启动参数中加入replset,然后在任意一台中rs.initiate()设置成员。rs.status()查看状态。

rs.add(…)添加节点。

rs.remove(…)移除节点

 

 

Mongodb-sharding切片:

Shard:用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担

Config server:mongod实例,存储了整个ClusterMetadata,其中包括chunk信息。

Mongos:前端路由router,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用

1、设置sharding副本集rs0

nohup mongod --port 27031 --dbpath=/data/db4 --logpath=/data/log/rs1-2.log --logappend --fork--shardsvr --replSet=rs1

rs.initiate(…)

 

 

2、设置sharding副本集rs1

3、创建config副本集conf

nohup mongod --port 27100 --dbpath=/data/conf1 --logpath=/data/log/conf-1.log --logappend --fork --configsvr--replSet=conf &

rs.initiate(…)

 

 

4、创建route

nohup mongos--port 40000 --configdbconf/localhost:27100,localhost:27101 --fork --logpath=/data/log/route.log --logappend &

设置分片

mongo localhost:40000> use admin

> db.runCommand({ addshard: ‘rs0/localhost:27020,localhost:27021‘})

> db.runCommand({ addshard: ‘rs1/localhost:27030,localhost:27031‘})

> db.runCommand({ enablesharding: ‘test‘})

> db.runCommand({ shardcollection: ‘test.user‘, key: {name: 1}})

 

Mongodb备份恢复:

mongodump  -h dbhost [-d dbname] [-o backpath] 备份

mongorestore -h<hostname><:port> -d dbname <path>

 

mongodb监控:

mongostat

mongotop

 

Mongodb简单介绍

原文:https://www.cnblogs.com/Christine-ting/p/10482381.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!