2013-03-04 2 views

ответ

4

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.

+0

Спасибо, но мне нужны конкретные диапазоны IPv6. В дополнение я хочу определить множество диапазонов и сравнить их. Вот почему мне нужна функциональность диапазона. см. http://stackoverflow.com/questions/15187283/storing-and-querying-interval-tree-in-postgresql/15191972#15191972 –

+0

Я обновил ответ, чтобы объяснить, что он поддерживает IPv6 и некоторые операции, которые вам нужны. – mvp

+0

Выглядит очень многообещающе, спасибо! –

Смежные вопросы