Atlas Search 部署选项
您可以使用不同的部署类型、云提供商和集群层来构建 Atlas 集群,以满足预生产或生产环境的需求。 使用这些建议来选择部署类型、云提供商和区域以及用于执行向量Atlas Search的集群和Atlas Search层。
environment | 部署类型 | 集群层 | 云提供商地区 | 节点架构 |
---|---|---|---|---|
测试查询 | Shared or dedicated cluster Local deployment | M0 , M2 , M5 , or higher tierN/A | All N/A | MongoDB和Atlas Search进程在同一节点上运行 |
应用程序原型设计 | 专用集群,分片或非分片 | M10 、 M20 或更高层 | 所有 | MongoDB和Atlas Search进程在同一节点上运行 |
生产 | 具有独立搜索节点(分片或未分片)的专用集群 | M10 或更高集群层以及S10 或更高搜索层 | 某些地区使用AWS ,或所有地区使用 Google Cloud 和Azure | MongoDB和Atlas Search进程在不同节点上运行 |
要了解有关这些部署模型的更多信息,请查看以下部分:
测试和原型环境
为了测试搜索查询和构建应用程序原型,我们建议采用以下配置。此配置最适合以下使用案例:
要索引的总文档少于2 M。
索引数据少于10 GB。
少于10 , 7天内有000次查询。
如果您的使用量超过列出的值,请迁移到单独的搜索节点。
部署类型
要测试 Atlas Search 查询,您可以部署共享或专用集群或本地 Atlas 部署。
如果您希望在本地测试 Atlas Search 查询,则可以使用 Atlas CLI 部署在本地计算机上托管的单节点副本集。要了解更多信息,请参阅创建本地 Atlas 部署。
当您的应用程序准备好投入生产时,使用实时迁移将本地 Atlas 部署迁移到生产环境。本地部署受到本地计算机的 CPU、内存和存储资源的限制。
节点架构
在此部署模型中,搜索mongot
进程与 Atlas 集群中的每个节点上的mongod
一起运行。 mongod
进程将查询路由到同一节点上的mongot
,并且它们共享相同的资源。
默认情况下,当您创建第一个 Atlas Search 索引时,Atlas 在运行mongod
进程的同一节点上启用搜索mongot
进程。 mongot
进程执行关于mongot
进程中描述的操作。
您可以在 Atlas Search 索引中定义存储的源字段,以便mongot
进程可以在mongot
上存储指定字段。然后,您可以在 Atlas Search 查询中使用returnStoredSource 选项,直接从mongot
检索存储的字段以匹配文档,而无需对数据库进行完整文档查找。
收益分析
启用 Atlas Search 后,您可以使用完全托管的集成搜索引擎(自动同步到数据库)轻松地在数据上构建搜索。 Atlas Search 提供了一种丰富的查询语言,该语言使用 Atlas Search 聚合管道阶段(例如与其他 MongoDB 聚合管道阶段结合使用$search
和$searchMeta
进行全文搜索以及$vectorSearch
进行语义搜索)以及基于分数的结果排名。
与在单独的专用节点上运行搜索进程相比,在同一节点上部署这两个进程可能更具成本效益,具体取决于为集群预配的资源。
限制
您无法为无服务器集群单独部署搜索节点。
您可能会遇到数据库mongod
和搜索mongot
进程之间的资源争用。这可能会对索引性能和查询延迟产生负面影响。我们建议仅将这种部署模型用于测试和原型设计环境。对于生产就绪的应用程序和相关搜索工作负载,我们建议迁移到专用搜索节点。
成本
在 Atlas 集群上启用 Atlas Search 时,无需支付额外费用或收费。但是,您可能会发现集群上的资源利用率有所增加,具体取决于索引集合大小或索引定义等因素。
生产环境
对于生产就绪的应用程序,我们建议使用以下集群配置。此配置非常适合以下使用案例:
要索引的文档总数超过2 M。
超过10 GB 的索引数据。
大于10 , 7天内有000次查询。
部署类型
对于生产就绪的应用程序,您需要专用的集群。
Cluster Tiers
专用集群包括M10
和更高层级。 M10
和M20
层适用于开发和生产环境。但是,较高的层级可以处理大型数据集和生产工作负载。我们建议您还为搜索工作负载部署专用搜索节点。这样,您就可以独立、适当地扩展搜索部署。
云提供商和地区
搜索节点在 Google Cloud 和Azure的所有区域中可用,但仅在部分AWS区域中可用。您必须选择搜索节点可用于您的部署的云提供商和区域。
所有集群层在支持的云提供商地区均可用。您选择的云提供商和区域会影响可用于集群的配置选项和搜索层以及运行集群的成本。
节点架构
在此部署模型中, mongot
进程在搜索节点上运行,这些节点与运行mongod
进程的集群节点是分开的。 Atlas 为每个集群或集群上的每个分片部署搜索节点。
例如,如果您为具有三个分片的集群部署两个搜索节点,则 Atlas 会部署六个搜索节点,每个分片两个。您还可以配置搜索节点的数量以及为每个搜索节点预配的资源量。
当您部署单独的搜索节点时,Atlas 会自动为每个mongod
分配一个mongot
以便编制索引。mongot
与mongod
通信,侦听并同步其存储的索引的索引更改。 Atlas Search 对查询进行索引和处理的情况与mongod
和mongot
进程在同一节点上运行时类似。要了解更多信息,请参阅 创建和管理 Atlas Search 索引 以及 创建和运行 Atlas Search 查询 。要了解有关单独部署搜索节点的更多信息,请参阅 用于隔离工作负载的搜索节点。
当您迁移到搜索节点时,Atlas 会部署搜索节点,但在这些节点上成功构建集群上的所有索引之前,不会在这些节点上提供查询服务。当 Atlas 在新节点上构建索引时,它会继续使用集群节点上的索引来提供查询服务。 Atlas 仅在成功在搜索节点上构建索引并删除集群节点上的索引后,才开始为来自搜索节点的查询提供服务。
如果删除集群上的所有搜索节点,则在处理搜索查询结果时会出现中断。要了解更多信息,请参阅修改集群。如果删除 Atlas 集群,Atlas 会暂停,然后删除所有关联的 Atlas Search 部署( mongot
进程)。
您可以在 Atlas Search 索引中定义存储的源字段,以便mongot
进程可以在mongot
上存储指定字段。然后,您可以在 Atlas Search 查询中使用returnStoredSource 选项,直接从mongot
检索存储的字段以匹配文档,而无需对数据库进行完整文档查找。
收益分析
单独部署搜索节点具有以下优势:
- 高可用性
- 当您部署单独的搜索节点时,Atlas 会至少实施两个搜索节点,以确保您的工作负载在发生故障或中断时保持正常运行,并最大限度地减少停机时间。
- 可扩展性
部署单独的搜索节点时,您可以执行以下操作:
独立于 MongoDB 集群扩展存储和计算。
独立于 MongoDB 扩展查询负载。
您可以水平和垂直扩展搜索节点。
您可以增加或减少搜索节点的数量并水平扩展集群。您可以预配最少2个到最多32搜索节点(含)。 Atlas Search 通过循环浏览可用搜索节点列表来分配查询以在搜索节点上执行,从而平衡所有预配节点之间的查询负载。
您可以为搜索节点选择不同的搜索层级。不同的搜索层级使您能够选择最适合您的全文和向量工作负载的 CPU、RAM 和存储配置。
- 性能
部署单独的搜索节点时,可以提高
mongod
和mongot
进程的性能和资源利用率,并消除两个进程之间的资源争用。专用搜索节点支持并发段搜索,这允许 Atlas Search 同时搜索多个索引段,并在某些情况下缩短查询响应时间。要了解更多信息,请参阅跨分段并行查询执行。
调整集群大小和扩展
要确定搜索节点上所需的内存量,请使用以下 Atlas 指标:
搜索索引的大小
搜索节点上的总 RAM
例如,考虑以下情况:
搜索索引的大小 = 10 GB
搜索节点上的总 RAM = 4 GB
在4 GB 的 RAM 中,假设其他进程使用了1 GB,只有3 GB 可用于索引数据。因此,剩余7 GB 的索引数据 ( 10 GB - 3 GB = 7 GB) 会根据需要从磁盘调入。频繁从磁盘 ( 7 GB) 进行分页会导致页面错误、磁盘 I/O 和 CPU IOWait 增加,从而导致性能下降。
具有更多 RAM( 8 GB 或更大)的更高搜索层允许从内存提供搜索索引的大部分数据,最大限度地减少磁盘读取和页面错误,从而提高性能。
注意
用于搜索节点的本地固态硬盘需要 20% 的存储开销来支持索引操作。
搜索节点成本
MongoDB 支持在专用( M10
或更高)集群上使用单独的搜索节点。搜索节点部署在计算密集型 NVMe 实例上。您必须至少部署两个节点。每天将按每个节点的每小时资源使用量向您收费。要了解更多信息,请参阅搜索节点成本。
迁移到专用Atlas Search节点
使用专用搜索节点,您可以独立于集群调整和扩展搜索部署。它还消除了在同一节点上运行数据库和搜索进程的集群上可能遇到的任何资源争用。
要迁移到专用搜索节点,请对部署进行以下更改:
如果您的部署当前使用的是共享层,请将集群升级到更高的层。仅
M10
及更高集群层支持专用搜索节点。要了解有关迁移到不同集群层的更多信息,请参阅修改 Cluster Tier 。专用搜索节点在部分AWS区域以及所有支持的 Google Cloud 和Azure区域中可用。确保将集群部署在搜索节点也可用的区域。如果您的现有集群位于搜索节点不可用的地区,请将集群迁移到搜索节点可用的地区。要了解更多信息,请参阅云提供商区域。
启用Search Nodes for workload isolation并配置搜索节点。要了解更多信息,请参阅添加搜索节点。
当您部署单独的搜索节点时,Atlas Search 继续使用 Atlas 集群上的索引提供查询服务,同时 Atlas 在搜索节点上构建索引。 Atlas 仅在完成以下操作后才会将查询路由到搜索节点:
已在搜索节点上成功构建所有索引。
从集群节点中删除搜索索引。