部署MongoDB集群

处理多种常见的故障

单节点失效,如何恢复工作

数据库意外被杀死如何进行数据恢复

数据库发生拒绝服务如何排查原因

数据库磁盘快满时如何处理

MongoDB

无数据结构限制:

1. 没有表结构的概念,每条记录可以有完全不同的结构

2. 业务开发方便快捷

3. Sql数据库需要事先定义表结构在使用

{name:”小明”,sex:”man”}

{name:”小红”,address:”shanghai”}

{name:”小兰”,home:[{“山东”},{“江西”}]}

完全的索引支持

1. redis的key-value

2. hbase的单索引,二级索引需要自己实现,写入速度快,但是查询速度慢

3. 方便的冗余与扩展

a) 复制集保证数据安全

b) 分片扩展数据规模

基本操作

连接:mongo 127.0.0.1:27017

clip_image001

查看有多少数据库:show dbs

clip_image002

使用use切换数据库:use Vincent

clip_image003

删除数据库:db.dropDatabase()

clip_image004

clip_image005

在次使用命令:use imooc,

clip_image006

在使用use之前我们不需要对数据库进行额外的创建,mongod会在需要的时候自己创建。在Mongo中我们将一张表称作一个集合。

在mongodb中如何进行写入:db.imooc_collection.insert({x:1}),这个insert中接入参数,格式为json(json是一种很流行的数据结构,是用可嵌套的键值对存储数据)

clip_image007

使用show collections 可以查看我们之前创建的表

clip_image008

查询语句:db.imooc_collection.find(),查询条件可以为空

clip_image009

‘_id’字段是mongodb自己生成的字段,在全局范围内不会重复,在分布式数据库中一定要有一个全局唯一的字段来进行数据处理,我们也可以自己制定_id字段,但是不能重复

clip_image011

使用js语句进行插入数据,

clip_image012

条件查询:查询3以后的2条数据,并按x排序

clip_image013

数据的更新:db.imooc_collection.update({x:1},{x:999})

clip_image014

查询,发现更新成功

clip_image015

插入语句,然后更新z为100的那条数据中的y为99,而x不变

clip_image016

当我们更新不存在的数据时,如果要插入这条数据,设置参数为true,就会插入

clip_image017

更新多条数据时,mongodb只会更新第一条数据,首先插入3条相同的数据

clip_image018

然后执行命令db.imooc_collection.update({c:1},{c:2})

clip_image019

Mongodb这样设计是为了防止不小心的误操作。

如果想更新多条数据,

db.collection.update( criteria, objNew, upsert, multi )

criteria : update的查询条件,类似sql update查询内where后面的

objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

upsert : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

clip_image020

这样就实现了更新多条数据

删除操作:db.imooc_collection.find({c:2})

clip_image021

show tables /show collections 当前数据库的集合

clip_image022

创建索引:在数据量较大时不使用索引,查询较慢

使用命令:db.imooc_collection.getIndexes()查看索引使用情况

clip_image023

创建索引

clip_image024

创建x:1的索引。查询高效

索引的种类与使用

l _id索引是绝大多数集合默认建立的索引

对于每个插入的数据,MongoDB都会自动生成一条唯一的_id字段

l 单键索引

单键索引是最普通的索引,与_id索引不同,单键索引不会自动创建

l 多键索引与单键索引创建形式相同,区别在于字段的值

单键索引:值为一个单一的值,例如字符串,数字或者日期

多键索引:值具有多个记录,例如数组。

l 复合索引

当我们的查询条件不只有一个时,就需要建立复合索引

clip_image026

clip_image027

l 过期索引:是在一段时间后会过期的索引

在索引过期后,相应的数据会被删除

这适合存储一些在一段时间之后会失效的数据,比如用户的东路信息,存储的日志

建立方法:db.collection.ensureIndex({time:1},{expireAfterSeconds:10})

注意:存储在过期索引字段的值必须是指定的时间类型

必须是ISODate或者ISODate数组,不能使用时间戳,否则不能被自动删除

如果指定了ISODate数组,则按照最小的时间进行删除

过期索引不能是复合索引。

删除时间不是精确的。删除过程是由后台程序每60s跑一次,而且删除也需要一些时间,所以存在误差

索引的匹配规则

如何建立合适的索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值