Tôi đề nghị một mục nhập chuỗi thời gian duy nhất cho mỗi tài liệu. Có một số vấn đề với việc lưu trữ nhiều mục trên mỗi tài liệu:
- một tài liệu duy nhất được giới hạn ở một kích thước nhất định (hiện tại là 16 MB); điều này giới hạn số lượng mục có thể được lưu trữ trong một tài liệu
- khi nhiều mục nhập được thêm vào tài liệu, toàn bộ tài liệu (và chuỗi thời gian) sẽ không cần phải xóa và phân bổ lại thành một phần bộ nhớ lớn hơn
- truy vấn trên tài liệu phụ bị giới hạn so với truy vấn trên tài liệu thông thường
- tài liệu có cấu trúc rất phẳng (như một tài liệu phụ cho mỗi giây) không được thực hiện
- tính năng giảm bản đồ tích hợp không hoạt động tốt trên các tài liệu phụ
Cũng lưu ý rằng dấu thời gian được tích hợp vào đối tượng MongoDB mặc định . Bạn có thể sử dụng điều này nếu độ chính xác của chuỗi thời gian ít hơn một giây.
Dưới đây là một tài liệu BSON mẫu từ thư viện ghi nhật ký sự kiện sử dụng MongoDB :
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
}
}
Vì nhật ký sự kiện tương tự như chuỗi thời gian, có thể đáng để nghiên cứu phần còn lại của mã . Có các phiên bản trong Java, C #, PHP và Python.
Đây là một dự án nguồn mở tương tự khác: Zarkov
[cập nhật] Đáp lại bình luận của @ RockScience, tôi đã thêm một số tài liệu tham khảo: