( 一 )、MongoDB 简介
( 一 )、MongoDB 简介
1、简介
MongoDB 官网: https://www.mongodb.com/
MongoDB 是一个开源的、可扩展的、跨平台的、面向文档的非关系型数据库,它由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。在 MongoDB 中支持以类似 json 的 bson(一种计算机数据交换格式)格式来存储数据,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象语言中函数调用,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还可以对数据建立索引。
2、为什么要使用 MongoDB
市面上的数据库软件众多,我们为什么要选择 MongoDB 呢?换句话说就是 MongDB 有什么优势呢?
下面列举了几点原因:
1) 面向文档
由于 MongoDB 是 NoSQL 类型的数据库,它不是像关系类型数据库那样以固定的格式存储数据,而是将数据存储在文档中,这使 MongoDB 非常灵活,可以适应实际的商业环境和需求;
2) 查询
MongoDB 支持按字段、范围和正则表达式查询并返回文档中的数据;
3) 索引
可以创建索引以提高 MongoDB 中的搜索性能,文档中的任何字段都可以建立索引;
4) 复制
MongoDB 支持高可用性的副本集。副本集由两个或多个 MongoDB 数据库实例组成,每个副本集成员可以随时充当主副本或辅助副本的角色,主副本是与客户端交互并执行所有读/写操作的主服务器。辅助副本使用内置复制维护主副本种的数据。当主副本失败时,副本集将自动切换到辅助副本,然后将辅助副本作为主服务器;
5) 负载平衡
MongoDB 可以在多台服务器上运行,以平衡负载或复制数据,以便在硬件出现故障时保持系统正常运行。
5、适用场景
- MongoDB 非常适合实时的插入、更新与查询数据,并具备网站实时存储数据所需的复制及高度伸缩的特性;
- 由于性能很高,MongoDB 也适合作为信息基础设施的缓存层,在系统重启之后,由 MongoDB 搭建的持久化缓存层可以避免下层的数据源过载;
- 使用传统的关系型数据库存取大量数据时,数据库的运行效率往往并不尽人意,而 MongoDB 的出现使这个问题迎刃而解,MongoDB 非常适合庞大、低价值数据的存储(各种应用服务的日志存储);
- MongoDB 内置了 MapReduce 引擎,因此非常适合由数十或数百台服务器组成的数据库(高可用复制集,满足数据高可靠、服务高可用的需求,运维简单,故障自动切换);
- MongoDB 的 BSON 数据格式非常适合文档化格式的存储及查询(灵活的文档模型,JSON 格式存储最接近真实对象模型,对开发者友好,方便快速开发迭代)。
6、不适用的场景如下:
- 要求高度事务性的系统(MongoDB 目前只支持单文档事务,需要复杂事务支持的场景暂时不适合)。
- 复杂的跨文档(表)级联查询。
7、如果你还在为是否应该使用 MongoDB,不如来做几个选择题来辅助决策(注:以下内容摘自 MongoDB公司的某次公开技术分享)
如果上述有1个 Yes,可以考虑 MongoDB,2个及以上的 Yes,选择 MongoDB 绝不会后悔。