¿Cómo hago eso?Cómo almacenar una dirección compatible con IPv6 en una base de datos relacional
En este momento, IPv6 no se utilizará, pero tengo que diseñar la aplicación para que esté lista para IPv6. Es necesario almacenar direcciones IP y bloques CIDR (también BGP NLRI, pero esta es otra historia) en una base de datos MySQL. Siempre he usado una INT para IPv4 + una TINYINT para masklen, pero IPv6 es de 128 bits.
¿Qué enfoque será mejor para eso? 2xBIGINT
? CHAR(16)
para almacenamiento binario? CHAR(39)
para el almacenamiento de texto? 8xSMALLINT
en una mesa dedicada?
¿Qué recomendarías?
Decisión final tomada: 2xBIGINT si el segundo bigint es NULL, entonces significa IPv4 – azerole
en realidad - si estuviera haciendo esto, dejaría el _primero_ bigint como NULL para IPv4, o usaría un campo separado. De esta forma, la parte IPv4 aparece en la palabra menos significativa. – Alnitak
Y si estuviera haciendo esto, almacenaría direcciones IPv4 en el formato V4COMPAT de direcciones IPv6, es decir, en el rango ::/96. –