520初识MongoDB

2020-08-26 14:28:39 浏览数 (1)

背景

由于我们在开发的过程中难免会遇到数据库选型的问题,那么数据库的选型那我们必须通过结合我们的业务场景还有他们的设计初衷,及各自在各个方面的优势。现在我们就在业务开发中遇到了选择 mongoDB还时MYsql。之前没有怎么了解过mongoDB,那今天就开始我的mongoDB第一步。

设计的初衷

建立一种灵活,高效,易于扩展,功能完备的数据库。

1. 丰富的数据模型

  • mongo是面向文档的数据库,为了获得更好的扩展性采用的不是关系型数据库,使用一条记录就可以表示非常复杂的层次关系
  • 没有固定的模式,文档的键值可以在应用层进行自己处理

2. 容易扩展

  • 由于大数据时代的来临,开发者遇到的问题就是如何扩展数据库。一般的关系性数据库做拓展最简单的方式也就是分库分表等,但是mongo采用的是文档模式可以自动在多台服务器间进行分割数据。还可以自动平衡负载和自动重排文档等

3. 丰富的功能

  • 索引 1.拥有铺筑索引,能进行多种快速查询,也提供唯一的,复合的和地理空间索引能力
  • 存储JavaScript
  • 聚合 MapReduce和其他聚合工具
  • 固定集合 集合的大小是有上限的
  • 文件存储 存储大型文件和文件元数据 但是也有关系数据库中的功能不具备,那就是join查询,和多行事物。mongo的架构是为了提高性能和扩展性,但是这两个功能很难在一个分布式系统上实现。

4. 不牺牲速度

mongo的主要目标是卓越的性能,使用的传输协议是自己的传输协议作为服务器间交互的主要方式,他对文档进行动态填充,将内存管理工作交给操作系统去处理动态查询优化器会记住执行查询最高效的方式,也将类似于关系型数据库中的一部分业务交给了客户端去处理。

5.简便的管理

MonogDB尽量让服务器自治来简化数据库的管理。除了启动就再也没有什,么需要管理的地方了。如果有节点挂掉,mongo会自动去切换到从节点的机器上。 mongo的管理理念是尽可能的让服务器进行自动配置,让用户在需要时候调整设置。

总结

所有新事物的产生,都会有产生的原因,mongo也不列外,硬件水平提升,大数据时代的到来,关系型数据库出现暴露出了自己的性能瓶颈,如:全文检索导致数据响应时间慢,数据模型的固定导致业务修改成本高等等。mongo通过牺牲关系型数据库中部分功能(事物,join关联)来提高数据库的灵活性和高效性。及支持自动分区,提高数据库的扩展性

想一下和mysql关系型数据库的区别? mysql的优势是什么呢?

0 人点赞