目前,我正在探索mongo db中的数据库分片是如何工作的。
我的用例是在我的web应用程序中有许多产品,如电子产品/婴儿用品/书籍/衣物等。假设我想在不同的数据库(在不同的机器上)存储不同的产品,以分配负载,并在需要时扩大规模。
我的问题是mongo db有责任根据产品类型将产品存储在正确的db中,而我的webserver java代码将完全不知道这一点?Mongo DB支持这个吗?
否则,将由webserver java代码负责连接到要存储的正确数据库
产品的类型?

最佳答案

是的,MongoDB支持您所描述的。Sharding in MongoDB是MongoDB允许向外扩展/水平扩展的方式。它需要一个分片键,用于决定分片集合中的文档(在您的案例中是一个产品)最终将使用哪个分片。听起来你想用产品类型作为切分键。mongodb负责根据shard key将文档定向到shard。对于链接的web页面,web服务器将连接并向mongos查询路由器实例发送查询,后者将根据shard key将查询适当地路由到shard。
但切分键的选择不应掉以轻心。如果选择得不好,几乎所有查询都会转到一个shard。阅读shard关键因素(如基数、频率和更改速率)如何影响shard性能here

关于java - MongoDB中的数据库分片?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40967206/

10-10 17:34