| |
| 1.1, Stax, 14:10, 07/06/2011 [ответить] [смотреть все]
| +/– |
> IP адреса лучше всего хранить как UNSIGNED INT. И использовать MySQL
> функции INET_ATON() и INET_NTOA()
Вот так и делают новые проекты без поддержки IPv6. Зато сэкономили несколько байт, ура!
|  | | |
| |
| |
| |
| |
| 5.19, Stax, 23:34, 17/06/2011 [^] [ответить] [смотреть все]
| +/– |
> Берём signed int и вполне себе записываем даты < 1.1.1970 как отрицательные
> числа.
Не шутите так :) Во-первых, нестандартно, во-вторых, ну выйграете несколько десятилетий - но даты и до этой бывают.
|  | | |
|
|
|
| 2.27, Сергей, 02:15, 25/06/2011 [^] [ответить] [смотреть все] [показать ветку]
| +/– |
Не все пишут программы для работы в Интернет. Есть программы сбора данных для локальных сетей. Использовать IPv6 в этом случае неразумно, а тратить +12 байт впустую просто глупо - будет БД из одних IP.
|  | | |
|
| 1.11, Елка, 21:06, 13/06/2011 [ответить] [смотреть все]
| +1 +/– |
ip только в int!
вы пробывали учитывать трафик по подсетям? ;)
в строковом варианте это изврат
|  | | |
| |
| 2.18, Stax, 23:33, 17/06/2011 [^] [ответить] [смотреть все] [показать ветку]
| +/– |
> ip только в int!
> вы пробывали учитывать трафик по подсетям? ;)
> в строковом варианте это изврат
Ну, под специфические задачи можно использовать разные способы хранения. Если у вас IP используется для подсчета трафика, храните в INT, никто не запрещает :)
Некоторые еще хранят в виде "C0A80201" в CHAR(8) - для удобства специфических действий.
Но под общую задачу хранения IP-адреса какого-нибудь ресурса, смысла запихивать в INT особо и нет.
|  | | |
|
| |
| 2.17, Stax, 23:31, 17/06/2011 [^] [ответить] [смотреть все] [показать ветку]
| +/– | |
> эй, чудик, что хранит ip в char, отсортируй-ка их по возрастанию..
А зачем, простите? Сходу даже задач не приходит в голову, где нужно сортировать по IP o.O Поиск по IP, еще понимаю..
|  | | |
| |
| 3.20, Сергей, 02:29, 18/06/2011 [^] [ответить] [смотреть все]
| +/– |
Взять максимальный IP по выборке например:
SELECT * FROM table WHERE expr... ORDER BY int_ip DESC LIMIT 1;
в вашем случае при хранении в char это:
SELECT * FROM table WHERE expr... ORDER BY INET_ATON(char_ip) DESC LIMIT 1;
что соответственно overhead
|  | | |
| |
| 4.24, Stax, 05:39, 19/06/2011 [^] [ответить] [смотреть все]
| +/– | |
Я не понимаю, что такое "максимальный IP". IP это просто адрес, из четырех чисел, если ipv4. Как вы у адреса определяете, какой больше и какой меньше? И главное, зачем?
А для IPv6 вы считаете, что ipv6-in-ipv4 сегмент 2002:: это "больше" и лучше, чем нативные 2001:: адреса? Примерно такая логика?
|  | | |
| |
| 5.26, COBA, 00:39, 24/06/2011 [^] [ответить] [смотреть все]
| +/– |
А зачем? а чтобы выдать допустим следующий ip клиенту. Это довольно частая операция для провайдеров.
|  | | |
|
|
| 3.21, Сергей, 02:33, 18/06/2011 [^] [ответить] [смотреть все]
| +/– |
>> эй, чудик, что хранит ip в char, отсортируй-ка их по возрастанию..
> А зачем, простите? Сходу даже задач не приходит в голову, где нужно
> сортировать по IP o.O Поиск по IP, еще понимаю..
Еще более экзотический вариант, в БД храним список подсетей в виде int - IP адрес сети, в виде int - маску сети. Задача проверки в какие из сети входит определенный IP. Вот тут уже получите более серъезный оверхед если будете хранить в char.
|  | | |
|
|
|
|