Docs 菜单
Docs 主页
/
Atlas
/

Atlas Search 部署选项

您可以使用不同的部署类型、云提供商和集群层来构建 Atlas 集群,以满足预生产或生产环境的需求。 使用这些建议来选择部署类型、云提供商和区域以及用于执行向量Atlas Search的集群和Atlas Search层。

environment
部署类型
集群层
云提供商地区
节点架构

测试查询

Shared or dedicated cluster

Local deployment
M0, Flex, M2, M5, or higher tier

N/A
All


N/A

MongoDB和Atlas Search进程在同一节点上运行

应用程序原型设计

专用集群,分片或非分片

M10M20 或更高层级

所有

MongoDB和Atlas Search进程在同一节点上运行

生产

具有独立搜索节点(分片或非分片)的专用集群

M10 或更高集群层以及 S10 或更高搜索层级

某些 地区的Amazon Web Services和Azure或所有地区的Google Cloud Platform

MongoDB和Atlas Search进程在不同节点上运行

以下部分描述了每个环境:

  • 测试和原型环境

  • 生产环境

为了测试搜索查询和对应用程序进行原型设计,我们建议使用以下部分中描述的部署类型和节点架构。

此配置最适合以下使用案例:

  • 要索引的总文档少于 2M

  • 索引数据少于 10 GB

  • 7 天内少于 10,000 次查询

如果您的使用量超过列出的值,迁移到专用搜索节点。

以下各节将更详细地描述此节点架构。

部署类型

要在云中的集群上测试Atlas Search查询,您可以部署Flex、共享(已弃用)或专用集群。

要在本地测试Atlas Search查询,请使用Atlas CLI创建本地Atlas部署。这可以是本地计算机上托管的单节点副本集。本地部署受到本地计算机的 CPU、内存和存储资源的限制。当您的应用程序准备好投入生产时,将本地Atlas部署迁移到生产环境

Cluster Tiers

为了测试Atlas Search查询,请使用免费 (M0)、Flex 以及共享的 M2M5 集群(已弃用)。

要对应用程序进行原型设计,请使用专用的 、 和更高层级的集群,或部署专用的搜索节点以实现工作负载隔离性。当您的应用程序准备投入生产并可以处理大型数据集时,升级到更高层级。M10M20

云提供商和地区

使用任何受支持的云提供商地区。

您选择的云提供商和地区会影响可用于集群层的配置选项以及运行集群的费用。

对于测试和原型环境,我们建议采用MongoDB进程和Atlas Search进程在同一节点上运行的节点架构。在此部署模型的下图中, Atlas Search mongot进程与 mongod 一起在Atlas 集群中的每个节点上运行,并且它们股票相同的资源。

Atlas Search 架构

默认下,当您创建第一个Atlas Search索引时, Atlas会在运行 mongod进程的同一节点上启用Atlas Search mongot进程。

当您运行查询时,Atlas Search 会使用配置的读取偏好来确定运行查询的节点。该查询首先进入 MongoDB 进程,对于副本集集群为 mongod,对于分片集群为 mongos

对于副本集集群,mongod 进程会将查询路由到同一节点上的mongot 。对于分片的集群,您的集群数据跨mongod 实例(分片)进行分区,并且每个mongot 进程只能访问权限同一节点上的mongod 实例上的数据。因此,您无法运行针对特定分片的Atlas Search查询。mongos 将查询路由到所有分片,使这些查询成为分散聚集查询。如果您使用区域将分片的集合分布在集群中的一部分分片上,则Atlas Search会将查询路由到包含您正在查询的集合的分片的区域,并仅对满足以下条件的分片运行$search 查询:集合所在的位置。

将查询路由到Atlas Searchmongot 进程后,mongot 进程执行搜索和评分,并将匹配结果的文档ID 和其他搜索元数据返回相应的mongod 进程。然后, 进程对匹配结果隐式执行完整文档查找,并将结果返回客户端。如果您在查询中使用mongod $search并发选项, Atlas Search将启用查询内并行机制。要学习;了解更多信息,请参阅跨分段并行查询执行。

要学习;了解有关 mongot进程的详情,请参阅查询处理。

您可以在 Atlas Search 索引中定义存储源字段,以便 mongot进程可以在 mongot上存储指定的字段。然后,您可以在 Atlas Search 查询中使用 returnStoredSource 选项直接从 mongot检索匹配文档的存储字段,而不必在数据库中进行完整文档查询。

另请参阅:

启用 Atlas Search 后,您可以使用自动同步到数据库的集成、完全托管的搜索引擎轻松地在数据上构建搜索。Atlas Search 提供了丰富的查询语言,使用 Atlas Search 聚合管道阶段(如用于全文搜索的 $search$searchMeta 以及用于语义搜索的 $vectorSearch)与其他 MongoDB 聚合管道阶段相结合,并基于分数进行结果排名。

根据为集群预配的资源,在同一节点上部署这两个进程可能比在单独的专用节点上运行搜索进程更具成本效益。

您可能会遇到数据库mongod 和搜索mongot 进程之间的资源争用。这可能会对索引和查询延迟产生负面影响。支持将生产就绪应用程序及其搜索工作负载迁移到专用搜索节点。

