一、为什么我要写MongoDB呢?
a、公司用的原因:我就不说公司为什么我公司用MongoDB,而不选择关系型数据库的MySQL了。
b、MongoDB是一款强大,灵活,且易于扩展的通用性数据库,功能很强大
c、既然公司用了,就想要把它给弄透彻。
所以我想把这个技术把它好好学学,哪里写的不好,给指导出来,一起努力。
二、关于MongoDB的简介与介绍
a、易于使用
1⃣️、MongoDB是一个面向文档的数据库,而不是关系型的数据库,这样的设计为了获得更好的扩展性。通过文档中嵌入文档和数组,可以使用一条记录来表现为复杂的层次关系。
2⃣️、文档中的键(key)和值(value)不再是固定的类型和大小,所以需要添加和删除字段变得更加容易了。所以可以快速开发和迭代。
b、易于扩展
背景:
1⃣️、因为现在是互联网的时代,数据量在以不可思议的速度在增长,过去非常罕见的T级数据,现在已经是司空见惯了。
2⃣️、纵向扩展和横向扩展
纵向扩展:使用计算能力更强的机器,优点是更省力的做法,缺点就是大型机一般非常昂贵,而且当数据量达到机器的极限时,是花多少钱都搞定不了的。
横向扩展:通过分区的思想将数据分散到更多的机器上,要增加存储性能或者提高性能的话,只需要买一台普通的服务器并把它添加到集群中就可以了,横向扩展的好处是既便宜又易于扩展。缺点:管理很多的机器更加要困难的多。
而在MongoDB中的设计采用的是横向扩展的方案,面向文档的数据模型使它能很容易地在多台服务器之间进行数据分割。
c、MongoDB的优点
1⃣️、MongoDB能自动处理跨集群的数据和负载,自动去重新分配文档,以及能够将用户的请求路由到正确的机器上。
2⃣️、开发者能够集中精力编写应用程序就可以了。而不需要去考虑如何扩展的问题。
3⃣️、如果需要存储更大的容量的时候,只需要向集群中添加新的服务器就ok了。MongoDB会自动把数据推送到新的服务器上。
d、丰富的功能
MongoDB是一款通用型的数据库,不但可以能够创建,读取,更新和删除数据,而且有以下功能:
1⃣️、索引
MongoDB是支持二级索引的,可以实现多种快速查询,可以提供唯一索引,复合索引,地理空间索引,全文索引。
2⃣️、聚合
可以通过简单的片段创建复杂的索引,通过数据库自动优化。
3⃣️、可以存储过期的数据
类似会话一样,支持固定大小的集合,用于保存近期数据,如记录日志。
4⃣️、文件存储
MongoDB可以存储大文件和文件的元数据。
缺点:MongoDB并不具备关系型数据库中普遍的功能,如,连接(join)和复杂的多行事物,而这样的设计为了提高扩展性,因为在分布式系统中这两个功能也很难以高效的实现。
e、卓越的性能
MongoDB的主要目标是提供卓越的性能。
1⃣️、 能够对文档进行动态填充,预分配数据文件可以利用额外的空间来换取稳定的性能。
2⃣️、尽可能把多的内存用作缓存。
3⃣️、为每次查询尽可能自动选择正确的索引。
4⃣️、它并不追求具备关系型数据库的所有功能,只要有可能,数据库服务器就会将处理和逻辑交给程序代码来实现,这种设计的方式是MongoDB能够实现高性能的原因之一。