ドキュメントごとに1つの時系列エントリをお勧めします。ドキュメントごとに複数のエントリを保存すると、いくつかの問題があります。
- 1つのドキュメントは特定のサイズ(現在は16 MB)に制限されています。これにより、1つのドキュメントに保存できるエントリの数が制限されます
- ドキュメントにエントリが追加されると、ドキュメント全体(および時系列)が不必要に削除され、より大きなメモリに再割り当てされます。
- サブドキュメントに対するクエリは、通常のドキュメントに対するクエリに比べて制限されています
- 非常にフラットな構造のドキュメント(毎秒1つのサブドキュメントなど)はパフォーマンスが良くありません
- 組み込みのmap-reduceはサブドキュメントではうまく機能しません
また、タイムスタンプがデフォルトのMongoDB ObjectIdに組み込まれていることにも注意してください。時系列の精度が1秒未満の場合に使用できます。
ここでのMongoDBを使用してイベントロギングライブラリから例のBSONドキュメントは:
Example format of generated bson document:
{
'thread': -1216977216,
'level': 'ERROR',
'timestamp': Timestamp(1290895671, 63),
'message': 'test message',
'fileName': '/var/projects/python/log4mongo-python/tests/test_mongo_handler.py',
'lineNumber': 38,
'method': 'test_emit_exception',
'loggerName': 'testLogger',
'exception': {
'stackTrace': 'Traceback (most recent call last):
File "/var/projects/python/log4mongo-python/tests/test_mongo_handler.py", line 36, in test_emit_exception
raise Exception(\'exc1\')
Exception: exc1',
'message': 'exc1',
'code': 0
}
}
イベントログは時系列に似ているため、コードの残りの部分を調べる価値があるかもしれません。Java、C#、PHP、Pythonのバージョンがあります。
次に、同様のオープンソースプロジェクトをもう1つ示します。
[更新] @RockScienceのコメントに応えて、さらにいくつかの参照を追加しました: