MongoDB 简介
MongoDB 简介
关系数据库的不足
最近几年在开发互联网 Web 应用中,越来越多的企业在生产环境中从关系数据库(如 MySQL)迁移到非关系数据库(如 MongoDB)。
那么,企业这样做的动机是什么?为何开发互联网 Web 应用的企业要抛弃 MySQL,而青睐 MongoDB 呢?
- 互联网有很多非结构化数据
关系数据库(如 MySQL)适合存储结构固定不变的数据(结构化数据),也就是二维表。但是,互联网中很多数据并不是结构化的,而是半结构化(如 XML 和 JSON)或非结构化数据(如文档、邮件、图片、音频、视频等),这些数据很难设计关系数据库表来存储。
- 互联网要求高性能、易于扩展
关系数据库表超过一定的容量(如 10w 行记录),读写性能就会急剧下降,而互联网中每天都将产生海量的数据,这对关系数据库而言很容易出现性能瓶颈,而其关系数据库难以通过集群增加主机扩展以提升性能,维护困难
MongoDB 是为快速开发互联网 Web 应用而专门设计的一种 NoSQL 数据库
什么是 MongoDB
**MongoDB 是一种通用的、基于文档的分布式 NoSQL 数据库 **,这种数据库比关系型数据库更 易于使用、易于扩展、更高的性能(由C++语言编写)
MongoDB 与MySQL对比
MySQL MongoDB 说明
database database 数据库
table collection(集合) 表/集合
row document(文档) 数据记录
primary key primary key 主键
fields fields 字段
index index 索引
table join 无 表的关系
- 不再有关系数据库表(table)的概念,取而代之的是集合(collection)
- 不再有关系数据库行(row)的概念,取而代之是更为灵活的文档(document)
- 一个文档(document)由 键(Key) 和 值( Value)组成,且没有固定的类型和大小
MongoDB 主要功能特征
特点:高性能、易部署、易使用,存储数据非常方便
- 面向集合存储,易存储对象类型的数据
- 模式自由
- 支持动态查询
- 支持完全索引,包含内部对象
- 支持查询
- 支持主从复制和故障恢复
- 使用高效的二进制数据存储,包括大型对象(如视频等)
- 支持集群
- 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言
- 支持 BSON 文件存储格式(一种JSON的扩展)
- 可通过网络访问
MongoDB 的设计采用横向扩展,基于文档的数据模型使它能很容易地在多台服务器之间进行数据分割。如果一个集群需要更大的存储容量,只需要向集群添加新服务器,MongoDB 就会自动将现有数据向新服务器传送。
MongoDB 就是为大数据而生