美文网首页我爱编程
mongodb-个人学习总结

mongodb-个人学习总结

作者: x1wan | 来源:发表于2016-11-28 19:09 被阅读58次

mongodb是一个开源的分布式文档数据库,介于关系型和非关系型数据库之间,支持的数据结构非常松散,是类似json和bson格式,支持比较复杂的数据格式,支持复杂的查询,支持对数据建立索引。

1、网络资源

官网:http://www.mongodb.org/

源码:https://github.com/mongodb/mongo

wiki:https://github.com/mongodb/mongo/wiki

2、组件和工具

bin/mongod - The database process.

bin/mongos - Sharding controller.

bin/mongo  - The database shell (uses interactive javascript).

bsondump-display BSON files in a human-readable format

mongoimport-Convert data from JSON, TSV or CSV and insert them into a collection

mongoexport-Write an existing collection to CSV or JSON format

mongodump/mongorestore-Dump MongoDB backups to disk in .BSON format, or restore them to a live database

mongostat-Monitor live MongoDB servers, replica sets, or sharded clusters

mongofiles-Read, write, delete, or update files in GridFS

mongooplog-Replay oplog entries between MongoDB servers

mongotop-Monitor read/write activity on a mongo server

3、基本概念

1)数据库

一个mongodb中可以建立多个数据库。

MongoDB的默认数据库为"db",该数据库存储在data目录中。

MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。

2)文档

文档是一个键值(key-value)对(即BSON)。MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

3)集合

集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。

集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。

4、基本框架

参考:http://www.iteye.com/news/24836

5、分片

为何需要水平分片

1) 减少单机请求数,降低单机负载,提高总负载

2) 减少单机的存储空间,提高总存空间。

下图一目了然:

mongodb sharding 服务器架构

1) mongos 路由进程, 应用程序接入mongos再查询到具体分片。

2) config server 路由表服务。 每一台都具有全部chunk的路由信息。

3) shard为数据存储分片。 每一片都可以是复制集(replica set)。

6、主从机制

1)选master

通过心跳来同步节点间信息并触发选举。

MongoDB选举和复制协议基于Raft协议,正确性得以保证

在Raft基础上,扩展了选举和复制协议,方便使用和运维

选举规则:

选举超时包括一定随机性,减少平票的可能性

同一任期(Term),只为一个候选人投票

一个任期内,得到大多数投票,则成为主结点

只有当候选人的操作日志至少跟投票人一样新时,才投赞同票

2)主从同步数据

(1)intial sync 全量同步

同步集合数据(耗时)

拉取oplog并重放

建立索引(耗时)

拉取oplog并重放

(2)replication 增量同步

不断拉取master上的oplog并重放

相关文章

  • mongodb-个人学习总结

    mongodb是一个开源的分布式文档数据库,介于关系型和非关系型数据库之间,支持的数据结构非常松散,是类似json...

  • MongoDB-基础使用(二)

    前置文章:MongoDB-基础使用(一)[https://www.jianshu.com/p/7bca353127...

  • MongoDB-基础使用(三)

    前置文章:MongoDB-基础使用(一)[https://www.jianshu.com/p/7bca353127...

  • 2018-07-01 周报总结

    周报总结 一.工作日常总结 时间:6-25—6.30 ,及个人遇到的小问题,个人学习总结,个人学习计划 一....

  • 个人学习总结

    一 混沌,感觉什么都很重要,什么都想学,什么都学的会。事实上跟看报纸杂志没什么两样,看了就忘,看越多忘越多,看越多...

  • Git 学习个人总结

    Git 是一个开源的分布式版本控制系统 (Version Control Systems)。是世界上最先进的版本控...

  • Mongodb-主从

    docker inspect --format '{{ .NetworkSettings.IPAddress }}...

  • MongoDB-序

    NOSql :not only sql 显示开发中一直存在一个问题: 数据表 — JDBC读取 — POJO(V...

  • MongoDB-更新

    提供了两类函数:save()、update()update函数语法要求比较麻烦:db.集合.update(更新条件...

  • MongoDB-查询

    任何数据库中查询都是最麻烦的,在MongoDB中对于查询的支持非常到位,有关系运算,逻辑运算,数组运算等等首先对于...

网友评论

    本文标题:mongodb-个人学习总结

    本文链接:https://www.haomeiwen.com/subject/crvopttx.html