Библиотека RRD для обработки данных временных рядов в приложении Python
Я работаю над механизмом моделирования с использованием Python, где я собираю много метрик. Моделирование выполняется с высокой скоростью и генерирует около 100 тыс. Событий в секунду (я могу выполнить некоторую обработку, консолидируя эти события в секунду). Я ищу механизм для записи этих метрик в виде временного ряда.
Мои требования:
Я хотел бы, чтобы этот механизм регистрации был в том же процессе, что и симуляция, в отличие от внешнего процесса, такого как графит
Механизм должен быть способен обрабатывать 100 тыс. Событий в секунду без замедления симуляции.
Я хотел бы хранить данные следующим образом: все данные, относящиеся к метрике, должны храниться с 1-секундной детализацией в течение 60 минут, 1-минутной детализацией в течение 1 дня, 5-минутной детализацией в течение двух дней, 1-часовой детализацией в течение 6 месяцев и 1-дневной детализацией в течение 3 годы продолжительности. Я хотел бы, чтобы этот механизм обрабатывал консолидацию данных в соответствии с указанными диапазонами.
В идеале я хочу сохранить один файл, который содержит информацию о метриках для одного прогона моделирования. Для другого запуска симуляции должен быть создан отдельный файл.
Было бы неплохо иметь хорошо протестированную библиотеку / модуль, который легко доступен:)
Кстати, я бросил беглый взгляд на RRDTool, но из того, что я понимаю, похоже, что библиотека Python - это тонкая оболочка для двоичного файла RRDTool. Я ищу более тесную интеграцию, если это возможно.
ТИА
1 ответ
Функциональность, предоставляемая RRDTool, соответствует моим требованиям. Сначала я нашел библиотеку Python https://pypi.python.org/pypi/python-rrdtool/ и неправильно понял природу интеграции. Я думал, что он исполняет двоичный файл RRDTool как отдельный процесс, но в документации говорится, что это надлежащая оболочка, доступная для Python, которая вызывает функциональность в том же пространстве процесса.
Позже я обнаружил эту ( https://pypi.python.org/pypi/PyRRD) библиотеку Python, которая упаковывает функциональность RRDTool в более питонную форму OOPS, с которой мне было удобно работать. Документация, доступная на странице ссылок, была хорошей, поэтому я не столкнулся с препятствиями при ее использовании.
Эта ссылка ( http://www.vandenbogaerdt.nl/rrdtool/tutorial/rrdcreate.php) была полезна для выяснения того, как настроить базу данных RRD во время создания.