Как хранить временные ряды?

Есть много источников данных. Можно сказать, что данные от них приходят в виде — <дата измерения, значение, атрибуты в виде мэпа>. Причем вот эти атрибуты меняются как от источника к источнику, так и от измерения к измерению.

Измерений много и их надо хранить и статистически обрабатывать.

Какую СУБД лучше выбрать?

Есть ли готовые сервисы?


UPD:

Как пример — хранить http запросы, показания датчика температуры, положение приложения в плей-марките.

Формат — ну путь хоть json. { 'timestamp': '', 'value':'', {… }}

UPD2: данных очень много.
  • Вопрос задан
  • 4946 просмотров
Решения вопроса 1
@abir_valg
Вот тут советуют СУБД объектно-реляционной модели.

Т.е. PostgreSQL .

Mongo посоветовали , потому , что есть масштабирование из коробки ?

А так сама задаюсь этим вопросом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Violetdrug
@Violetdrug
Если данных очень много, то лучше использовать Mongo, она не тормазит при разростании.
Если в приделах разумного, то MySql

Для MySQL советую такую схему:
Каждая строка соответствует одному устройству, данные хранятся в полнотекстовом поле в виде
{ 'timestamp': '', 'value':'', {… }},{ 'timestamp': '', 'value':'', {… }},{ 'timestamp': '', 'value':'', {… }},…
Каждую запись добавляем коммендой

$query="INSERT INTO `bd`.`table` ( `json`,`keyid`) VALUES ("{ \"timestamp\": \"\", \"value\":'', {… }}', '".$keyid."')". " ON DUPLICATE KEY"." UPDATE `json` =CONCAT(`json`,',{ \"timestamp\": \"\", \"value\":'', {… }}'), keyid='".$keyid."'" ;

тем самым в поле будет дописываться очередное значение Json.

А когда будете запрашивать из базы

$res="{'hist':[".row['json']."]}"; $poll=json_decode($res);

$poll->hist — и будет сам набор данных

Если нужны будут комментарии, или что-то не будет из этого работать, пишите в личку, помогу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы