MongoDB是一个文档型数据库,由C++语言编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB中的一条记录就是一个文档,是一个数据结构,由字段和值对组成。MongoDB文档与JSON对象类似。字段的值有可能包括其它文档、数组以及文档数组。
MongoDB的主要特征:
MongoDB副本集是将数据同步在多个服务器,提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。副本集还允许从硬件故障和服务中断中恢复数据。
MongoDB的副本集至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。MongoDB各个节点常见的搭配方式为:一主一从、一主多从。主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
MongoDB副本集结构如图1所示。
当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。
MongoDB中使用分片集群架构如图2所示。
图2中主要有如下所述三个主要组件:
3个mongos路由节点(分布在不同服务器上提升路由吞吐),3个Config配置节点(分布在不同服务器上做冗余),N个shard存储节点(根据用户容量配置,建议每台服务器配置4个以上shard存储节点提升整机CPU的使用率),常用为2/3副本。