1、MongoDB 简介

MongoDB 是功能强大、灵活且易于扩展的通用型数据库。它融合了二级索引、范围查询、排序、聚合以及地理空间索引等诸多特性。

一级标题

1、易于使用

MongoDB 不是关系数据库,而是面向文档(document-oriented)的数据库。面向文档的数据库使用更灵活的“文档”模型取代了“行”的概念。通过嵌入文档和数组,面向文档的方式可以仅用一条记录来表示复杂的层次关系。MongoDB 中也没有预定义模式(predefined schema):文档键值的类型和大小不是固定的。由于没有固定的模式,因此更容易按需添加或删除字段。

2、易于扩展

应用程序的数据集大小正以惊人的速度在增长。随着所需存储数据量的增长,如何扩展数据库?有两种方式:纵向扩展(提高配置)和横向扩展(将数据分布到更多机器上)。纵向扩展通常是阻力最小的途径,但它也有缺点:大型机器一般非常昂贵,而且在最终达到物理极限时,就无法再升级到更高的配置了。另一种方式是横向扩展:如果想增加存储空间或增加读写操作的吞吐量,那么可以购买额外的服务器,并将它们添加到集群中。这既便宜又便于扩展,但管理 1000 台机器比管理1 台机器困难得多。
MongoDB 的设计采用了横向扩展。面向文档的数据模型使跨多台服务器拆分数据更加容易。MongoDB 会自动平衡跨集群的数据和负载,自动重新分配文档,并将读写操作路由到正确的机器上,如图 1所示。
图1、使用分片将 MongoDB 横向扩展至多台服务器

3、功能丰富

MongoDB 是通用型数据库,除了创建、读取、更新和删除数据外,它还提供了数据库管理系统的常见功能和许多其他独特的功能,举例如下。

3.1索引

MongoDB 支持通用的二级索引,并提供唯一索引、复合索引、地理空间索引及全文索引功能。此外,它还支持在不同层次结构(如嵌套文档和数组)上建立二级索引,让开发人员能够以最适合应用程序的方式充分利用其建模能力。

3.2聚合

MongoDB 提供了一种基于数据处理管道的聚合框架。用户可以通过在服务器端使用一系列相对简单的处理阶段,来充分利用数据库优化以构建复杂的分析引擎。

3.3特殊的集合和索引类型

MongoDB 支持生命周期有限(TTL)集合,适用于保存将在特定时间过期的数据,比如会话和固定大小的集合,以及用于保存最近的数据(日志)。MongoDB 还支持部分索引,可以仅对符合某个条件的文档创建索引,以提高效率并减少所需的存储空间。

3.4文件存储

针对大文件及文件元数据的存储,MongoDB 使用了一种非常易用的协议。MongoDB 并不具备关系数据库中的一些常见功能,特别是复杂的连接操作。MongoDB 通过使用 3.2 版本引入的 $lookup 聚合运算符以非常有限的方式支持连接操作。在 3.6 版本中,可以使用多个连接条件以及非关联子查询来实现更复杂的连接。MongoDB 的这种处理是出于架构上的考虑,以便获得更好的可扩展性,因为这些特性在分布式系统中很难高效地实现。

4、性能卓越

性能是 MongoDB 的重中之重,这一点决定了它的许多设计。它在其 WiredTiger存储引擎中使用了机会锁,以最大限度地提高并发和吞吐量。它会使用尽可能多的RAM(内存)作为缓存,并尝试为查询自动选择正确的索引。总之,MongoDB的每个方面都是为了保持高性能而设计的。尽管 MongoDB 功能强大并且融合了关系数据库的许多特性,但它的设计初衷并不是具备关系数据库的所有功能。对于某些功能,数据库服务器会将处理和逻辑交给客户端(由驱动程序或用户的应用程序代码处理)。这种新型的设计方式是MongoDB 能够实现如此高性能的原因之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值