MongoDB--基本概念以及体系结构

MongoDB基本概念以及体系结构

文章目录

    • MongoDB基本概念以及体系结构
      • 一:什么是MongoDB
      • 二:MongoDB特性:
      • 三:MongoDB的体系架构
        • 1.存储结构:
        • 2.存储形式:
        • 3.目录结构:
        • 4.数据存储:

一:什么是MongoDB

MongoDB:是一个数据库 ,高性能、无模式、文档性,目前nosql中最热门的数据库,开源产品,基于c++开发。是nosql数据库中功能最丰富,最像关系数据库的。

二:MongoDB特性:

  • 面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;
  • 格式自由,数据格式不固定,生产环境下修改结构都可以不影响程序运行;
  • 强大的查询语句,面向对象的查询语言,基本覆盖sql语言所有能力;
  • 完整的索引支持,支持查询计划;
  • 支持复制和自动故障转移;
  • 支持二进制数据及大型对象(文件)的高效存储;
  • 使用分片集群提升系统扩展性;
  • 使用内存映射存储引擎,把磁盘的IO操作转换成为内存的操作;
  • MongoDB的不足:
  • MongoDB对事物的支持较弱: 高度事务性系统,例如银行、财务等系统不适合。
  • 涉及到复杂 的、高度优化的查询方式:传统的商业智能应用,特定问题的数据分析,多数据实体关联等不适合;
  • 数据结构相对固定,使用关系型数据库更好合理,使用sql进行查询统计更加便利的 时候等不适合;
  • 通过上面的分析知道什么情况下使用MongoDB比较合理。下面来分析一下MongoDB在数据安全,灾备,集群容错上做了哪些努力。

三:MongoDB的体系架构

1.存储结构:

MongoDB--基本概念以及体系结构_第1张图片

一个数据库有多个集合,一个集合有多个文档;

2.存储形式:

MongoDB--基本概念以及体系结构_第2张图片

3.目录结构:

MongoDB--基本概念以及体系结构_第3张图片

数据库服务(mongod)
分片集群部署中,数据和查询的路由服务(mongos)
shell客户端(mongo)
导入导出工具(mongoimport / mongoexport)
备份恢复工具(mongodump / mongorestore)
拉取并重放oplog的工具(mongooplog)
监控工具(mongostat、mongotop、mongosniff)
GridFS的命令行操作工具(mongofiles)
性能测试工具(mongoperf,暂时只能测I/O)
查看bson文件的工具(bsondump)

其中最主要的程序是mongod(数据库服务),mongod在不同的部署方案中(单机部署,副本集部署,分片集群部署),通过不同的配置,可以扮演多种不同的角色:

  • 在单机部署中扮演 数据库服务器(提供所有读写功能)
  • 在副本集部署中,通过配置,可以部署为 primary节点(主服务器,负责写数据,也可以提供查询)、secondary节点(从服务器,它从主节点复制数据,也可以提供查询)、以及arbiter节点(仲裁节点,不保存数据,主要用于参与选举投票)
  • 在分片集群中,除了在每个分片中扮演上述角色外,还扮演着配置服务器的角色(存储有分片集群的所有元数据信息,mongos的数据路由分发等都要依赖于它)

4.数据存储:

MongoDB有三种主要的数据文件:

  1. journal(日志文件):MongoDB只是用来处理在系统出现宕机的时候恢复尚未同步到磁盘上的内存数据。启动MongoDB的时候默认会创建三个为1G的日志文件;
  2. namespace(表名文件):dbname.ns, 用来存储整个数据库的集合以及索引的名字。这个文件不大,默认16M,可以存储24000个集合或者索引名以及那些集合和索引在数据文件中得具体位置。通过这个文件MongoDB可以知道从哪里去开始寻找或插入集合的数据或者索引数据。这个值可以通过参数调整至2G。
  3. data(数据以及检索文件):MongoDB的数据以及索引都存放在一个或者多个MongoDB数据文件里。第一个数据文件会以“数据库名.0”命名,如 my-db.0。这个文件默认大小是64M,在接近用完这个64M之前,MongoDB 会提前生成下一个数据文件如my-db.1。数据文件的大小会2倍递增。第二个数据文件的大小为128M,第三个为256M。一直到了2G以后就会停止,一直按这个2G这个大小增加新的文件(新版本才是)。

你可能感兴趣的:(MongoDB)