Самый быстрый способ выполнить операцию проверки подмножества над большим набором наборов с тем же доменом

Предположим, у нас где-то хранятся триллионы наборов. Домен для каждого из этих наборов одинаков. Он также конечен и дискретен. Таким образом, каждый набор может быть сохранен как битовое поле (например: 0000100111 ...) относительно небольшой длины (например: 1024). То есть бит X в битовом поле указывает, включен ли элемент X (из 1024 возможных элементов) в данный набор или нет.

Теперь я хочу разработать структуру хранения и алгоритм для эффективного ответа на запрос: что устанавливает в хранилище данных установили Y как подмножество. Сам набор Y отсутствует в хранилище данных и указывается во время выполнения.

Теперь самый простой способ решить эту проблему - выполнить И битовое поле для набора Y с битовыми полями каждого набора в хранилище данных одно за другим, выбор тех, чей результат И соответствует битовому полю Y.

Как я могу это ускорить? Существует ли древовидная структура (индекс) или какой-то умный алгоритм, который позволил бы мне выполнить этот запрос без необходимости И для каждого битового поля сохраненного набора?

Существуют ли базы данных, которые уже поддерживают такие операции с большими коллекциями наборов?

5
задан niktech 28 December 2010 в 00:50
поделиться