四.mongodb问答

四.mongodb

4.1 mongodb的优势有哪些

  1. 高性能:MongoDB是一种面向文档的数据库,能够快速处理大量数据。

  2. 可扩展性:MongoDB支持水平扩展

  3. 强大的查询功能

  4. 高可用性和可靠性:MongoDB具有内置的复制和故障转移功能\

  5. 分布式计算

  6. 低成本

  7. 易于与前端应用集成:使用JSON作为其原生数据格式

缺点

  1. 不支持事务操作

  2. 占用空间较大:为了避免硬盘碎片和提高数据访问效率,会预分配较大的硬盘空间。JSON格式在存储数据时也会占用一定的额外空间。

4.2 什么是mongodb中的document

它是基本的数据单元,‌类似于关系型数据库中的行

4.3 什么场景下会使用mongodb

MongoDB 是一种面向文档(再次强调)的数据库,特别适用于以下场景:

1. 频繁的数据写入和更新

MongoDB 的文档模型和灵活的模式允许快速写入和更新数据,而不会产生性能问题。

2. 大量非结构化数据

MongoDB 可以存储和处理大量非结构化数据,例如 JSON 文档。

3. 水平扩展

MongoDB 可以通过分片在多个服务器上水平扩展,以处理海量数据。

4. 高并发性

MongoDB 针对高并发环境进行了优化,可以在具有大量同时连接和查询的应用程序中提供良好的性能。

5.实时数据分析

MongoDB 的聚合框架和索引允许进行快速的实时数据分析。

7. 移动和 Web 应用程序

MongoDB 轻量级、易于部署。

4.4 mongodb中的分片是什么意思

分片是将数据拆分,散到不同的机器上,不需要功能强大的大型计算机就可以储存更多的数据,处理更多的负载。有时也叫分区

4.5 什么时候需要分片:

a.机器的磁盘不够用了

b.单个mongod已经不能满足些数据的性能需要了

c.想将大量数据放在内存中提高性能

4.6 如何将数据分布在不同的chunk上

分片键的选择、chunks的自动创建与管理,以及MongoDB的均衡器(Balancer)对chunks的自动调整。

4.7 mongodb支持哪些类型的索引

  1. 单键索引(Single Field Index)
  2. 复合索引(Compound Index)
  3. 多键索引(Multikey Index)
  4. 地理空间索引(Geospatial Index)
  5. 文本索引(Text Index)
  6. 哈希索引(Hashed Index)
  7. TTL索引(Time-To-Live Index)
  8. 部分索引(Partial Index)
  9. 唯一索引(Unique Index)

4.8 副本集有哪些角色,是做什么的

主节点(Primary)

  • 功能:数据操作的主要连接点,负责处理所有的写操作(如插入、更新、删除等)和部分的读操作。它是副本集中唯一可以直接接收写操作的节点。

从节点(Secondary)

  • 功能:从节点主要负责复制主节点的数据,保持与主节点数据的一致性。处理读操作,以实现读写分离,从而减轻主节点的压力。

仲裁者(Arbiter)

  • 功能:仲裁者不存储任何数据副本,仅参与选举过程并提供投票。帮助确保副本集在发生节点故障时能够选举出新的主节点。

4.9 副本集的主节点选举原则

触发条件

  • 主节点故障
  • 网络不可达主节点在10秒内未响应其他节点的心跳信息,即认为网络不可达,从而选举启动。
  • 人工干预

选举规则

  • 票数决定:每个健康的副本集成员都会参与投票,票数最高的节点成为新的主节点。
  • 大多数原则:为了成为主节点,一个节点必须获得“大多数”成员的支持。这意味着如果有N个副本集成员(包括仲裁者,但仲裁者不存储数据且主要参与投票),则至少需要N/2+1个成员的投票支持。例如,在包含3个成员的副本集中(其中1个是主节点,1个是从节点,1个是仲裁者),至少需要2个成员的投票支持才能选举出新的主节点。
  • 优先级:在选举过程中,具有较高优先级的节点更有可能被选为主节点。优先级的值可以设置为0到1000之间的任何整数,默认值为1。通过设置节点的优先级,管理员可以根据节点的性能和重要性来调整选举的权重。
  • 数据一致性:如果两个候选节点的票数相同,则数据最新的节点将获胜。MongoDB使用操作日志(oplog)来记录操作的顺序和细节,并通过比较候选节点的oplog来确定哪个节点具有最新的数据。

防止脑裂

脑裂是指在网络分区的情况下,集群的不同部分各自选出不同的主节点,导致数据不一致和冲突。MongoDB的选举机制通过确保大多数节点的参与来防止脑裂现象的发生。只有当大多数节点达成一致时,才能选举出新的主节点,从而保证了集群的一致性和稳定性。

选举过程

选举过程大致如下:

  • 一旦触发选举条件(如主节点故障),副本集成员之间会相互发送选举请求和响应。
  • 每个成员根据自己的配置(如优先级)和状态(如健康状态、数据一致性等)来决定投票给哪个候选节点。
  • 一旦某个节点获得了大多数选票,它将被确认为新的主节点,并开始处理客户端请求。
posted @ 2024-08-10 19:36  guixiang  阅读(10)  评论(0编辑  收藏  举报