Проектирование базы данных SQL для тестовых данных - PullRequest
1 голос
/ 01 декабря 2010

Итак, я пытаюсь научиться настраивать хорошие и полезные базы данных. Я столкнулся с проблемой правильного хранения больших объемов данных. База данных, которую я использую - MSSQL 2008. Например:

Мы тестируем около 50 000 устройств в неделю. Каждое из этих устройств имеет много данных, связанных с ними. В целом, мы просто смотрим на сводку данных, рассчитанных по необработанным данным. Сводка проста в обращении, это просто необработанные данные, которые я пытаюсь ввести в базу данных для будущего использования на случай, если кто-то захочет получить более подробную информацию.

Для краткости, у меня есть база данных, полная таблиц для каждого набора из 50 000 устройств. Но у каждого устройства есть данные, похожие на эту:

("DevID") I,V,P I,V,P I,V,P ...
("DevID") WL,P WL,P WL,P ...

Суммирование до 126 (~ 882 символов) точек данных для первой строки и 12000 (~ 102 000 символов) точек данных для второй строки. Как лучше всего хранить эту информацию? Создать таблицу для каждого устройства (это кажется неуправляемым)? Есть ли тип данных, который может обрабатывать столько информации? Я просто не уверен.

Спасибо!

РЕДАКТИРОВАТЬ: Обновлено ~ счетчик символов и точек данных второй линии.

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

Вы можете просто нормализовать все в одну таблицу

CREATE TABLE device
(  id         BIGINT AUTO_INCREMENT PRIMARY KEY
,  DevID      INT
,  DataPoint  VARCHAR
,  INDEX(DevID))

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

1 голос
/ 01 декабря 2010

Представляют ли эти данные серию показаний с течением времени?Данные временного ряда имеют тенденцию быть очень повторяющимися.Таким образом, общая стратегия состоит в том, чтобы сжать его таким образом, чтобы избежать сохранения каждого отдельного значения.Например, используйте кодирование длин серий или сопоставляйте временные интервалы с каждым значением вместо отдельных точек.

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