@stompbox

Каков оптимальный формат хранения массива ip адресов в mysql?

Здравствуйте, собственно суть вопроса в названии.
Если с хранением отдельного ip в базе все ясно (обычно храню интом и работаю с данными при помощи NET_NTOA()
INET6_NTOA()), то тут возникло сомнение.

Есть необходимость хранить массив динамического размера с диапазонами ip адресов.
Самое простое решение в лоб перегнать в json и обычной строкой хранить в базе, но тут придется городить дополнительные костыли для поиска внутри диапазона или использовать регулярки. Что тоже в общем-то не проблема, но хотелось бы сделать по правильному.
Искал какие-то "best practices", но ничего конкретного не нашел. Поэтому прошу поделиться мнением, кто бы как решал эту задачу.
  • Вопрос задан
  • 116 просмотров
Решения вопроса 2
Aligatro
@Aligatro
Turn food and coffee into software...
Если хранить json'ом не вариант, я бы хранил в отдельной таблице каждый по отдельности, связывая значения массива relation'ом или id'шником. Best practice это или нет, я не знаю, но в случае отсутствия json решал бы именно так.
Ответ написан
@Fortop
Tech/Team lead
Задача состоит из нескольких частей.

1. как хранить IP адреса https://stackoverflow.com/questions/2542011/most-e...
2. как хранить диапазоны.
create table ip_ranges (
  id INT(11) NOT NULL AUTO_INCREMENT
  start_ip INT(4) UNSIGNED NOT NULL,
  end_ip INT(4) UNSIGNED NOT NULL
)

3. как искать среди диапазонов
SELECT * FROM ip_ranges WHERE ? BETWEEN start_ip and end_ip

Вместо ? - подставить искомое значение
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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