MongoDB 是通用、基于文档的分布式数据库,是一个介于关系数据库和非关系数据库(nosql)之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
一个MongoDB文档例子
{
"_id": "5cf0029caff5056591b0ce7d",
"firstname": "Jane",
"lastname": "Wu",
"address": {
"street": "1 Circle Rd",
"city": "Los Angeles",
"state": "CA",
"zip": "90404"
},
"hobbies": ["surfing", "coding"]
}
没啥特别的,就是一个JSON数据,MongoDB中存储的文档数据就是类似这样的一条JSON数据,正因为存储的是JSON数据,所以MongoDB存储的数据格式非常灵活,不像MYSQL必须是固定的表结构,意思就是随时加字段、删除字段速度也是很快的。
提示:如果你的业务对复杂事物、连表、数据一致性没那么高要求的话,单纯追求数据读写速度快、高并发、存储格式灵活自由、不需要提前定义表结构,MongoDB是不错的选择。
MongoDB特点
高性能
MongoDB提供高性能的数据持久化。特别是,
- 使用嵌入式数据模型可以减少数据库系统的I / O操作。
- 支持索引,所以查询效率非常高,而且索引字段可以是嵌入式文档的字段或者数组的键。
丰富的查询语言
MongoDB支持丰富的查询表达式,以满足各类业务查询场景。
支持地理信息查询
对于O2O类业务、涉及地理位置相关业务,经常需要查询附近的店铺、附近的人、判断你是否在一个商圈内,都需要地理信息检索支持。
高可用
MongoDB的副本集提供:
- 自动故障转移
- 数据冗余。
副本集是一组维护相同数据集合的 mongod实例,提供了数据冗余和高可用支持。
水平拓展
MongoDB支持数据水平拓展,通过分片技术,将数据分布在一个集群的机器上。