MongoDB是2021年春季招聘中的高频面试话题,它是一款由C++编写的分布式文件存储开源数据库系统,专为现代Web应用提供高性能和可扩展的数据存储解决方案。以下是面试中可能涉及的关键知识点:
1. **复制集初始化**:在MongoDB中,复制集是一种高可用性架构,通过初始配置确保多个节点同步数据。新加入的节点需经过正确的初始化步骤才能成为副本集的一部分。
2. **主节点故障处理**:当主节点发生故障时,副本集中的其他成员会根据预设策略自动进行主从切换,通常选择一个选举产生的新主节点,以保证服务的连续性。
3. **主节点脱离副本集**:网络问题可能导致主节点暂时无法通信,这时副本集中的其他节点会检测并启动恢复过程,重新选举新的主节点。
4. **选举条件与流程**:参与选举的节点数量必须超过副本集总节点的一半,否则选举会被延迟或无法进行。选举流程涉及节点间的投票,通常基于日志一致性检查和多数决策原则。
5. **分片技术**:MongoDB支持水平分片,将大表拆分成多个更小的、独立的物理部分,以分散数据和提高查询性能。分片键的选择至关重要,决定数据如何在集群中分布。
6. **命名空间与索引**:命名空间是MongoDB中用于区分集合的逻辑名称,索引是数据库中的数据结构,用于加速查找操作。
7. **GridFS**:MongoDB的GridFS机制用于存储大文件,将文件分割成多个小块存储,提高了文件存储的灵活性和高效性。
8. **聚合与分析器**:MongoDB的聚合框架允许对数据进行复杂的数据处理和分析,分析器负责解析和优化查询计划。
9. **数据同步与写入行为**:MongoDB的更新操作默认异步,但可以通过fsync同步到磁盘,以确保数据持久化。
10. **副本集角色**:包括主节点、从节点和仲裁者,各自承担不同的职责,如数据存储、读取请求处理和在选举中保持一致性。
11. **非关系型数据库类型**:MongoDB属于文档型数据库,还有键值对型、列族型、图形数据库等多种非关系型数据库类型。
12. **分片时机与查询处理**:数据扩展到多个分片通常在负载增加或数据增长时,查询处理策略会影响查询效率。
13. **集群选择**:是否选择分片集群取决于具体应用需求,集群分片提供了更好的性能和可扩展性,而非集群则适用于规模较小或需求简单的场景。
14. **适用场景**:MongoDB适用于大量数据、频繁的读写操作、实时数据分析和互联网应用等场景。
15. **ObjectID详解**:MongoDB的每个文档都有一个唯一的ObjectID,它由时间戳、机器标识、进程标识和随机数等组成。
16. **查询技巧**:使用“AND”和“OR”条件查询时,可以利用聚合框架或$and和$or操作符进行多条件查询,并能结合sort进行排序。
17. **MongoDB的查询和聚合操作**:包括使用sort()函数进行排序,使用aggregate()方法进行复杂的数据聚合和计算。
18. **Raft选举过程**:MongoDB的复制集采用Raft协议实现选举,投票规则基于一致性哈希算法,确保在节点故障后快速恢复。
通过掌握这些核心知识点,求职者可以更好地理解和应对MongoDB相关的面试挑战。