分享

MongoDB(一):简介

 LibraryPKU 2013-06-06

在高速发展的互联网时代,应对Web应用的数据膨胀是一件很头疼的事情。

举个例子,对于关系型数据库,比如MySQL,刚开始时只有很少的数据,一台服务器就可以了,然后建立备份,以便应对大量的读取和不时的宕机。时间一长, 就得加个缓存层,调整所有的查询,投入更多的硬件。最后,你会发现自己需要将数据切分到多个集群上,并重新构建大量的应用逻辑以适应这种切分。之后,你又 会发现被自己数月前设计的数据库结构限制住了。因为集群中大量的数据需要更改模式,会花费很长的时间,也需要DBA投入相当多的宝贵时间。

为了应对Web应用的数据膨胀,NoSQL盛行,其中风头最劲的莫过于MongoDB。我最先接触MongoDB是在大三暑假实习的时候。MongoDB对于大数据量、高并发、弱事务的互联网应用,如同一个瑞士军刀般的利器。

MongoDB是面向文档的数据库,是NoSQL。其特点有以下6点:

(1)丰富的数据模型:MongoDB将原来“行”的概念换成更加灵活的“文档”模型。面向文档的方式可以将 文档或者数组内嵌进来,所以用一条记录就可以表示非常复杂的层次关系。对于使用面向对象语言的开发者,这种方式是很自然的。其次,MongoDB没有模 式,也就是说文档的键不会事先定义也不会固定不变。由于没有模式需要更改,通常不需要迁移大量数据。不必将所有数据都放到一个模子里面,应用层可以处理新 增或者丢失的键。这样开发者可以非常容易地变更数据模型。

(2)容易扩展:由于MongoDB采用面向文档的数据模型,因此可以自动在多台服务器之间分割数据。MongoDB还可以平衡集群的数据和负载,自动重拍文档。要是需要更大的容量,只需在集群中添加新机器,然后让数据库来处理剩下的事。

(3)丰富的功能:索引、存储JavaScript、聚合、固定集合、文件存储。

(4)卓越的性能:MongoDB使用MongoDB传输协议作为与服务器交互的主要方式。它对文档进行动态 填充,预分配数据文件,用空间换取性能的稳定。默认的存储引擎中使用了内存映射文件,将内存管理工作交给操作系统去处理。动态查询优化器会“记住”执行查 询最高效的方式。再者,MongoDB尽可能将服务器处理逻辑交给客户端(由驱动程序或者用户的应用程序处理)。

(5)简便的管理:MongoDB尽量让服务器自治来简化数据库的管理。如果主服务器挂掉,MongoDB会 自动切换到备份服务器上,并且将备份服务器提升为活跃服务器。在分布式环境下,集群中只需要知道有新增加的节点,就会自动集成和配置新节点。MongDB 的管理理念就是尽可能地让服务器自动配置,让用户能在需要的时候调整设置。

(6)易用性

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多