Как сохранить 128-битный число в одном столбце в MySQL?

Я меняю некоторые таблицы, чтобы хранить IP-адреса в виде чисел, а не строк. Это просто с IPv4, где 32-битный адрес может поместиться в целочисленный столбец. Однако IPv6-адрес составляет 128 бит.

В документации MySQL показаны только числовые типы до 64 бит ("bigint").

Следует ли мне использовать char / varchar для IPv6? (В идеале я хотел бы использовать один и тот же столбец для IPv4 и IPv6, поэтому я бы предпочел не делать этого.)

Что может быть лучше, чем использование двух столбцов bigint? Я бы предпочел не разбивать значение на верхнее и нижнее / 64 при каждом использовании адреса.

Я использую MariaDB 5.1 - если в более поздней версии MySQL есть лучшее решение, было бы неплохо узнать, хотя и не сразу.

[EDIT] Обратите внимание, что мне нужна рекомендация по лучшему способу сделать это - очевидно, что есть разные способы сделать это (включая существующее строковое представление ), но какая из них (с точки зрения производительности) лучше? (т.е. если кто-то уже провел анализ, это спасет меня от этого, или если я упускаю что-то очевидное, это тоже было бы здорово знать).

36
задан Tony Meyer 14 December 2010 в 23:35
поделиться