Как лучше хранить график с большим количеством значений?
Здравствуйте, каким образом можно хранить график с большим кол-вом значений для каждой записи в mysql таблице?
Были варианты:
- Загонять в массив, прогонять через serialize, сохранять в БД
- Создать большое кол-во полей в таблице и хранить значения в этих полях
Задачи: переодически обновлять поля, полей около 186 для 1 записи(при этом сдвигать данные на 1 поле назад, а последнее дописывать новым значением), записей много(в этом и проблема. более 1000 записей).
P.S: оба варианта показались слишком нагруженными, гугление ничего не дало.
Просьба подсказать еще варианты(если вообще таковые имеются).
думаю, лучше бы указать количество примерное значений а также подумать о том, будете ли вы осуществлять по ним в дальнейшем поиск и сортировку. А так если их только положить и достать, то возможно достаточно преобразовать массив в json перед сохранением и затем отдавать напрямую на фронтэнд, где график построится яваскриптом, но сильно зависит от задачи.
Дмитрий Евграфович: примерное кол-во значений будет около 186 на 1 запись(записей, для начала около 1000), да, сортировку планируем, но до записи. Т.е каждое значение перезаписывается в прошлое, а в конец дописывается новое
Для мониторинга я бы посоветовал Graphite, есть готовые интерфейсы для визуализации накопленной статистики. Извлекать данные из хранилища можно в формате json, причем можно запрашивать уже в агрегированном виде.
Почему не использовать для этого вторую таблицу с внешним ключом в первую и связью многие-к-одному?
Вообще для этого подойдут более специализированные БД, но без подробностей сложно что-то посоветовать.
Делаем некоторый мониторинг, опрашивающий определенные серверы, обрабатывая ответ получаем данные(кол-во пользователей), отдельная таблица при большом объеме опрашиваемых... очень ресурсоемко.
Виталий Кузнецов: возможно, но думаю что serialize оставляет мусор, я бы просто оставил координаты через знаки разделители максимально компактно, может, если есть желание и возможность, еще заархивировать)