@anatoly60

Как эффективно сделать INSERT сразу в несколько таблиц?

Есть таблицы:

visitors_daily (date, ip, count)
visitors_weekly (date, ip, count)
visitors_monthly(date, ip, count)
visitors_yearly(date, ip, count)

Нужно записывать данные о посетителях. Посетителей очень много. Например 1000 в секунду.
Как наиболее эффективно записать данные сразу в несколько таблиц? Нужно минимизировать траффик к СУБД и нагрузку на СУБД.

Для посетителя с IP=1.2.3.4 от 2015-07-18
нужно записать

2015-07-18 в daily
2015-07-06 (понедельник) в weekly
2015-07-01 (первое число месяца) в montly
2015-01-01 в yearly.

Первичный ключ date-ip. В случае дупликатов увеличить count на единицу.
Желательно решение и для Postgres и для MySQL.
  • Вопрос задан
  • 297 просмотров
Пригласить эксперта
Ответы на вопрос 4
sim3x
@sim3x
Пиши в файлы на каждом серваке отдельно
Файлы собирай с серваков
Читай из файлов
Агрегируй
Вставляй через транзакцию

Еженедельные и ежемесячные создавай, когда наступит их время

бадуу занимается таким через scribe, но тебе подойдет и rsync
https://www.youtube.com/watch?v=LtdsjspZ4xM
А вообще, ты так теряешь большой пласт информации про пользователя
Ответ написан
BuriK666
@BuriK666
Компьютерный псих
используйте триггеры.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Нужно сделать ХРАНИМУЮ ПРОЦЕДУРУ!
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А насколько часто будет делаться выборка этих данных? Может проще записывать только счётчик по дням, а остальное считать в реалтайме?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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