MongoDB相关知识

1
本文参考自:https://github.com/0voice/interview_internal_reference/tree/master/11.MongoDB%E7%AF%87

一、MongoDB的基本概念?

1.1 什么是MongoDB?

MongoDB是一个文档数据库,提供好的性能,领先的非关系型数据库

1.2 MongoDB是由哪种语言写的?

MongoDB用 C++ 编写

1.3 MongoDB有哪些优势?

面向文档的存储:以JSON格式的文档保存数据

  • 任何属性都可以建立索引
  • 复制以及高可扩展性
  • 自动分片
  • 丰富的查询功能
  • 快速的即时更新

1.4 什么是 mongod?

mongod是处理MongoDB系统的主要进程。它处理数据请求,管理数据存储,和执行后台管理操作。当我们运行mongod命令意味着正在启动MongoDB进程,并且在后台运行。

1.5 为什么用MongoDB?

  • 架构简单
  • 没有复杂的连接
  • 深度查询能力,MongoDB支持动态查询。
  • 容易调试
  • 容易扩展
  • 不需要转化/映射应用对象到数据库对象
  • 使用内部内存作为存储工作区,以便更快的存取数据。

1.6 MongoDB支持的数据类型?

String;Integer;Boolean;Double;Min/Max keys;Array;Timestamp;Object;Null;Symbol;Date;Object ID;Binary Data;Code;Regular expression

1565796177040

二、MongoDB复制(副本集)

1
2
3
4
5
MongoDB复制是将数据同步在多个服务器的过程。

复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

复制还允许您从硬件故障和服务中断中恢复数据。

2.1 MongoDB复制有什么好处?

  • 保障数据的安全性
  • 数据高可用性 (24*7)
  • 灾难恢复
  • 无需停机维护(如备份,重建索引,压缩)
  • 分布式读取数据

2.2 MongoDB复制原理?

mongodb的复制至少需要两个节点。其中一个主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据;

mongodb各个节点常见的搭配方式为:一主一从、一主多从;

主节点记录在其上所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证节点的数据与节点一致;

客户端从主节点读取数据,在客户端写入数据到主节点时,主节点与从节点进行数据交互保障数据的一致性

2.3 副本集的特征?

  • N 个节点的集群
  • 任何节点可作为主节点
  • 所有写入操作都在主节点上
  • 自动故障转移
  • 自动恢复

三、MongoDB分片

1
2
3
在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求。

当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。

3.1 为什么使用分片?

  • 复制所有的写入操作到主节点
  • 延迟的敏感数据会在主节点查询
  • 单个副本集限制在12个节点
  • 当请求量巨大时会出现内存不足。
  • 本地磁盘不足
  • 垂直扩展价格昂贵

四、MongoDB备份(mongodump)与恢复(mongorestore)

4.1 数据的备份

mongodump -h dbhost -d dbname -o dbdirectory

  • -h:

    MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

  • -d:

    需要备份的数据库实例,例如:test

  • -o:

    备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

4.2 数据恢复

mongorestore -h <:port> -d dbname

  • –host <:port>, -h <:port>:

    MongoDB所在服务器地址,默认为: localhost:27017

  • –db , -d :

    需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

  • –drop:

    恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

  • mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。

    你不能同时指定 和 –dir 选项,–dir也可以设置备份目录。

  • –dir:

    指定备份的目录

    你不能同时指定 和 –dir 选项。

五、MongoDB Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;

public class MongoDBJDBC{
public static void main( String args[] ){
try{
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );

// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");
System.out.println("Connect to database successfully");

}catch(Exception e){
System.err.println( e.getClass().getName() + ": " + e.getMessage() );
}
}
}
Thanks
0%