chapter1 MongoDB简介

1.1 易于使用

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

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

    另外,不再有预定义模式(predefined schema):文档的键(key)和值(value)不再是固定的类型和大小。

1.2 易于扩展

    由于需要存储的数据量不断增长,开发者面临一个困难:应该如何扩展数据库?实质上,这是纵向扩展(scale up)和横向扩展(scale out)之间的选择。纵向扩展就是使用计算能力更强的机器,而横向扩展就是通过区分将数据分散到更多的机器上。

    MongoDB的设计采用横向扩展。面向文档的数据模型使它容易的在多台服务器之间进行数据分隔。MongoDB能自动处理跨集群的数据和负载,自动重新分配文档,以及将用户请求路由到正确的机器上。

1.3 丰富的功能

  • 索引(indexing)

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

  • 聚合(aggregation)

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

  • 特殊的集合类型

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

  • 文件存储(file storage)

MongoDB支持一种非常易用的协议,用于存储大文件和文件元数据。

    MongoDB并不具备一些在关系型数据库中很普遍的功能,如连接(join)和复杂的多行事物(multirow transaction)。省略这些功能是出于架构上的考虑(为了得到更好的扩展性),因为在分布式系统中这两个功能难以高效的实现。

1.4 卓越的性能

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

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


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值