mongodb中的强制分片,标签感知分片?
我感兴趣的是构建一个系统来查询大量独立机器上生成的日志文件 我不想将它们全部发送到一个中央数据库,而是将整个机器视为一个分布式数据库 现在我正看着Mongo做这件事。每台机器的日志将是存储在该机器上的一个碎片 数据丢失很好,完全不需要冗余。非常重要的是,每台机器对一个碎片负责,并且只包含它生成的日志 通读文档,似乎更常见的用例是支持冗余和自动平衡。看起来标记感知切分可以实现我想要的功能:mongodb中的强制分片,标签感知分片?,mongodb,sharding,Mongodb,Sharding,我感兴趣的是构建一个系统来查询大量独立机器上生成的日志文件 我不想将它们全部发送到一个中央数据库,而是将整个机器视为一个分布式数据库 现在我正看着Mongo做这件事。每台机器的日志将是存储在该机器上的一个碎片 数据丢失很好,完全不需要冗余。非常重要的是,每台机器对一个碎片负责,并且只包含它生成的日志 通读文档,似乎更常见的用例是支持冗余和自动平衡。看起来标记感知切分可以实现我想要的功能: 因为我对Mongo比较新,所以我想在进行深入研究之前,我应该先征求一些有经验的意见。我想在这里做的是不弯曲工
因为我对Mongo比较新,所以我想在进行深入研究之前,我应该先征求一些有经验的意见。我想在这里做的是不弯曲工具吗?在继续之前,我应该知道这个用例有什么大的优点/缺点吗?获得以下问题的答案应该有助于您设计系统
- 你说的是多少个日志主机
- 这些主机是否分布在不同的地理位置
- 每单位时间要存储多少个日志条目?(例如,每天100万欧元?)
- 您希望将日志条目保留多长时间
- 如果你丢失了数据,你在乎吗
- 如果带有DB的主机出现故障,是否希望故障切换到另一个系统
如果您决定使用分片,并且每个分片都有一个不同的“标签”,那么分片之间不应该发生平衡。当MongoDB检测到一个碎片比另一个碎片大时,就会发生平衡。然后,它将文档从大碎片移动到较小的碎片。如果您强制文档位于带有“标记”的特定碎片上,那么它们将无法移动。谢谢您的回答。出于好奇,为了回答您的问题,该系统有一个上万台机器的高端用例,并且由于数据隐私原因,无法跨碎片共享日志。我应该有足够的信息从这里开始!