2015-03-22 7 views
0

Какова будет схема хранения, которая позволит искать диапазон, в который попадает данный IP-адрес, который обеспечивает возможность оптимизации с помощью индекса.Структура для хранения CIDR-дружественных непересекающихся диапазонов IP-адресов

Итак: существует набор непересекающихся диапазонов IP-адресов (которые могут быть представлены в обозначении CIDR, если необходимо).

И он должен соответствовать диапазону, который соответствует данному IP-адресу.

Таким образом, всегда будут точно соответствовать 0..1.

ip_from (int), ip_to (int) не отвечает требованиям, поскольку вы не можете оптимизировать поиск через него с помощью B-Tree (или любой другой структуры индекса, доступной в mysql).

+0

Возможно, это решение для хранения каждого сегмента сегмента IP в другом поле db? Как 'ip_segment_1',' ip_segment_2' и т. Д. И запрос на основе этого? Почти невозможно позволить базе данных использовать BTREE (или любую индексацию), когда необходимо обнаруживать шаблоны. Вероятность, что он должен проверять каждый стол, составляет почти 100%. –

+0

@ Пространственные индексы в пространстве могут делать это на самом деле :-) – zerkms

+0

О, это здорово, я не знал этого :) –

ответ

0

Понял - from-to схема работы:

Нужно, чтобы получить все префиксы IP-адресов для данного IP-адреса и использовать from IN (<prefixes_list_here>) чек.