bloom
Индексный метод доступа, основанный на фильтрах Блума.
Схема размещения:
ext.Модуль предоставляет индексный метод доступа, основанный на фильтрах Блума.
Фильтр Блума представляет собой компактную структуру данных, которая позволяет проверить, является ли элемент членом множества.
В виде метода доступа индекса он позволяет быстро исключать неподходящие кортежи по сигнатурам, размер которых определяется при создании индекса. Этот тип индекса наиболее полезен, когда в таблице много атрибутов, и в запросах проверяются их произвольные сочетания. Традиционный индекс-B-дерево быстрее индекса Блума, но для поддержки всевозможных запросов может потребоваться множество индексов типа B-дерево, тогда как индекс Блума нужен всего один.
- Включены только классы операторов для
int4иtext. - При поиске поддерживается только оператор
=. - Метод доступа
bloomне поддерживает уникальные индексы (UNIQUE). - Метод доступа
bloomне поддерживает поиск значенийNULL.
Индекс
bloom принимает в своем предложении WITH следующие параметры:-
length- длина каждой сигнатуры (элемента индекса) в битах, округленная вверх до ближайшего числа, кратного16. Значение по умолчанию —80, максимальное значение —4096; -
col1 — col32- число битов, генерируемых для каждого столбца индекса. В имени параметра отражается номер столбца индекса, для которого это число задается. Значение по умолчанию —2бита, максимальное значение —4095. Параметры для неиспользуемых столбцов индекса игнорируются.
Пример: создать индекс с длиной сигнатуры 80 бит, в которой атрибуты
i1 и i2 отображаются в 2 бита, а атрибут i3 — в 4. Можно опустить указания length, col1 и col2, так как в них задаются значения по умолчанию.CREATE INDEX bloomidx ON tbloom USING bloom (i1,i2,i3) WITH (length=80, col1=2, col2=2, col3=4);
Дополнительную информацию по поставляемому модулю bloom можно получить по ссылке.