Lists: | pgsql-ru-general |
---|
From: | Maxim Boguk <mboguk(at)masterhost(dot)ru> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Запрос к авторам GIN/GIST индексов |
Date: | 2008-03-03 12:19:02 |
Message-ID: | 47CBECB6.4010003@masterhost.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
Насколько тяжело будет написать реализацию GIN/GIST индексов для полей типа Bit String Types (http://www.postgresql.org/docs/8.3/interactive/datatype-bit.html)
для ускорения поиска через побитовые операций типа AND/OR (фактически работа с массивом флагов ускоренная индексом).
Сейчас функциональность флагов можно реализовать через hstore или intarray при желании.
Но это ведет к очень большому перерасходу места в таблицах (hstore совсем большой перерасход и в индексе и в самом поле в зависимости от длинны ключей... intarray 32х кратный
overhead по размеру поля и наверно такой же по размеру индекса)
Заранее спасибо.
--
Maxim Boguk
From: | Teodor Sigaev <teodor(at)sigaev(dot)ru> |
---|---|
To: | Maxim Boguk <mboguk(at)masterhost(dot)ru> |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Запрос к авторам GIN/GIST индексов |
Date: | 2008-03-03 18:59:24 |
Message-ID: | 47CC4A8C.5040901@sigaev.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | Postg사설 토토SQL : Postg사설 |
Maxim Boguk wrote:
> Насколько тяжело будет написать реализацию GIN/GIST индексов для полей
> типа Bit String Types
> (http://www.postgresql.org/docs/8.3/interactive/datatype-bit.html)
> для ускорения поиска через побитовые операций типа AND/OR (фактически
> работа с массивом флагов ускоренная индексом).
Наскотлько велика длина BitString? И как много строк?
Для ограниченного по длине BitString (скажем, меньше 128 байт), GiST opclass
реализовать не так трудно. GIN проще - фактически, extract_* методды, которые
должны возвращать массив номеров установленных битов.
>
> Сейчас функциональность флагов можно реализовать через hstore или
> intarray при желании.
> Но это ведет к очень большому перерасходу места в таблицах (hstore
> совсем большой перерасход и в индексе и в самом поле в зависимости от
> длинны ключей... intarray 32х кратный overhead по размеру поля и наверно
> такой же по размеру индекса)
Индекс GIN будет такого же размера - момер установленного бита есть номер.
--
Teodor Sigaev E-mail: teodor(at)sigaev(dot)ru
WWW: http://www.sigaev.ru/
From: | Maxim Boguk <mboguk(at)masterhost(dot)ru> |
---|---|
To: | Teodor Sigaev <teodor(at)sigaev(dot)ru> |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Запрос к авторам GIN/GIST индексов |
Date: | 2008-03-04 13:32:48 |
Message-ID: | 47CD4F80.8080405@masterhost.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
Teodor Sigaev пишет:
>
>
> Maxim Boguk wrote:
>> Насколько тяжело будет написать реализацию GIN/GIST индексов для полей
>> типа Bit String Types
>> (http://www.postgresql.org/docs/8.3/interactive/datatype-bit.html)
>> для ускорения поиска через побитовые операций типа AND/OR (фактически
>> работа с массивом флагов ускоренная индексом).
> Наскотлько велика длина BitString? И как много строк?
>
> Для ограниченного по длине BitString (скажем, меньше 128 байт), GiST
> opclass реализовать не так трудно. GIN проще - фактически, extract_*
> методды, которые должны возвращать массив номеров установленных битов.
128байт по логике достаточно (это дает 1024 возможных флагов что более чем достаточно)
Вопрос как заставить операции AND/OR над такими полями использовать индексы?
Или проще не переопределять встроенные операции а сделать свои какие то?
Можно ли использовать hstore из 8.3 postgresql contrib как образец кода для написания подобного механизма?
--
Maxim Boguk