次の時系列データをmongodbに持っていますMongoDBで時系列データを効率的に更新するには
チャンネルコレクションには各チャンネルに関するデータがあります。 各チャネルドキュメントには、そのチャネルの時系列データを保持するjson配列であるリアルタイムデータ - > rtDataがあります。
db.channels.findは({})。かなり()と同様の構造に
今{
channelName:"ABC",
rtData:[
{
ts:ISO_DATE(timestamp),
data:[12, 14]
},
{
ts:ISO_DATE(timestamp),
data:[12, 14]
},
{
ts:ISO_DATE(timestamp),
data:[12, 14]
},
.
.
.
},
{
channelName:"NBC",
rtData:[
{
ts:ISO_DATE(timestamp),
data:[12, 14]
},
{
ts:ISO_DATE(timestamp),
data:[12, 14]
},
{
ts:ISO_DATE(timestamp),
data:[12, 14]
},
.
.
.
},
を与え、4秒ごとに私は1つまたは複数のチャネル
{
ts: ISO_DATE(timestamp),
data: [14,15]
}
の更新されたレコードを取得しますこのレコードは、そのチャンネルのrtData配列でプッシュ/更新する必要があります。
だから何私がやったことはこれに似たものだった -
channels.findOne({query}, function(channel) {
channel.rtData.push(newData);
channels.findAndModify({query}, {$set:{rtData: channel.rtData}},
function({}))
})
、チャンネルを探すrtData配列にデータをプッシュして検索を行うと、変更します。
これは、データ量が少ない場合に動作するようです。しかし、1つのチャンネルのrtData配列に近い50Kの要素がある場合、アプリケーションはそれを処理できません。
時系列データを効率的に更新できますか?