Saya menyarankan entri seri waktu tunggal per dokumen. Ada beberapa masalah dengan menyimpan beberapa entri per dokumen:
- satu dokumen terbatas pada ukuran tertentu (saat ini 16 MB); ini membatasi berapa banyak entri yang dapat disimpan dalam satu dokumen
- karena lebih banyak entri ditambahkan ke dokumen, seluruh dokumen (dan seri waktu) tidak perlu dihapus dan dialokasikan kembali ke memori yang lebih besar
- pertanyaan pada sub-dokumen terbatas dibandingkan dengan permintaan pada dokumen biasa
- dokumen dengan struktur yang sangat datar (seperti satu sub-dokumen untuk setiap detik) tidak memiliki kinerja
- pengurangan peta bawaan tidak berfungsi dengan baik pada sub-dokumen
Perhatikan juga stempel waktu bawaan ke ObjectId MongoDB default . Anda dapat menggunakan ini jika ketepatan deret waktu kurang dari satu detik.
Berikut adalah contoh dokumen BSON dari pustaka pencatatan peristiwa yang menggunakan 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
}
}
Karena log peristiwa mirip dengan rangkaian waktu, mungkin ada baiknya mempelajari sisa kode . Ada versi dalam Java, C #, PHP, dan Python.
Berikut ini adalah proyek open source serupa lainnya: Zarkov
[pembaruan] Menanggapi komentar @ RockScience, saya telah menambahkan beberapa referensi lagi: