当 reading/writing 到分片 MongoDB 中的单个分片时,可能会出现什么问题?
What Issues could arise, when reading/writing to a single shard in a sharded MongoDB?
在官方 MongoDB 文档中指出:
“客户端永远不应连接到单个分片以执行读取或写入操作。” Source
我确实尝试将一些数据写入单个分片节点并且它有效,但它不是一个大数据集(当然不是需要分片的数据集)。
这会导致其他我还不知道的问题吗?
或者仅仅因为性能原因,客户不鼓励这样做?
在分片集群中,各个分片包含数据,但一些操作状态存储在 mongos
个节点上。当您与单个分片通信时,您会绕过 mongos
es 以及它们将执行的任何状态管理。
根据操作的不同,这可能是无害的,也可能会导致意外的 behavior/wrong 结果。
没有完整的问题列表,因为直接分片访问的场景没有经过测试(因为它不受支持)。
问题是,默认情况下您不知道哪个数据部分存储在哪个分片上。平衡器在后台 运行,可能随时更改数据分布。
如果您手动将一些数据插入一个分片,则正确连接的客户端可能找不到这些数据。
如果你从单个分片读取一些数据,那么你不知道这个数据是否完整。
在官方 MongoDB 文档中指出: “客户端永远不应连接到单个分片以执行读取或写入操作。” Source
我确实尝试将一些数据写入单个分片节点并且它有效,但它不是一个大数据集(当然不是需要分片的数据集)。
这会导致其他我还不知道的问题吗?
或者仅仅因为性能原因,客户不鼓励这样做?
在分片集群中,各个分片包含数据,但一些操作状态存储在 mongos
个节点上。当您与单个分片通信时,您会绕过 mongos
es 以及它们将执行的任何状态管理。
根据操作的不同,这可能是无害的,也可能会导致意外的 behavior/wrong 结果。
没有完整的问题列表,因为直接分片访问的场景没有经过测试(因为它不受支持)。
问题是,默认情况下您不知道哪个数据部分存储在哪个分片上。平衡器在后台 运行,可能随时更改数据分布。
如果您手动将一些数据插入一个分片,则正确连接的客户端可能找不到这些数据。
如果你从单个分片读取一些数据,那么你不知道这个数据是否完整。