我是新来的MongoDB在SQL强大的背景,不知道什么是设计以下场景的理想方式:MongoDB的架构设计/参与monogo分贝
我已经设置发送ping来机主机,我需要知道哪些机器在过去10分钟内发送了ping。
我有2个类别:
pings
- 一个非常大的集合,每个机发送ping大约每隔10分钟。machines
- 漂亮的小集合,约少1000台机器
,我需要查询的“活着”的机器,即所有在最后10分钟发送Ping的机器。
目前我的模式是这样的:MongoDB中
pings = {
_id - ObjectID
machineID - ObjectID
pingTime - ISODate
}
machines = {
_id - ObjectID
name - String
type - string
}
谢谢,我想过冗余(它被称为在mongo中嵌入不是?)但如果我还想要关于机器的一堆属性呢?所以我会以一个大的ping文档结束......我不知道mongo是否适合我的用例,或者我应该留在RDBMS中...... – Michael
@Michael因此,您应该直接得到所有问题*首先* ,在建模之前。但是,对于发送ping的主机,您有一个有效的查询,现在您可以为有限的子集执行'db.machines.find({name:{$ in:resultset}})'。更好的是,假设你想要一个细节页面,你只需要做一个简单的查询,比如'db.machines.find({name:nameOfMachineYouWantTheDetailsFor})''。 –
嗯..我明白你说了什么,在SQL中进行所有标准化之后,再想这么做... 你知道从sql到mongo的“迁移”教程吗?也许在SQL中实现的场景以及它在Mongo中如何实现? – Michael