@JeanPaulBelmondo

Какой способ хранения и выборки данных предпочтительней?

Есть некоторые данные, которые мне нужно показывать по:
  • Дням
  • Неделям
  • Месяцам
  • Годам


Варианта у меня два:
1) сделать 4 таблицы и при поступлении события сохранять данные сразу в 4 таблицы, а при необходимости доставать из нужной;
2) хранить всё в одной таблице, дату в формате Y-m-d, и уже искать и группировать через sql запросы (YEAR( date));

Какой из вариантов более жизнеспособен и предпочтителен?
2й вариант вообще не представлю как работать, с датами особо не работал в mysql.

Кол-во данных, если по дням, 365 на клиента в год
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
второй конечно и только второй

это же явно OLAP у вас, а в OLAP временнЫе периоды имеют свойства быть нестандартными
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@rPman
Нужно разделять оптимизацию доступа к данным и их хранение.

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

Один из способов - считать агрегированную информацию в триггере на изменение и добавление данных.

Поэтому ответ на твой вопрос может стать - первый вариант, но исходные данные хранить в неагрегированном виде в любом случае.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Нужно делать одну таблицу и с ней работать. Самый простой вариант - обычно самый надежный и долговечный.

Игры с разными таблицами - это овер-инжинеринг. И ты зря занимаешся этим потому что в топике совершенно
нет мотивации к этому. Пускай одна таблица работает и если она по каким-то причинам перестанет справлятся
- то тогда можно рассмотреть materialized views, витрины, гиперкубы и прочие технологии. Но пока это
все - не нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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