我正在从流式 API 收集数据,我想创建一个实时分析仪表板。此仪表板将显示一个简单的时间序列,绘制每小时的文档数量。我想知道我目前的方法是否最佳。
在以下示例中,为流中的每个新文档触发 on_data。
# Mongo collections.
records = db.records
stats = db.records.statistics
on_data(self, data):
# Create a json document from data.
document = simplejson.loads(data)
# Insert the new document into records.
records.insert(document)
# Update a counter in records.statistics for the hour this document belongs to.
stats.update({ 'hour': document['hour'] }, { '$inc': { document['hour']: 1 } }, upsert=True)
以上工作。我得到了一个漂亮的图表,它绘制了每小时的文档数量。我的问题是这种方法是否最佳。我对每个文档提出两个 Mongo 请求。第一个插入文档,第二个更新计数器。流每秒发送大约 10 个新文档。
例如有没有告诉 Mongo 将 db.records.statistics 保存在 RAM 中?我想这会大大减少我服务器上的磁盘访问。