С точки зрения структуры данных, вы ищете дерево интервалов .
Статья в Википедии довольно хорошая.Что вы можете сделать, это расширить (сбалансированное) дерево бинарного поиска, например, AVL или Red-Black-Trees.Деревья интервалов, основанные на бинарном дереве поиска, имеют собственный раздел в классической книге DS Cormen et al. .
Хорошая структура данных хорошо масштабируется для больших объемов данных.Сложность для основных операций с каталогами: O (k + log n), где n - количество интервалов в дереве, а k - количество перекрывающихся интервалов в диапазоне.Это обычно довольно хорошо.Он медленно растет с количеством элементов интервалов, за исключением случаев, когда множество или большинство интервалов перекрывают все остальные.
Если вы не можете хранить свои данные в основной памяти, B-Tree будет хорошим выбором.