Обработка временной шкалы (MySQL) - PullRequest
1 голос
/ 09 марта 2012

Я в псевдосоциальном приложении.
У нас есть 3 таблицы:

Users: _id_, username, password, email
Movies: _id_, title, synopsis
Followers: __(#user_id1, #user_id2)__, timestamp
U_Movies: __(#user_id, #movie_id)__, rating, timestamp

Мы хотим добавить временную шкалу в наше приложение, простую временную шкалу, с последними действиями. Мы не хотим настраивать временную шкалу (без сообщений), только действия.

Как лучше всего создать эту временную шкалу?
Будет ли это путем создания таблицы «Временная шкала» со всеми записанными действиями (выполнение INSERT INTO timeline при наличии INSERT INTO followers и U_Movies?) Или получения с MySQL и JOIN ON последних действий подписчиков (с отметкой времени) , который, я думаю, будет тяжелым, если будет много записей и пользователей), и еще один совет?

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Я недавно делал подобное. Ваша первая идея, вероятно, лучше всего, добавить данные в новую таблицу (с помощью триггера или другой вставки)

Предполагая, что вы ничего не делаете, а также обновляете или удаляете таблицу, она должна масштабироваться достаточно хорошо. Вы также можете разбить таблицу в MySQL на основе диапазона дат. Это сохранит производительность через несколько лет (моя первая версия имеет 140 миллионов строк за 4 года и все еще быстро)

Редактировать - Обнаружение изменений.

Использование маршрута TRIGGER - Перед обновлением позволит вам сравнить столбцы, а затем выполнить вставку во временную шкалу, чтобы получить исторические изменения.

CREATE TRIGGER upd_check BEFORE UPDATE ON account
  FOR EACH ROW
    BEGIN
     IF NEW.rating != OLD.rating THEN
       INSERT INTO timeline .. 
     END IF;
 END;
1 голос
/ 09 марта 2012

Вы можете создать TRIGGER, который будет вставлять в третью таблицу при изменении.

См. ТРИГГЕРЫ в документации по MySQL онлайн.

...