В 9.2 добавлена функциональность нового диапазона. Как создать таблицу с полями диапазонов IPv6?
Нужно ли мне создавать новый тип?
Пример/ссылка будет оценена.Хранение диапазонов IPv6 в PostgreSQL
ответ
PostgreSQL уже поддерживает type CIDR, который может хранить диапазоны как для IPv4, так и для IPv6. Единственный улов, что эти диапазоны не могут быть такими, как 1.2.3.1-1.2.3.10
для IPv4 или ::5:1-::5-10
, но только как 1.2.3/28
или 2001:0:0:5::0/64
- типичный для объявления бесклассовой подсети.
Если вы хотите больше гибкости, чем CIDR
, и хотите иметь истинные произвольные INET
диапазоны, есть ip4r
extension, что предлагает их для использования. Он включен по умолчанию в some Ubuntu versions (например, он включен в Ubuntu 12.10).
Не обманывайтесь ip4r
имя: оно поддерживает как IPv4
, так и IPv6
с версии 2.0. Он также поддерживает типичные операции диапазона, которые вы ожидаете, например BETWEEN
, <<=
, чтобы проверить, принадлежит ли IP к диапазону и некоторым другим. Подробнее читайте здесь: README.ip4r
.
Спасибо, но мне нужны конкретные диапазоны IPv6. В дополнение я хочу определить множество диапазонов и сравнить их. Вот почему мне нужна функциональность диапазона. см. http://stackoverflow.com/questions/15187283/storing-and-querying-interval-tree-in-postgresql/15191972#15191972 –
Я обновил ответ, чтобы объяснить, что он поддерживает IPv6 и некоторые операции, которые вам нужны. – mvp
Выглядит очень многообещающе, спасибо! –