Mongo简述

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。

Mongo的概念:

database:数据库

collection:集合(类似于关系数据库中的表)

document:文档(类似于关系数据库中的行记录)

field:域(类似于关系数据库中的字段)

index:索引

primary key:主键(在没有指定的情况下mongo自动将_id作为随机主键)

简单的命令:

show dbs (查看所有的数据库)

use  test  (切换到test数据库,没有的话则创建)

db.col.insert({"name":"宇宙","age":36000000})  (在col集合中插入一个简单的json Document)

db.col.find({"name":"宇宙"})  (在col集合中查询一个name为‘宇宙’的文档)

运维:

mongo的主从机制保证性能稳定,数据安全,任何节点都可以在主节点宕机的情况下进行自动切换,保证正常提供数据功能;

Mongo简述_第1张图片

当一个DB或者集合(Collection)数据量过大时(存储空间超过硬件的设置,甚至超过允许的合理内存时)会导致数据的读取性能下降,影响业务扩展的能力;此时,MongoDB会出现卡顿,甚至查询耗时过长,导致业务系统出现异常,单机的性能达到了瓶颈;

为解决上述问题,mongo推出了多机器部署分片集群策略:

mongo路由--config servers--shard,


Mongo简述_第2张图片

mongos是路由,提供给客户端进行读写数据的封装,并将数据存储的位置进行分配存储;

config-server是路由的具体配置信息,和数据的存储索引

shard是真正的数据存储位置,一般有多个,每个shard有多个chunk(块)组成;

chunk的大小默认是64M,当存储数据超过这个值的时候,会默认记性拆分为两个chunk存储在shard中,以此类推;

Mongo简述_第3张图片

对于同一个集合的数据来说,可能分布在不同的shard中;

分布策略根据key值的划分存储有【范围】和【哈希】两种 :

对于100~1000这种的数据可以使用范围策略;

对于想要数据进行均匀分布的情况可以采用哈希策略;

具体要求可以根据业务功能进行数据策略存储的选择;

你可能感兴趣的:(Mongo简述)