문서 당 단일 시계열 항목을 제안합니다. 문서 당 여러 항목을 저장하는 데 몇 가지 문제가 있습니다.
- 단일 문서는 특정 크기 (현재 16MB)로 제한됩니다. 단일 문서에 저장할 수있는 항목 수를 제한합니다.
- 더 많은 항목이 문서에 추가되면 전체 문서 (및 시계열)가 불필요하게 삭제되고 더 큰 메모리에 재 할당됩니다.
- 하위 문서에 대한 쿼리는 일반 문서에 대한 쿼리와 비교하여 제한됩니다
- 매우 평평한 구조의 문서 (예 : 초당 하나의 하위 문서)는 성능이 떨어집니다
- 내장 된 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 버전이 있습니다.
또 다른 유사한 오픈 소스 프로젝트가 있습니다 : Zarkov
[업데이트] @RockScience의 의견에 따라 몇 가지 참조를 추가했습니다.