bloom. Индексный метод доступа, основанный на фильтрах Блума
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext
.
Модуль предоставляет индексный метод доступа, основанный на фильтрах Блума.
Фильтр Блума представляет собой компактную структуру данных, которая позволяет проверить, является ли элемент членом множества.
В виде метода доступа индекса он позволяет быстро исключать неподходящие кортежи по сигнатурам, размер которых определяется при создании индекса.
Этот тип индекса наиболее полезен, когда в таблице много атрибутов, и в запросах проверяются их произвольные сочетания.
Традиционный индекс-B-дерево быстрее индекса Блума, но для поддержки всевозможных запросов может потребоваться множество индексов типа B-дерево, тогда как индекс Блума нужен всего один.
Доработка
Не проводилась.
Ограничения
Существуют следующие ограничения:
- включены только классы операторов для
int4
иtext
; - при поиске поддерживается только оператор
=
; - метод доступа
bloom
не поддерживает уникальные индексы (UNIQUE
); - метод доступа
bloom
не поддерживает поиск значенийNULL
.
Установка
При наличии прав администратора СУБД включение модуля возможно выполнить вручную:
CREATE EXTENSION bloom SCHEMA ext;
Настройка
Не требуется.
Использование модуля
Индекс 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: https://www.postgresql.org/docs/15/bloom.html.