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

Возникла потребность построить график изменения рейтинга поста за месяц и за все время. На данный момент надумал такой алгоритм:

  1. Каждый день в 00.00 считаем среднеарифметическое всех оценок, выставленных посту с самого первого, до текущего (нового дня)
  2. Получаем какое-то значение рейтинга для текущего дня
  3. Сохраняем значение в таблицу в виде: дата - значение


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

1 вариант:
| post_id | avg_rating | date       |
|---------|------------|------------|
| 1       | 5          | 10/12/2020 |
| 1       | 4          | 09/12/2020 |
| 2       | 3          | 10/12/2020 |
| 2       | 2          | 09/12/2020 |


2 вариант в json полем:

| post_id | json                                                                                         |
|---------|----------------------------------------------------------------------------------------------|
| 1       | {  {    date: 10/12/2020,    avg_rating: 5  } }                                              |
| 2       | {  {    date: 10/12/2020,    avg_rating: 5  },  {    date: 09/12/2020,    avg_rating: 4  } } |


В качестве БД использую PostgreSQL, в качестве php-фреймворка - Laravel.

Задача: из полученной таблицы строить координаты для вывода графика в формате: [{ x: 10/12/2020, y: 5 }]
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
2й менее нагрузит базу и более приложение - но в приложении все равно ведь вычислять, кроме того - есть варианты когда на фронте Chart сам нарисует по полученному массиву, так что проще его целиком и отправлять

проблемы будут когда диапазон не за все время, а за интервал - ну тут уж смотрите на объемы и оптимизацию
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы