2011-05-26

Зберігання IPv4/IPv6 у базі даних

Здавалося б, роби собі VARCHAR(45) та й не мучайся. Але оптимізація.

PostgreSQL has a "network address" column that will store IPv4/6 addresses with a netmask, but MySQL does not have this. (джерело)

Однак, не всі мають сміливість перебратися нарешті на PostgreSQL, тому доводиться розглядати це питання і для MySQL.

Для v4 є дуже гарне рішення:
You could indeed store the IP addres in an INT UNSIGNED:
mysql> SELECT INET_ATON('192.168.0.10') AS ipn;
+------------+
| ipn |
+------------+
| 3232235530 |
+------------+

mysql> SELECT INET_NTOA(3232235530) AS ipa;
+--------------+
| ipa |
+--------------+
| 192.168.0.10 |
+--------------+ 
(джерело)
Для v6 поки зупинився на http://ua2.php.net/manual/en/function.inet-pton.php

Немає коментарів:

Дописати коментар