Question

Nous avons une obligation de consigner les informations d'adresse IP de tous les utilisateurs qui utilisent une application Web basée sur Java EE 5.

Quel serait un type de données SQL approprié pour stocker les adresses IPv4 ou IPv6 dans les bases de données prises en charge suivantes (h2, mysql, oracle)?

Il est également nécessaire de filtrer l'activité de certaines adresses IP. Devrais-je traiter la représentation comme un champ de chaîne (disons varchar (32) pour maintenir ipv4, adresses ipv6)?

Était-ce utile?

La solution

Je stocke les adresses IP dans un varchar(15). Ceci est facilement lisible, et vous pouvez filtrer comme where ip = '1.2.3.4' de IP spécifique.

Si vous devez filtrer sur les réseaux, comme 1.2.3.4/24, il devient une autre histoire. Dans ce cas, votre mieux stocker l'adresse IP en tant que binaire de 4 octets.

Autres conseils

Si vous avez d'énormes quantités de données et doivent parcourir, pour la performance, il serait préférable de convertir la représentation de chaîne (en pointillés) d'adresses IP à leurs valeurs entières appropriées.

Soit d'entre eux est valide

  • 4 octets, peut-être un 5ème octet pour CIDR
  • varchar (15) ou (18) pour stocker une représentation complète en une seule fois

Dire que, varchar (48) pour les sys.dm_exec_connections de SQL Server ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top