|
MySQL.RU - Webboard
Вернуться
Инкриментальный способ хранения данных - как? (Ilomikus) 25/09/2014 - 14:21:24
Re: Инкриментальный способ хранения данных - как? (Akina) 25/09/2014 - 17:55:36
Re: Инкриментальный способ хранения данных - как? (Ilomikus) 25/09/2014 - 21:58:27
Re: Инкриментальный способ хранения данных - как? (Akina) 26/09/2014 - 08:45:21
Re: Инкриментальный способ хранения данных - как? (Ilomikus) 26/09/2014 - 17:28:28
Re: Инкриментальный способ хранения данных - как? (Akina) 26/09/2014 - 18:16:05
Re: Инкриментальный способ хранения данных - как? (Ilomikus) 27/09/2014 - 01:04:45
Re: Инкриментальный способ хранения данных - как? (Akina) 27/09/2014 - 21:44:08
From: Ilomikus - 25/09/2014 - 14:21:24
Subject:Инкриментальный способ хранения данных - как?
-----------------
День добрый!
Встала проблема хранения и использования большого количества почти одинаковых данных.
Есть около 2000 датчиков например температуры, их необходимо опрашивать каждые 2 секунды, то есть прирост 60000 показаний в минуту, 86400000 в сутки, что очень и очень немало. Хранить надо за год в оперативной базе, 3 года в архивной. Тип хранимых данных - id датчика, "его" время, показание с плавающей точкой. Размер таблицы вижу просто атомный. Надо извлекать для отчёта на некоторый момент срез всех датчиков.
Лазейку вижу в том, что данные слабо меняются, т.е. за две секунды с прошлого опроса может поменяться 1-2-3 датчика или вообще ни одного.
Вижу решение такое, ближайший аналог - сжатие видео с ключевыми и дельта-кадрами:
0. две таблицы - data_touchstone и data_patch
1. в data_touchstone по крону складываются опорные данные скажем раз в 5 минут.
2. в data_patch кладём разницу между опорными данными и текущей ситуацией, т.е. применив дельту найдем значения на опорный момент + 2 секунды.
3. пока не наступил момент следующего события записи в data_touchstone, берём текущее значение датчиков, используем последнее значение data_touchstone в как точку отсчёта, последовательно накладываем все изменения ДО настоящего момента, получаем разницу с текущим значением и пишем в data_patch
4. получаем картину типа такой:
секунда 0 - опорные данные
секунда 2 - опорные данные + разница 1
секунда 4 - опорные данные + разница 1 + разница 2
секунда 5 - опорные данные + разница 1 + разница 2 + разница 3
и т.д. до следующих опорных данных.
Вопрос - не изобретаю ли я велосипед?
Может есть готовое решение?
Делал кто-либо подобное?
Может есть стандартная фича не в mysql?
Заранее спасибо!
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
43207
|
|