MongoDB (名称来自"humongous") 是一个可扩展的,高性能,开源,模式自由,面向文档的数据库.使用C++编写,集文档数据库,键值对存储和关系型数据库的优点于一身.不夸张的说:MySQL所能实现的功能,MongoDB几乎能完全实现(至目前为止,mysql中的union在MongoDB中是不行的)。而且MongoDB的性能远远胜于Mysql,特别是插入性能,据测试,当数据量达到50G以上时,他的插入性能几乎是Mysql的10倍!MongoDB主要有如下特点:
- 面向文档存储(类JSON数据模式(bson)简单而强大)
- 动态查询
- 全索引支持,扩展到内部对象和内嵌数组
- 查询记录分析
- 快速,就地更新
- 高效存储二进制大对象 (比如照片和视频)
- 复制和故障切换支持
- Auto-Sharding自动分片支持云级扩展性
- MapReduce 支持复杂聚合
- 商业支持,培训和咨询
MongoDB 在键值存储(快速并有高扩展性) 和传统 RDBMS 系统(提供结构化模式和强大的查询)之间建立了一个桥梁.
自然,MongoDB的使用也会有一些限制,例如它不适合:
- 高度事务性的系统:例如银行或会计系统。传统的关系型数据库目前还是更适用于需要大量原子性复杂事务的应用程序。
- 传统的商业智能应用:针对特定问题的BI数据库会对产生高度优化的查询方式。对于此类应用,数据仓库可能是更合适的选择。
- 需要SQL的问题
MongoDB支持OS X、Linux及Windows等操作系统,并提供了Python,PHP,Ruby,Java及C++语言的驱动程序,社区中也提供了对Erlang及.NET等平台的驱动程序。
MongoDB 运行概述
MongoDB 是一个服务器进程可以运行在 Linux, Windows 和OS X等操作系统. 支持 32 和 64位模式,我们推荐使用64位模式,因为在32位模式下Mongo的数据库大小有2GB的限制.
MongoDB 功能
对于开发人员, MongoDB 驱动提供了丰富的操作:
- 查询:基于查询对象或者类SQL语句搜索文档. 查询结果可以排序,进行返回大小限制,可以跳过部分结果集,也可以返回文档的一部分.
- 插入和更新 : 插入新文档,更新已有文档.
- 索引管理 : 对文档的一个或者多个键(包括子结构)创建索引,删除索引等等
- 常用命令: 所有MongoDB 操作都可以通过socket传输的DB命令来执行.
|