gpt4 book ai didi

用于 Multi-Tenancy 的 MongoDB 'Manually Sharding'

转载 作者:可可西里 更新时间:2023-11-01 09:52:22 27 4
gpt4 key购买 nike

我们正在使用 Mongo 来托管 Multi-Tenancy 应用程序。每个租户都将拥有自己的数据库。为了解决资源利用问题,我们采用的方法是按数据库进行分片(而不是按集合 - 如果使用的术语正确的话)。

这意味着我们将为每 x 个租户创建一个新的 3 节点副本集。例如,我们可能在 1 个分片上有 1000 个租户,在另一个分片上有另外 1000 个租户。

我的问题是关于新注册数据库的放置。我们打算采取的方法是将一个分片标记为“事件”分片并在该分片上创建所有新租户。当它达到容量时,创建一个新分片,将其标记为事件分片并继续。

您可以直接在 Mongo 中选择在哪个分片上创建新数据库吗?如果留给 Mongo,据我所知,当有多个分片时,它将以循环方式进行,这可能会使我们的分片不平衡。

这是正确的方法还是有更好的替代方法?

最佳答案

您可以使用 shard tags强制某些集合仅驻留在特定的分片上。因此,例如,您可以使用序列号标记每个分片,并使用该标签标记您想要在该分片上拥有的集合/数据库,直到它运行满,此时您创建一个新分片,增加计数器并使用对于新数据。

另一个选择是完全不在单个数据库上启用分片,并使用 movePrimary命令强制特定分片充当特定数据库的主分片。由于数据库不会分片,因此其所有数据将保留在其指定的主分片上,这正是您想要的。

话虽这么说,但在我看来,这种方法与分片的概念本身存在冲突,分片的意思是自动在多台机器上均匀分布数据。

关于用于 Multi-Tenancy 的 MongoDB 'Manually Sharding',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21328954/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com