这种架构使 MongoDB 能够处理 PB 级数据和每秒数百万次操作,适合具有高增长潜力和苛刻性能要求的应用程序。
4.副本集的高可用性
MongoDB 通过以下方式确保高可用性和数据冗余副本集。副本集是生产 MongoDB 部署的基本构建块,提供容错能力和数据弹性。
副本集:一组维护相同数据集的 MongoDB 实例。副本集由一个主节点(接收所有写入操作)和多个辅助节点(从主节点异步复制数据)组成。为了实现稳健的选举,典型的设置至少包含三个节点。
自动故障转移:如果主节点发生故障(例如,由于硬件故障、网络分区或软件崩溃),选举过程会自动从可用的辅助节点中选出新的主节点。这种故障转移过程通常快速且对应用程序透明,保持续运行。
阅读可扩展性:可以将辅助节点配置为处理读取查询,从而分散读取负载并提升读取密集型应用程序的整体性能。但是,必须注意读取一致性(请参阅下文的一致性模型),因为辅助节点可能会略微滞 洪都拉斯电话营销数据 后于主节点。
数据冗余:副本提供数据的冗余副本,防止单个节点发生硬件故障或灾难性事件时数据丢失。数据在多个独立服务器上复制,从而增强了持久性。
5.强大的索引功能
尽管 MongoDB 具有灵活的模式,但它严重依赖于索引以实现高查询性能。索引的工作原理与关系数据库中的索引非常相似,允许数据库快速找到符合查询条件的文档,而无需扫描整个集合。
B树索引:最常见且默认的索引类型,提供高效的单字段、多字段(复合索引)查找以及范围查询。它们针对精确匹配、范围搜索和排序进行了优化。
复合索引:多字段索引,对于多条件查询以及高效支持排序操作至关重要。复合索引中字段的顺序很重要,遵循“最左前缀”规则。对于查询db.collection.find({“fieldA”: valueA,“fieldB”: valueB}).sort({“fieldC”: 1}),复合指数{“字段A”:1,“字段B”:1,“字段C”:1}将会非常有效。
文本索引:在字符串内容中实现高效的自由文本搜索功能,允许自然语言查询(例如,“查找包含‘MongoDB’和‘NoSQL’的文档”)。
地理空间索引:支持空间查询,可高效查询地理数据(例如,“查找一定半径内的所有点”、“查找多边形内的位置”)。MongoDB 支持各种地理空间数据类型(点、线、多边形)。
TTL(生存时间)索引:在指定时间段或特定到期日期后自动从集合中移除文档。这对于管理会话数据、日志条目或缓存信息等短暂数据非常有用,可以减少手动清理工作。
唯一索引:强制字段或字段组合的唯一性,类似于关系数据库中的唯一约束,防止指定值的重复输入。