MongoDB -> “交付一时爽,维护火葬场”
一、认识MongoDB
MongoDB是当今业界使用最广泛的文档数据库之一,曾被冠以“四不像”的称号,被大家称为“非关系型数据库中最像关系型数据库的软件”。名字来自英文单词“Humongous”,中文含义是“庞大”“巨大”,命名者的意图是可以处理大规模的数据。工作中,我们更喜欢称他为“芒果”。
面向文档设计
在这里插入图片描述
特性
1.完备的索引
除了单键索引、复合索引,唯一索引等一些常用的结构外,在一些特殊应用场景,MongoDB还支持地理空间索引、文本检索索引、TTL索引等不同的特性。
2.跨平台,支持各种编程语言
MongoDB是用C++语言编写的,其官方网站提供了各种平台的编译版本。
3.强大的聚合计算
聚合框架能轻松完成关系型数据库的group by语句的分组功能,又或是大数据领域的map-reduce计算。除提供大量常用函数简化开发意外,还用到“管道”(pipeline)的概念,用于抽象各个数据处理的阶段,一个管道由多个“阶段”(stage)组成,通过对不同的阶段进行自由组合,我们就可以灵活应对各种场景中的计算需求。
4.复制、分布式
MongoDB通过副本集(replication set)来实现数据库的高可用,类似于MySQL的Master/Slave复制架构,不同的是,一个副本集可以由一个主节点和多个备节点组成,主节点和备节点基于oplog来实现数据同步。在主节点发生故障时,备节点将重新选举出新的主节点以继续提供服务,整个切换过程是自动完成的。
二、类比SQL模型
数据结构
SQL语句
MongoDB视一切为文档。所有的增删改查命令都通过JSON文档进行描述。
接下来,通过一组对比来快速了解MongoDB的命令风格: