MongoDB简介

MongoDB 是一款强大 、灵活,且易于扩展的通用型数据库 。它能扩展出 非常多 的功能,如 二级索引 ( secondary  index ) 、范围查 询 ( range  query ) 、排序、 聚合 ( aggregati on ) ,以及地理空间索引 ( geospatiaJ index ) 。本章涵盖了 MongoDB 的主 要设计特点。

1易于使用

MongoDB 是一个面向文档 ( document-oriented ) 的数据库 ,而不是关系型数据库 。 不采用关系模型主要是 为了获得更好的扩展性 。当然 ,还有其他一些好处 。

与关系型数据库相比 ,面向文挡的数据库不再有 “行” ( row ) 的概念 ,取而代之的 是更为灵活 的 “ 文档” ( document ) 模型 。通过在文档中嵌入文档和数组 ,面向文 档的方桂能够仅使用一条记录来表现复杂的层次关系 ,这与使用现代面向对象语 言 的开发者对数据的看法一致。

另外 ,不再有预定义模式 ( predefined schema ) :文档的键 ( key ) 和值 ( value ) 不再是固定的类型和大小。由于没有固定的模式,根据需要添加或删除 字段变得更容易了。通常,由于开发者能够进行快速迭代 ,所以开发进程得以加快。而且 ,实验更容易迸行 。开发者能尝试大量的数据模型 ,从中选择一个最好的。

2易于扩展

应用程序数据集的大小正在以不可思议的速度增长 。随着可用带宽的增长和存储器 价格的下降 ,即使是一个小规模的应用程序,需要存储的数据量也可能大得惊人,甚至超出了很多数据库的处理能力。过去非常罕见的T级别数据,现在已是司空见惯了。

由于需要存储的数据量不断增长 ,开发者面临一个困难 :应该如何扩展数据库? 实质上,这是纵向扩展 ( scale up ) 和横向扩展 ( scale out ) 之间的选择 。纵向扩展就 是使用计算能力更强的机器,而横向扩展就是通过分区将数据分散到更多机器上 。 通常 ,纵向扩展是最省力的做法 ,其缺点是大型机 一般都非常昂贵 。而且 ,当数据 量达到机器的物理极限时 ,无论花多少钱也买不到更强的机器了。另一个选择是横向扩展:要增加存储空间或提高性能 ,只需购买一台普通的服务器并把它添加到集群中就可以了。横向扩展既便宜又易于扩展;不过,管理1000 台机器比管理一台机 器显然要困难得多 。

MongoDB 的设计采用横向扩展。面向文档的数据模型使它能很容易地在多台服务器之间进行数据分割 。MongoDB 能自动处理跨集群的数据和负载,自动重新分配文档,以及将用户请求路由到正确的机器上 。这样,开发者能够集中精力编写应用程序,而不需要考虑如何扩展的问题 。如果一个集群需要更大的容量 ,只需要向集 群添加新服务器 ,MongoDB就会自动将现有数据向新服务器传送 。

3丰富的功能

MongoDB 作为一款通用型数据库,除了能够创建、读取 、更新和删除数据之外,还提供一系列不断扩展的独特功能 。

• 索引(indexing )
MongoDB 支持通用二级索引 ,允许多种快速查询,且提供唯一索引、复合索引、 地理空间索引 ,以及全文索引。

• 聚合 ( aggregation )
MongoDB 支持 “聚合管道” (aggregation pipeline) 。用户能通过简单的片段创建 复杂的聚合,井通过数据库自动优化。

• 特殊的集合类型
MongoDB 支持存在时间有限的集合,适用于那些将在某个时刻l过期的数据 ,如会话(session)。类似地,MongoDB也支持固定大小的集合,用于保存近期数据,如日志。

• 文件存储 ( file storage )
MongoDB 支持一种非常易用的协议,用于存储大文件和文件元数据 。
MongoDB 并不具备一些在关系型数据库中很普遍的功能 ,如连接 (join) 和复杂的 多行事务 ( multirow transaction ) 。省略这些功能是出于架构上的考虑 (为了得到更 好的扩展性),因为在分布式系统中这两个功能难以 高效地实现 。

4卓越的性能

MongoDB 的一个主要目标是提供卓越的性能 ,这很大程度上决定了 MongoDB 的 设计。MongoDB 能对文档进行动态填充 ( dynamic padding ) ,也能预分配数据文 件以利用额外的空间来换取稳定的性能 。MongoDB 把尽可能多的内存用作缓存 (cache),试图为每次查询自动选择正确的索引 。总之,MongoDB在各方面的设计 都旨在保持它的高性能 。

虽然 ,MongoDB 非常强大并试图保留关系型数据库的很多特性 ,但它并不追求 具备关系型数据库的所有功能 。只要有可能 ,数据库服务器就会将处理和逻辑交给客户端 (通过驱动程序或用户的应用程序代码来实现)。这种精简方式的设计是 MongoDB 能够实现如此高性能的原因之 一。

参考

1.MongoDB权威指南(第二版)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值