【发布时间】:2014-02-15 05:27:53
【问题描述】:
我们正在使用 Mongo 来托管多租户应用程序。每个租户都将拥有自己的数据库。为了解决资源利用问题,我们采用的方法是按数据库分片(而不是按集合 - 如果使用正确的话)。
这意味着我们将为每 x 个租户创建一个新的 3 节点副本集。因此,我们可能在一个分片上有 1000 个租户,在另一个分片上有另外 1000 个租户。
我的问题是关于新注册数据库的位置。我们将采取的方法是将一个分片标记为“活动”分片并在该分片上创建所有新租户。当它达到容量时,创建一个新的分片,将其标记为活动分片并继续。
你可以直接在 Mongo 中选择在哪个分片上创建新数据库吗?如果留给 Mongo,据我了解,当有多个分片时,它将以循环方式进行,这可能会使我们的分片不平衡。
这是正确的方法还是有其他更好的方法?
【问题讨论】:
-
如果shard key是'tenant id',并且这个id是一个简单的递增计数器,新租户的数量总是比旧的多,那么我认为你描述的行为应该自动发生
-
分片键不是在集合级别定义的吗?在这种情况下,数据库标识符将用于区分租户(具有不同的租户 ID 作为数据库名称的一部分),而不是分片键。由于我们不按集合进行分片,我不知道这将如何工作?
标签: mongodb multi-tenant saas