mongodb - 具有重复文档的 MongoDB 分片
问题描述
我是 mongodb 的新手,希望使用 docker-compose 和 mongodb 创建一个分布式数据库环境。我创建了多个带有分片的 docker 来模拟多个站点。但是,我无法将同一组文档复制到多个分片中。
例如,我有一个带有值“A”和“B”的键的集合。我想将此集合分配到 2 个碎片中
分片 1 = A & B
分片 2 = 仅 B
但是,当我运行平衡器时,它会将所有 A 分配到分片 1 中,将 B 分配到分片 2 中。有什么方法可以对重复数据进行分片,还是我使用了错误的方法来解决我的问题?
解决方案
您可能错误地接近分片(水平缩放)。在 Mongo 中进行分片的原因是分片键的选择使得它产生的(垂直)分片具有大致均匀的数据分布,或类似数量的 Mongo 文档。使其工作良好的分片要求是查询通常仅定向到单个分片。如果您有查询需要返回一些具有不同 A 和 B 值的字段,那么这意味着该字段不应该是分片键。查询可以跨分片,但某些跨分片操作(例如连接)可能非常昂贵。在您的特定情况下,也许其他一些字段可以用作分片键。
推荐阅读
- php - WordPress AuthorBox 自定义不起作用。我究竟做错了什么?
- replace - 如何仅在功能块代码中搜索/替换(Atom)?
- pandas - 将 fillna() 与当前行中的值一起使用时的 SettingWithCopyWarning
- c# - 检查用户是否在对象列表中输入重复项的最简单方法?
- pdf - 在 Windows 10 64 位分段错误上使用 Fitz 将 PDF 转换为图像
- c# - C# Func<> - 寻找解释 - 不是解决方案
- excel - VBA Validate Combobox Value
- javascript - WebRTC 不显示远程媒体
- java - Getting a ClassNotFoundException when starting Tomcat 9 after upgrading to Java 11
- javascript - How to rename files in Google Script conditioned to something