Мое приложение создает вращающиеся файлы журналов, содержащие несколько показателей приложения. Файл журнала меняется раз в минуту, но каждый файл по-прежнему относительно большой (более 30 МБ, со 100 тыс. строк).
Я хотел бы передавать журналы в PipelineDB (работающую на том же одном компьютере), которую Countiuous View может создать для меня именно те агрегации, которые мне нужны по метрикам.
Я могу легко отправить журналы в PipelineDB, используя копирование из стандартного ввода, что отлично работает.
Однако компьютер может иногда неожиданно отключаться (например, из-за нехватки электроэнергии) во время копирования файла журнала. Это означает, что при возвращении в оперативный режим возникает неуверенность в том, какая часть файла была вставлена в PipelineDB.
Как я могу гарантировать, что каждая строка в моих журналах вставляется ровно один раз в таких случаях? (Очень важно, чтобы я получал полные и точные агрегаты)
Обратите внимание, что каждая строка в файле журнала имеет уникальный идентификатор (серийный номер, созданный моим приложением), но я не могу найти в документах возможность определить уникальное поле в потоке. Я предполагаю, что дизайн PipelineDB не предназначен для обработки уникальных полей в строках потока.
Тем не менее, есть ли альтернативные решения этой проблемы?