在Atlas 集群上启用Atlas Search时,无需支付额外费用或收费。但是,您可能会发现大型索引集合或索引定义的集群资源利用率有所增加。

由于 mongodmongot 进程在同一节点上运行,因此在某些情况下,mongot 可能不可用。 下表描述了可能的原因:

原因
说明

集群层扩展 — 网络存储

当您向上或向下扩展集群时, Atlas会预配一个新实例。 实例准备就绪后, Atlas会附加网络存储并在新节点上启动 mongodmongot

如果 mongodmongot 之前启动,则Atlas Search查询将失败,直到 mongot运行。

集群层扩展 — 本地固态硬盘

当您使用本地固态硬盘扩展Atlas 集群时,您无法保留存储并将其重新连接到新节点。因此, Atlas会执行初始同步以重建搜索索引。在初始同步完成之前,搜索查询将失败。

Lucene降级

在需要降级Lucene 的极少数情况下,您可能无法读取较新的Lucene索引格式。

存储调整

您可以保留连接到Atlas 集群节点的网络存储。 这样,您就可以在不影响mongot 的情况下扩大或缩小卷容量。

但是,在某些区域、当集群使用本地 NVMe 磁盘或其他罕见情况下,可能无法保留网络存储。在这些情况下, Atlas会执行初始同步,搜索查询将失败,直到初始同步完成。

mongot 版本更新

mongot 版本更新期间, Atlas会停止旧版本的 mongot 并启动新版本。 在此短暂期间,搜索查询将失败,直到新的 mongot 启动。

新的 mongod 节点

当您向集群添加新节点时, Atlas会执行初始同步以创建搜索索引。 在初始同步完成之前,使用新 mongod节点的搜索查询将失败。

实例重启或替换

  • 您的Atlas实例可能会在新的安全策略推出期间或您的云提供商要求时重新启动。 当Atlas重新启动时,如果 mongodmongot 之前启动,则搜索查询将失败,直到 mongot运行。

  • 如果您的硬件不正常或迁移了系统架构,您的Atlas实例可能需要更换。 替换实例时,mongot 会执行初始同步,而搜索查询将失败,直到初始同步完成。

mongot 重新启动

每当由于配置更改而导致 mongot 进程重新启动时,搜索查询均会失败,直到 mongot 变为可用为止。

对于生产就绪的应用程序,我们建议使用以下部分中描述的部署类型和节点架构。

此配置最适合以下使用案例:

部署类型

对于生产就绪的应用程序,请使用 M10M20 和更高的专用集群层。这些更层级的集群可以处理大型数据集和生产工作负载。

我们建议您还部署专用搜索节点。如果您的搜索需求增加,您可以扩展搜索部署,而无需扩展MongoDB节点。

云提供商和地区

在所有 Google Cloud 区域以及部分 AWSAzure 区域 中使用搜索节点。您必须选择搜索节点可用于您的部署的云提供商和地区。

所有集群层在支持的云提供商地区均可用。您选择的云提供商和地区会影响集群可用的配置选项和搜索层以及运行集群的费用。

对于生产环境,我们建议采用一种节点架构,其中MongoDB进程和Atlas Search进程在单独的节点上运行。要部署单独的搜索节点,请参阅迁移到专用搜索节点。

在此部署模型的下图中, Atlas Search mongot进程在专用搜索节点上运行,这些节点与运行 mongod进程的集群节点是分开的。

独立搜索节点架构

Atlas为每个集群或集群上的每个分片部署搜索节点。示例,如果您为具有三个分片的集群部署两个搜索节点,则Atlas会部署六个搜索节点(每个分片两个)。您还可以配置搜索节点的数量以及为每个搜索节点配置的资源量。

当您部署单独的搜索节点时, Atlas会自动为每个mongod 分配一个mongot 以便索引。mongotmongod 通信,侦听并同步其存储的索引的索引更改。 Atlas Search对查询进行索引和处理的方式与mongodmongot 进程在同一节点上运行的部署类似。要学习;了解更多信息,请参阅管理Atlas Search索引和查询和索引。要学习;了解有关单独部署搜索节点的更多信息,请参阅用于隔离工作负载的搜索节点。

当您迁移到搜索节点时,Atlas 会部署搜索节点,但不会在节点上提供查询,直到它在搜索节点上的集群上成功构建所有索引。当 Atlas 在新节点上构建索引时,它会继续使用集群节点上的索引提供查询。仅当 Atlas 在搜索节点上成功构建索引并删除集群节点上的索引后,它才会开始从搜索节点提供查询服务。

运行查询时,查询会根据配置的读取偏好(readmongod preference)路由到mongod 进程通过同一节点上的负载负载均衡器路由搜索查询,这会将请求分发到所有mongot 进程。

Atlas Search mongot 进程执行搜索和评分,并将匹配结果的文档 ID 和元数据返回到 mongod。然后,mongod 对匹配结果执行完整文档查找,并将结果返回客户端。如果在查询中使用 $search 并发选项,则 Atlas Search 将启用查询内并行机制。要了解更多信息,请参阅并行查询各分段。

