MongoDB定义
MongoDB 是一个高性能、开源的文档型数据库,可用于替代统的关系型数据库或键/值存储方式。
MongoDB特点
- 所用语言:C++;
- 特点:保留了SQL一些友好的特性,比如:查询,索引;
- Master/Slave复制(支持自动错误恢复,使用 sets 复制);
- 内建分片机制;
- 可在服务器端执行任意的 javascript函数;
- update-in-place支持比CouchDB更好
- 在数据存储时采用内存到文件映射;
- 对性能的关注超过对功能的要求;
- 在32位操作系统上,数据库大小限制在约2.5Gb
- 空数据库大约占 192Mb
- 采用 GridFS存储大数据或元数据,不是真正的文件系统;
MongoDB优点
1.更高的写负载,MongoDB拥有更高的插入速度;
2.处理很大的规模的单表,当数据表太大的时候可以很容易的分割表;
3.高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点 (数据中心)故障转移;
4.快速的查询,MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中,如果内 存资源相当丰富的话,这将极大地提高数据库的查询速度;
5.非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而 导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响, 整个过程会非常快速。
MongoDB缺点
1.不支持事务;
2.MongoDB占用空间过大 ;
3.MongoDB没有成熟的维护工具;
MongoDB功能
MongoDB作为一款通用型数据库,除了能够创建、读取、更新和删除数据之外,还提供了一系列不断扩展的独特功能。
1.索引
支持通用二级索引,允许多种快速查询,且提供唯一索引、复合索引、地理空间索引、全文索引。
2.聚合
支持聚合管道,用户能通过简单的片段创建复杂的集合,并通过数据库自动优化。
3.特殊的集合类型
支持存在时间有限的集合,适用于那些将在某个时刻过期的数据,如会话session。
4.文件存储
MongoDB并不具备一些在关系型数据库中很普遍的功能,如链接join和复杂的多行事务,省略这些的功能是处于架构上的考虑,或者说为了得到更好的扩展性,因为在分布式系统中这两个功能难以高效地实现。
MongoDB应用场景
1.适用于实时的插入、更新与查询的需求,并具备应用程序实时数据存储所需的复制及高度伸缩性;
2. 非常适合文档化格式的存储及查询;
3.高伸缩性的场景:MongoDB 非常适合由数十或者数百台服务器组成的数据库。
4.对性能的关注超过对功能的要求。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》