1. MongoDB 简介
MongoDB 是一种非关系型数据库,属于 NoSQL 数据库的一种。它以高性能、高扩展性、高可用性和灵活性著称。
相较于传统的关系型数据库,MongoDB 不遵循 SQL 语言标准化,而是通过自己的查询语言查询文档,所以又被称为 NoSQL 的新技术。
db.collection.find(query, projection)
2. MongoDB 的主要特点
2.1 高扩展性
MongoDB 的数据多分片存储在多台机器上,并且通过 shard key 划分数据片,保证每台机器承担的数据压力相对均匀。当数据量增大时,可以通过添加更多的节点来实现水平扩展。
每台机器承担的数据压力相对均匀
2.2 高可用性
MongoDB 支持主从复制方式,即有一个主节点和多个从节点来支持读写操作,如果主节点出现故障,就会由从节点自动切换到主节点继续提供服务,从而实现高可用性。
自动切换到主节点继续提供服务
2.3 BSON 格式
MongoDB 的数据采用 BSON(Binary JSON) 格式来存储,这种格式是序列化后的二进制格式,对于多语言的支持比 JSON 或 XML 格式更好,并且存储、查找时效率较高。
对于多语言的支持比 JSON 或 XML 格式更好
2.4 灵活的数据模型
MongoDB 不需要预先定义数据结构,可以根据需要添加、删除字段,可以嵌套文档或数组、甚至可以使用 JavaScript 代码定义函数。
可以根据需要添加、删除字段,可以嵌套文档或数组
3. MongoDB 和 SQL 的区别
3.1 数据模型不同
MongoDB 是文档型数据库,不需要预定义数据模型,而关系型数据库需要根据实际情况分析数据之间的关系设计出关系模型,然后再定义数据模型。
MongoDB 是文档型数据库,不需要预定义数据模型
3.2 查询语句不同
在关系型数据库中,查询语句采用 SQL 语言;而 MongoDB 查询则采用自己的语言。
db.collection.find(query, projection)
MongoDB 查询则采用自己的语言
3.3 数据一致性不同
在关系型数据库中,数据被规范化到多个表中,数据需要遵守 ACID 特性保证数据的一致性。而 MongoDB 则采用 CAP 理论保证数据的可用性和分区容错性,而一致性是弱一致性。
在 MongoDB 中一致性是弱一致性
4. MongoDB 的应用场景
4.1 大数据存储和处理
MongoDB 作为非关系型数据库的优点,尤其擅长存储和处理大量结构灵活的半结构化和非结构化数据,是大数据存储和处理的好选择。
擅长存储和处理大量结构灵活的半结构化和非结构化数据
4.2 WEB 应用
MongoDB 可以使用 JSON 格式存储网页上的数据,如文章、博客等,这种存储方式方便读取和搜索数据,并且具备良好的可扩展性、高可用性和高性能。
具备良好的可扩展性、高可用性和高性能
4.3 日志存储
MongoDB 的高扩展性和高可用性使得它非常适合处理 web 应用程序和分布式系统日志。
非常适合处理 web 应用程序和分布式系统日志
4.4 物联网设备数据存储
MongoDB 适用于物联网应用程序引擎,可在组件间广泛共享数据,并且具有高效和快速的存储、查询和分析能力。
具有高效和快速的存储、查询和分析能力
5. 结论
MongoDB 是非关系型数据库中比较有代表性的产品之一,与传统的关系型数据库相比,它具备高扩展性、高可用性、高性能和灵活性等优势,并且适用于大数据存储和处理、WEB 应用、日志存储、物联网设备数据存储等众多应用场景。
适用于大数据存储和处理、WEB 应用、日志存储、物联网设备数据存储等众多应用场景