2012-11-18 32 views
2

如果我有一个包含一些分片和非分片集合的数据库。 我可以直接连接到主碎片来访问(包括读取和写入)没有任何问题的硬盘集合吗? 我想这样做,因为我认为连接到mongos只会降低访问未硬拼集合的性能。直接连接到主碎片以访问MongoDB中的硬盘集合

我试过这个,它的工作原理。但是恐怕有一些我在这里不知道的问题。

回答

4

如果我有一个数据库,包含一些分片和不分片的集合。 我可以直接连接到主碎片访问(包括读取 并写入)没有任何问题的硬件集合吗?我想这样做 这是因为我认为连接到mongos只会降低性能 访问硬盘收集。

通常通过mongos进行的连接不会对未取分的集合有显着的性能开销。

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

我试过这个,它的工作原理。但是恐怕有一些我在这里不知道的问题。

此时此方法将工作,因为未加入散列的集合总是位于数据库的主碎片上。

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