Хранение большого количества записей данных датчика - PullRequest
3 голосов
/ 20 января 2011

Мне нужно создать базу данных, в которой сохраняются данные датчика, которые будут запрашиваться для создания отчетов позже (отображение графика и значений AVG / MAX / MIN для заданного периода времени).

Точки данных выглядят следующим образом:

CREATE TABLE [dbo].[Table_1](
    [time] [datetime] NOT NULL,
    [sensor] [int] NOT NULL,
    [value] [decimal](18, 0) NULL
)

Данные могут быть добавлены с интервалами от секунд до минут (в зависимости от датчика).

Должен ли я беспокоиться омоя база данных становится слишком большой, когда накапливаются данные за несколько лет (БД будет работать под управлением рабочей группы MS SQL Server 2008)?

Ответы [ 4 ]

3 голосов
/ 21 апреля 2011

Существуют специализированные исторические базы данных, такие как PI Historian от OSISoft, которые обрабатывают этот тип данных намного лучше, чем реляционная база данных.С помощью PI вы можете настроить отклонение сжатия для каждой точки данных, чтобы данные не были заархивированы, если они не изменятся хотя бы на это отклонение сжатия.Когда вы запрашиваете исторические данные для данной точки, вы можете попросить PI выполнить интерполяцию того, какое значение было бы в указанное время, даже если ваш период времени находится между архивированными значениями.намного больше, но вам придется изучить это самостоятельно, потому что я не собираюсь становиться продавцом OSISoft.Тем не менее, это именно тот способ, которым вы хотите хранить большие объемы данных с датчиков.

1 голос
/ 20 января 2011

Все зависит от того, какие ресурсы и усилия вы хотите на это потратить.При скорости 1 строки в секунду эта таблица будет по-прежнему меньше 0,5 ГБ на датчик в год, что очень мало.Если у вас есть тысячи датчиков, вы можете подумать о том, следует ли создавать сводные таблицы для составления отчетов и анализа данных.

Подобные данные датчиков часто очень повторяющиеся.Существуют более удобные способы хранения повторяющихся значений - например, путем сохранения одной строки с диапазоном времени, а не нескольких строк с разным временем.

Существует множество программных пакетов, которые могут помочь с хранением и управлением этим видомданные временного ряда.Существует также значительное количество исследований и литературы по этому вопросу, которые могут вам помочь.Если вы еще не знакомы с ним, то Google использует такие термины, как «Process Historian», «Обработка сложных событий» и «SCADA».

1 голос
/ 20 января 2011

Это зависит от того, как вы собираетесь использовать данные, какие индексы вы добавляете, сколько датчиков и т. Д.

Эта таблица, как показано, может хранить 150 миллионов строк (~ 1 датчикx 1 запись в секунду x 5 лет) в ~ 6 ГБ пространства (при условии кучи). ограничение размера файла составляет 16 терабайт, и я не знаю никаких ограничений на это для редакции Workgroup.

0 голосов
/ 20 января 2011

Если вы беспокоитесь о том, что база данных станет слишком большой, я бы посоветовал вам иметь Archive_Table с такой же структурой и архивными данными для интервала, например, раз в месяц или 6 месяцев (полностью на основе объема данных).

Таким образом, это позволит вам проверить количество записей в вашей таблице. И, конечно, архивные таблицы будут доступны для генерации отчетов, когда вам это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...