如果删除集群上的所有搜索节点,则在处理搜索查询结果时会出现中断。要了解详情,请参阅修改集群。如果删除 Atlas 集群,Atlas 则会暂停,然后删除所有关联的 Atlas Search 部署(mongot 进程)。

您可以在 Atlas Search 索引中定义存储源字段,以便 mongot进程可以在 mongot上存储指定的字段。然后,您可以在 Atlas Search 查询中使用 returnStoredSource 选项直接从 mongot检索匹配文档的存储字段,而不必在数据库中进行完整文档查询。

单独部署搜索节点具有以下优势:

高可用性
当您部署单独的搜索节点时,Atlas 会强制使用至少两个搜索节点,以确保在出现故障或中断时您的工作负载保持运行状态,将停机时间降至最低。
可扩展性

当您部署单独的搜索节点时,您可以独立于MongoDB 集群扩展存储和计算。这样,您还可以独立于MongoDB扩展查询负载。

要扩展扩展搜索节点,请增加或减少搜索节点的数量。您可以预配最少 2 个、最多 32 个搜索节点。为了均衡查询负载, Atlas Search将搜索查询分布在所有可用的搜索节点上。

要垂直扩展搜索节点,请选择支持全文工作负载的不同搜索层、CPU、 RAM和存储配置。

性能

部署专用搜索节点时,可以提高 mongodmongot 进程的性能和资源利用率,并消除这些进程之间的资源争用。

专用搜索节点支持并发索引段搜索,这允许Atlas Search同时搜索多个索引段。在某些情况下,使用并发分段搜索可缩短查询响应时间。

要确定搜索节点的内存要求,请使用以下Atlas指标:

  • 搜索索引的大小

  • 搜索节点上的总 RAM

考虑一个应用程序,其搜索索引为 10 GB ,搜索节点上的总RAM为 4 GB 。在这种情况下,如果其他进程使用了 1 GB的RAM ,并且只有 3 GB可用于索引数据,则剩余的 7 GB索引数据(10 GB - 3 GB = 7 GB)会根据需要从磁盘进行换页。频繁从磁盘进行分页会导致页面错误、磁盘 I/O 和 CPU IOWait 增加,从而导致性能下降。

如果您使用具有更多RAM的更高搜索集群层(例如 8 GB或更大),则Atlas可以从内存中为搜索索引提供服务大部分数据,从而最大限度地减少磁盘读取和页面错误,从而提高性能。

注意

用于搜索节点的本地固态硬盘需要 20% 的存储开销来支持索引操作。

MongoDB 仅支持在专用(M10 或更高版本)集群上使用单独的搜索节点。搜索节点部署在计算密集型 NVMe 实例上。必须至少部署两个节点。每天将按每个节点的每小时资源使用量向您收费。如要了解更多信息,请参阅搜索节点成本。

您可以为搜索节点上的所有数据启用“使用客户数密钥管理进行静态加密”,从而使用客户管理的加密密钥来保护您的Atlas Search工作负载。要学习;了解更多信息,请参阅为搜索节点启用客户数密钥管理。

此功能目前仅适用于 AWS KMS

通过向新集群添加专用搜索节点,您可以:

  • 独立于集群更改搜索部署的大小和扩展。

  • 消除在同一节点上同时运行MongoDB 数据库和搜索进程的集群上可能出现的资源争用情况。

要添加专用搜索节点,请执行以下操作:

  1. M10在支持节点隔离性的云提供商和地区中将集群创建为 或更层级。要学习;了解更多信息,请参阅创建集群。

    M10 及更高集群层以及支持节点隔离性的云提供商区域支持专用搜索节点。

  2. 启用 Search Nodes for workload isolation配置搜索节点。

要从暂存迁移到生产并添加专用搜索节点,请对现有的暂存和原型部署进行以下更改:

  1. 如果您的部署使用 Flex集群或共享层级集群,请将集群层更改为更高的层级。仅 M10 及更高集群层支持专用搜索节点。

  2. 在也可以使用搜索节点的区域部署集群。专用搜索节点在部分AWSAzure区域以及所有支持的 Google Cloud 区域中可用。如果现有集群托管在搜索节点不可用的区域,请将集群迁移到搜索节点可用的区域。要学习;了解更多信息,请参阅支持节点隔离的云提供商区域。

  3. 启用 Search Nodes for workload isolation 并配置搜索节点。要了解更多信息,请参阅添加搜索节点

    部署专用搜索节点时,会执行以下操作顺序:

    • Atlas在搜索节点上构建搜索索引,并从集群节点中删除索引。

    • Atlas将搜索路由到搜索节点。

    • Atlas Search使用搜索索引来提供服务对Atlas 集群的查询。

如果部署 mongot 以与 mongod 一起运行且 未配置 搜索节点,则 mongot 可能会在以下任一事件期间终止并返回 Failed to Execute search Command 错误:

  • 扩展集群

  • 节点故障转移

  • 正在升级 mongot

如果在专用搜索节点上部署mongotmongod 会使用代理,仅将搜索查询路由到 mongot进程处于活动状态的正常节点。

后退

查询

在此页面上