MongoDB 入门
1. MongoDB 是什么
MongoDB是一种强大、灵活、且易于拓展的通用型数据库。
它是一种面向文档的数据库,是最著名的NoSql(非关系型)数据库之一
2.MongoDB 有什么特点
-
易于使用
MongoDB是一种面向文档的数据库,不再有关系型数据库中“行(Row)”的概念,取而代之的是“文档(Document)”,通过在文档中嵌套文档,可以表现更加复杂的数据。
另外,MongoDB不再有预定义模式,文档的键(Key)和值(Value)不再被约束成固定的大小和类型,而是可以变化的,非常容易使用。 -
易于拓展
数据库拓展分为横向拓展和纵向拓展两种,纵向拓展简单来说就是采用更强的计算机,以应对更大的负载;横向拓展简单来说就是采用更多的计算机,通过分摊负载来应对更大的负载。纵向扩展很简单,但是成本高昂且有上限,
相对而言,横向扩展更加灵活。
MongoDB的设计采用横向扩展的方式,面向文档使得它更加容易在多台机器之间进行数据分割。另外,MongoDB能够自动处理跨集群的数据和负载,自动重新分配文档,以及将用户的请求路由转发到正确的机器上。 -
丰富的功能
除了CRUD(增删改查)外,MongoDB还支持索引(Index)、聚合(aggregation)、特殊的集合类型、文件存储等。 -
卓越的性能
MongoDB的一个主要设计目标就是高性能,MongoDB能对文件进行动态填充,也能预分配数据文件以利用额外的空间来换取稳定的性能。
3. 什么时候选用MongoDB
(1)超大的数据量。
(2)高频率的读写操作。
(3)价值较低的数据,对事务性要求不高。
(4)灵活的“表结构”。
在架构选型上,除了上述的三个特点外,如果你还犹豫是否要选择它?可以考虑以下的一些问题:
- 应用不需要事务及复杂 join 支持
- 新应用,需求会变,数据模型无法确定,想快速迭代开发
- 应用需要2000-3000以上的读写QPS(更高也可以)
- 应用需要TB甚至 PB 级别数据存储
- 应用发展迅速,需要能快速水平扩展
- 应用要求存储的数据不丢失
- 应用需要99.999%高可用
- 应用需要大量的地理位置查询、文本查询
如果上述有1个符合,可以考虑 MongoDB,2个及以上的符合,选择 MongoDB 绝不会后悔。