Позвольте мне начать с того, что у меня ограниченный опыт работы с SQL, но я искал несколько дней, чтобы найти хорошее решение для своей проблемы, и пока не нашел его. Если существует очевидный ответ, я не использовал правильные ключевые слова, чтобы найти его.
У меня есть аппаратная система сбора данных, которая вставляет строку состояния системы в таблицу каждые 10 минут в течение длительных периодов времени. Данные используются в качестве диагностической информации в случае сбоя оборудования. Таблица содержит записи для нескольких устройств, которые идентифицируются с помощью уникального столбца DeviceID. Я планирую хранить не более 100 тыс. записей в этой таблице для каждого устройства. Планирую изредка уплотнять таблицу по следующему алгоритму:
Когда количество строк для определенного DeviceID превышает 100 КБ, выберите самые старые 50% строк для определенного DeviceID и удалите каждую вторую из этих строк, начиная со второй строки в выборе.
Этот алгоритм имеет желаемую функцию, заключающуюся в том, что самые последние данные сохраняются с 10-минутными интервалами, а более старые данные постепенно расширяются во времени. Также первая (самая старая) запись никогда не удаляется.
Я могу легко реализовать это на C# с несколькими удалениями одной строки после запроса на выбор самых старых 50 000 строк. Я надеюсь, что кто-то знает гораздо лучший способ сделать это.
Если это поможет, я могу реорганизовать данные, чтобы у каждого устройства была отдельная таблица, но это усложняет представление данных для просмотра в одном виртуализирующем представлении сетки на C#.
Спасибо за вашу помощь.