に参加しますどのマシンが最後の10分間にpingを送信したのかを知る必要があります。MongoDBのスキーマの設計は/私はSQLでの強力なバックグラウンドを持つMongoDBのに新たなんだと次のシナリオを設計するための理想的な方法だか分からないmonogoデシベル
私は2つのコレクションがあります。
pings
- 非常に大きなコレクションを、各マシンは、10分毎程度にpingを送信します。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})のような単純なクエリを実行すればよいだけです。 –
Hm ..私はあなたが言っていることを理解しています、それはSQLのすべての正規化の後でそれを考えるのは少し厄介です... sqlからmongoへの "migration"チュートリアルを知っていますか?おそらくSQLで実装されているシナリオとそれがMongoでどのように実装されているのでしょうか? – Michael