Задать вопрос
DrFreez
@DrFreez

Логирование трафика в БД — как нормализовать?

Есть структура:
connect_ip (id, src_ip, dst_ip) ~6 млн. записей
connect_time (id, ip_id, time_start, time_end) ~30 млн. записей

В существующую структуру надо добавить protocol, src_port, dst_port

Как лучше поступить? Сделать ещё одну таблицу connect_port или запихать порты в connect_ip? Куда запихать протокол? MySQL
  • Вопрос задан
  • 2520 просмотров
Подписаться 2 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 3
На сколько я знаю, по правилам нормализации, выносить в отдельную таблицу.
Ответ написан
Комментировать
@0LLEGator
"Начинающий" программист в средней компании.
На мой взгляд лучше добавить поля к connect_time, правда придётся разрешить в них значения null.
Не стоит множить сущности без необходимости, а количество полей на скорость не влияют. Тем более что вся инфа в одной таблице и дополнительно джойнить, более того, скорее всего left join-ом, не придётся.
Ответ написан
Комментировать
vollossy
@vollossy
Веб-разработчик с небольшим опытом работы
Я бы посоветовал, как и @0LLEGator добавить в существующую таблицу(просто потому, что это логичнее выглядит, не так страшен джоин, как его почему-то малюют :-) ). Только вот вместо NULL-значений бы установил дефолтными из области недопустимых(0, -100 или что-то в этом роде), т.к. NULL- значения не удастся выбрать при помощи индекса, что может замедлить некоторые запросы. Хотя, конечно, зависит от задачи.
Ответ написан
Ваш ответ на вопрос

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

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