第一章 MongoDB简介¶
注解
MongoDB是一款强大、灵活,且易扩展的通用型数据库。它能扩展出非常多的功能,如二级索引、范围查询、排序、聚合、以及地理空间索引、本书涵盖了MongoDB的主要涉及特点。
1.1 易于使用¶
MongoDB是一个面向文档的数据库,而不是关系型数据库。不采用关系模型主要是为了获得更好的扩展性。
与关系型数据库相比,面向文档的数据库不再有"行"的概念。取而代之的是更为灵活的“文档”模型。通过在文档中嵌入文档和数组,面向文档的方法能够仅使用一条记录来表现复杂的层次关系,这与使用现代面向对象语言的开发者对数据的看法一致。
另外,不再有预定义模式:文档的键值不在是固定的类型和大小。由于没有固定的模式,根据需要添加或删除字段变得更容易了。
1.2 易于扩展¶
MongoDB的设计采用横向扩展。面向文档的数据模型使它能很容易地在多台服务器之间进行数据分割。MongoDB能自动处理跨集群的数据和负载,自动重新分配文档,以及将用户请求路由到正确的机器上。这样,开发者能够集中精力编写应用程序,而不需要考虑如何扩展的问题。如果一个集群需要大量的容量,只需要向群集添加新服务器,MongoDB会自动将现有数据向新服务器传送。
1.3 丰富的功能¶
MongoDB作为一款通用的数据库,除了能够创建、读取、更新和删除数据之外,还提供一系列不断扩展的独特功能。
索引:
MongoDB支持通用二级索引,允许多种快速查询,且提供唯一索引、复合索引、地理空间索引、以及全文索引。聚合:
MongoDB支持“聚合管道”,用户能够通过简单的片段创建和杂的聚合,并通过数据库自动优化。特殊的集合类型:
MongoDB支持存在时间有限的集合。适用于那些将在某个时刻过期的数据,如会话。类似的,MongoDB也支持固定大小的集合,用于保存近期数据,如日志。文件存储:
MongoDB支持一中非常易用的协议,用于存储大文件和文件元数据。
MongoDB并不具备一些在关系型数据库中很普遍的功能,如连接和复杂的多行事物。省略这些功能是出于架构上的考虑(为了得到更好的扩展性),因为在分部署系统中这两个功能难以高效的实现。
1.4 卓越的性能¶
MongoDB的一个主要目标是提供卓越的性能。这很大程度上觉得了MongoDB的设计。MongoDB能对文档进行自动填充。也能预分配数据文件以利用额外的空间来换取稳定的性能。MongoDB把尽可能多的内存作为缓存,试图为每次查询自动选择正确的索引。
MongoDB非常强大并试图保留关系型数据库的很多特性,但它并不追求具备关系型数据库的所有功能。只要有可能,数据库服务器就会将处理器和逻辑交给客户端,这种精简方式的设计是MongoDB能够实现如果高效性能的原因之一。