MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。其名字来自humongous这个单词的中间部分,从名字可见其野心所在就是海量数据的处理。本文是一个MongoDB的入门级教程,手把手的教会读者使用MongoDB,并将学习过程当中可能遇到的问题一一列举。本文不是用长篇的文字来理论性描述MongoDB的各方面知识,而是用图文并茂的方法来讨论MongoDB,但愿用最短的时间使开发人员熟悉MongoDB。 数据库
1、MongoDB简介 数组
2011年将被记住,由于这一年SQL将死;这一年,关系数据库从一线退下;这一年开发人员发现他们不必为了持久化数据,而将每一个对象转化为表格结构。 服务器
2011年是文档数据库的一年,尽管一直在稳步发展势头,经过过去八年多的发展,如今有各类稳定的文档数据库——从基于亚马逊和谷歌的云,到各类开放源码工具,尤为是MongoDB。 分布式
那么,MongoDB是什么?这里的五件事是每一个开发人员应该知道的: 工具
一、MongoDB 是一个独立的服务器 性能
如MySQL或PostgreSQL同样,MongoDB提供侦听端口以便接入。它提供了用于查询,建立,更新和删除的工具。从理论上讲,你使用它的工做方式与你使用MySQL或PostgreSQL的工做方式相同:链接,执行任务,并关闭链接。 学习
二、MongoDB是非结构化的 spa
MongoDB 没有结构化语言。若是你想建立一个新的文档类型,你不用作任何事来告诉数据库关于这些数据的结构,而仅仅是存到数据库中便可。 对象
简单的说,MongoDB使用相似JavaScript或PHP的类型处理方式。也就是说,数据库是灵活的弱类型。 教程
虽然有一些数据是有限制条件的(大块的数据可能须要一些明确的处理),但在大多数状况下,你能够像写PHP代码同样编写你的MongoDB代码。
三、没必要去学习另外一种查询语言
还记得这些你写的数据库抽象层吗?还记得那些你处理过的ORM层吗?如今,你能够将它们所有丢弃。在MongoDB中你不须要他们。MongoDB没有不少查询语句。在大多数状况下,只需给它一个数组指定你想要的信息,而后它会给你返回文档的数组。若是你想运行一些很是复杂的查询(如Map-Reduce操做),能够向MongoDB传递JavaScript,其内部的JavaScript引擎能够解析这个脚本。
四、MongoDB是神速的
开发时间也短,由于没有结构须要管理和不多(若是有的话)的数据映射。
学习曲线很平滑,由于没有新的查询语言学习。代码是简洁的。毕竟,无须任何其余ORM,封装能够很是简单。你的代码是将来的保证。向你的对象增长更多的字段是很轻松的。所以,需求变化了,你能够很快修改代码以便适应。
MongoDB足以让我意识到它有改变游戏规则的潜力。这也是让你们主张使用新一代的文档数据库代替基于SQL的关系数据库的缘由。将关系数据库留在尘土里,更可能的是让它们作它们能作好的事情:存储属于行和表的数据。