получение информации об IP-адресе пользователя для аудита - PullRequest
1 голос
/ 04 апреля 2010

У нас есть требование регистрировать информацию об IP-адресе всех пользователей, которые используют определенное веб-приложение на основе Java EE 5.

Каким будет подходящий тип данных sql для хранения адресов IPv4 или IPv6 в следующих поддерживаемых базах данных (h2, mysql, oracle)?

Существует также необходимость фильтрации активности по определенным IP-адресам. Должен ли я просто рассматривать представление как строковое поле (скажем, varchar (32) для хранения адресов ipv4, ipv6)?

Ответы [ 3 ]

4 голосов
/ 04 апреля 2010

Я бы сохранил IP-адреса в varchar(15). Это легко читается, и вы можете фильтровать для определенных IP-адресов, таких как where ip = '1.2.3.4'.

Если вам нужно фильтровать в сетях, как 1.2.3.4/24, это становится другой историей. В этом случае лучше хранить IP-адрес в виде 4-байтового двоичного файла.

2 голосов
/ 04 апреля 2010

Если у вас есть огромные объемы данных и вам необходимо выполнить поиск, для повышения производительности было бы лучше преобразовать строковое (пунктирное) представление IP-адресов в их целочисленные значения.

0 голосов
/ 04 апреля 2010

Любой из них действителен

  • 4 байта, возможно, 5-й байт для CIDR
  • varchar (15) или (18) для хранения полного представления за один раз

Сказав это, varchar (48) для sys.dm_exec_connections SQL Server ...

...