由于 MongoDB 是 NoSQL 类型的数据库,它不是像关系类型数据库那样以固定的格式存储数据,而是将数据存储在文档中,这使 MongoDB 非常灵活,可以适应实际的商业环境和需求;
MongoDB 支持按字段、范围和正则表达式查询并返回文档中的数据;
可以创建索引以提高 MongoDB 中的搜索性能,文档中的任何字段都可以建立索引;
MongoDB 支持高可用性的副本集。副本集由两个或多个 MongoDB 数据库实例组成,每个副本集成员可以随时充当主副本或辅助副本的角色,主副本是与客户端交互并执行所有读/写操作的主服务器。辅助副本使用内置复制维护主副本种的数据。当主副本失败时,副本集将自动切换到辅助副本,然后将辅助副本作为主服务器;
MongoDB 可以在多台服务器上运行,以平衡负载或复制数据,以便在硬件出现故障时保持系统正常运行。
MongoDB 的主要目标是在键/值存储方式和传统的 RDBMS(关系型数据库)系统之间架起一座桥梁,它集两者的优势于一身。根据官方网站的描述,MongoDB 适用于以下场景:
MongoDB 非常适合实时的插入、更新与查询数据,并具备网站实时存储数据所需的复制及高度伸缩的特性;
由于性能很高,MongoDB 也适合作为信息基础设施的缓存层,在系统重启之后,由 MongoDB 搭建的持久化缓存层可以避免下层的数据源过载;
使用传统的关系型数据库存取大量数据时,数据库的运行效率往往并不尽人意,而 MongoDB 的出现使这个问题迎刃而解,MongoDB 非常适合庞大数据的存储;
MongoDB 内置了 MapReduce 引擎,因此非常适合由数十或数百台服务器组成的数据库;
MongoDB 的 BSON 数据格式非常适合文档化格式的存储及查询。
为经常查询的字段创建索引,避免全表扫描。
使用分片将数据分散到多台服务器上,以提高读写性能和可扩展性。
MongoDB提供了多个存储引擎,不同的引擎适用于不同的应用场景,应选择适合自己的存储引擎。
在写入大量数据之前,预先分配足够的磁盘空间,避免频繁的自动扩容操作。
MongoDB在内存中缓存常用的数据,应尽量将常用的数据放在内存中,减少硬盘I/O操作。
全表更新操作会锁定整个表,影响性能,应尽量避免。
选择性能更好的硬件,如更快的CPU、更大的内存、更快的磁盘等,以提高MongoDB的性能。
定期监控MongoDB的性能指标,如QPS、响应时间等,及时发现和解决性能瓶颈。