MongoDB的应用

目录

一、MongoDb是什么

1.特点

 2.功能

3.基本的指令

二、MongoDB的使用场景

1.适用场合

2.常见应用场景

三、可能遇到的问题

1.MongoDB是否支持事务?

2.MongoDB大数据迁移怎么做?

3.MongoDB的水平扩展是什么原理?

4.MongoDB出现负载过高的情况如何处理?


一、MongoDb是什么

MongoDB是高性能、开源、无模式的文档型数据库。它是一个非结构化介于关系和非关系数据库之间的产品,使用C++开发。

1.特点

1)面向集合

数据被分组存储在数据集中,被称为一个集合。每个集合在数据库中都有唯一一个标识名,并且可以包含无数个文档,其概念类似与关系型数据中的表即table。

2)模式自由

意味着存储在数据库中的数据,我们不需要知道它的任何结构定义即schema。

3)文档型

意思是我们存储的是键值对,键是字符串,值可以是数据集合类型中的任意类型,包括数组和文档。

 逻辑体系架构:
MongoDB的应用_第1张图片

 

 2.功能

(1)面向集合的存储:适合存储对象和JSON形式的数据。

(2)动态查询:支持丰富的查询表达式,查询指令采用JSON形式的标记,可以轻松查询内嵌的对象及数组。

(3)完整的索引支持:包括内嵌的文档及数组。查询优化器能分析查询表达式生成高效的查询计划。

(4)查询监控:提供了一系列监视工具用以分析数据库操作性能。

(5)复制及自动故障转移:支持主-从模式及服务器之间的相互复制,目标是提供冗余及自动故障转移。

(6)高效的传统存储方式:支持二进制数据及大型对象。
(7)自动分片及支持云级别的伸缩性:自动分片支持水平的数据库集群,可以动态添加机器。

3.基本的指令

基本的操作命令和mysql极为类似

#显示当前所有的数据库
show dbs

show databases

#进入到指定的数据库中
use 数据库名
#当前处于哪个数据库
db
#查看数据库里面的所有集合
show collections

 数据库的增删改查

#想数据库中插入文档
db.<集合名>.insert(doc) 示例:db.user.insert({name:"zs",age:"23"})
#查找集合中的内容
db.<集合名>.find() 示例:db.user.find() find可以接收一个对象作为条件参数
#修改集合中的内容
db.<集合名>.update(查询条件,新对象) 如果需要修改指定的属性需要使用“修改操作符”
$set 可以用来修改文档指定属性 示例:db.user.update({name:"zs"},$set{name:"ls"})

$unset 删除文档中指定属性
#删除文档
db.<集合名>.remove()

二、MongoDB的使用场景

1.适用场合

(1)网站数据:非常适合实时的插入,更新和查询,并具备实时数据存储所需的复制及高度伸缩性

(2)缓存:性能很高可用于持久化缓存层。

(3)大尺寸低价值的数据:替代一些文件存储。

(4)高伸缩性的场景:集群分布计算支持。

(5)用于对象和JSON数据的存储:BSON格式非常适合文档化格式的数据存储及查询。

2.常见应用场景

(1)存储日志:在物联网或者运维监控场景下,存储较为复杂的设备快照或者日志数据,可以做成相关监控报表。

(2)存储状态变更信息:在电商或者物流场景下,以内嵌数组的形式记录订单信息、状态信息,一次性就可以把订单的所有变更查询出来。

(3)存储实时更新数据:在游戏和直播场景下,以内嵌文档的形式存储用户信息、点赞礼物等,方便更新查询。

三、可能遇到的问题

1.MongoDB是否支持事务?

MongoDB只支持行级事务,或者说只保证单行操作的原子性。

2.MongoDB大数据迁移怎么做?

一般来说mongodump来迁移即可。集群迁移的话,可以直接在目标服务器上搭建从节点,全部搭建完之后把从节点升级为主节点,再把老机器剔除去集群。

3.MongoDB的水平扩展是什么原理?

MongoDB的水平扩展之后主要依赖于有config组件负责管理数据元位置,mongo的路由会从config获取数据所在或者应该所在的节点位置,从而去对应的数据节点读取(路由本身也会缓存)。

MongoDB的应用_第2张图片

 

4.MongoDB出现负载过高的情况如何处理?

可能的情况有连接数突然变高,查询突然变多,查询没有索引,大表索引等。

简单点看db.currentop或者看mongotop和mongostat,currentop是看当前正在执行的是什么任务,数量有多少,也可以去showlog里面看是否有记录,然后mogotop和mongostat是用了查看和平时比有什么异常。

你可能感兴趣的:(mongodb,数据库,nosql)