美文网首页我爱编程
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-个人学习总结

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