2012-01-18 2 views
1

Я искал советы о том, как хранить данные в базе данных для целей поиска исторических данных. Если я смогу получить состояние объекта в определенный момент времени, то как лучше всего его сохранить, чтобы я мог исторически использовать эти данные, предсказывая, какое состояние, вероятно, будет основываться на том, как это было в прошлом?Как хранить данные исторического сервера?

Для более конкретного примера я могу получить состояние вверх/вниз сервера и текущую нагрузку этого сервера. Я могу получить это по периодическому графику. Я хотел бы сохранить эти данные, чтобы я мог легко запросить состояние вверх/вниз или загрузку в течение определенного периода времени или получить всю историю этого сервера. У меня нет большого опыта, если таковые имеются, в дизайне базы данных.

ответ

1

Именно поэтому Ральф Кимбалл (и другие) изобрел хранилище данных.

У вас есть звездная схема с такими размерами, как сервер и время. У вас есть таблица фактов, в которой записаны изменения состояния (вверх и вниз) и таблица фактов, которая регистрирует нагрузку в данный момент времени.

Шаг 1. Найдите хороший учебник по дизайну схемы звезды. При необходимости купите книгу или две. Стоит каждый миг, когда вы проводите обучение методам моделирования звездных схем.

Шаг 2. Постройте схему прототипа как можно дешевле и быстрее. Загрузите данные, чтобы вы могли написать несколько запросов и посмотреть, как все работает. Делать ошибки. Исправьте их.

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

Шаг 4. Постройте свой «реальный» массив данных.

Шаг 5. Постройте свои «производственные» нагрузки.

Шаг 6. Запрос.

+0

Так звучит, что у меня было бы 2 таблицы фактов (вверх или вниз и загрузка) для каждого сервера, правильно? – s73v3r

+0

Теперь, когда дело доходит до хранения данных, следует ли добавить запись, когда что-то изменится, или для каждой точки данных, которую я получаю? Например, скажем, я получаю данные своего сервера каждые 15 минут. В 1 час сервер переходит с высокой нагрузки на среднюю нагрузку и остается таким образом за час до перехода в другое состояние. Итак, у меня есть 4 точки данных, которые все говорят, что средняя загрузка. Должен ли я хранить это как 4 записи, все со временем измерения и средней нагрузкой, или я должен иметь одну запись со средней нагрузкой, время начала 13:00 и время окончания 14:00? – s73v3r

+0

Шаг 1. Получите книгу Кимбалла. Храните данные через определенные промежутки времени, поэтому вам не нужно интерполировать. Соберите много данных. Используйте плоские файлы и загружайте RDBMS в последнюю очередь - и только когда у вас есть подмножество, которое вы хотите запросить с SQL. Большая часть обработки может быть выполнена путем организации файлов CSV, чтобы они были легкими для загрузки. –

0

Именно поэтому появилась новая версия стандарта SQL: 2011.

Просто добавьте соответствующие атрибуты начала и окончания для ваших объектов и/или соответствующие столбцы в свои таблицы, и в основном вы закончите.

Новый SQL будет делать совсем немного (но не все увы) в противном случае очень неприятная работа для вас, если у вас есть движок, который поддерживает новые функции, конечно.

Смежные вопросы