2

如果我有一个包含一些分片和非分片集合的数据库。我可以直接连接到主分片以毫无问题地访问(包括读取和写入)非分片集合吗?我想这样做是因为我认为连接mongos只会降低访问非碎片集合的性能。

我已经尝试过了,它有效。但恐怕这里有一些我不知道的问题。

4

1 回答 1

4

如果我有一个包含一些分片和非分片集合的数据库。我可以直接连接到主分片以毫无问题地访问(包括读取和写入)非分片集合吗?我想这样做是因为我认为连接到 mongos 只会降低访问 unshard 集合的性能。

一般来说,通过 连接mongos不应该对您的非分片集合产生显着的性能开销。

还值得注意的是,如果您的其他集合被分片,您的应用程序将无法为分片和非分片集合利用单个连接池,因此您必须在应用程序逻辑中管理它。

我已经尝试过了,它有效。但恐怕这里有一些我不知道的问题。

目前这种方法会起作用,因为未分片的集合总是存在于数据库的主分片上。

但是,请注意,跨分片分发非分片集合的工作正在进行中(请参阅MongoDB Jira 问题跟踪器中的SERVER-939)。当这种变化发生时,您不能再假设未分片的集合存在于主分片中,依靠mongos正确路由会更安全。

于 2012-11-19T03:46:49.207 回答