Re: [HACKERS] How to implement a SP-GiST index as a extension module? - Mailing list pgsql-hackers

From Alexander Korotkov
Subject Re: [HACKERS] How to implement a SP-GiST index as a extension module?
Date
Msg-id CAPpHfduKvJxzEdZCbQy3-6YJMmrGQa9QzL0=YPiMtqsqopb-Rw@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] How to implement a SP-GiST index as a extension module?  (Oleg Bartunov <obartunov@gmail.com>)
Responses Re: [HACKERS] How to implement a SP-GiST index as a extension module?
List pgsql-hackers
On Mon, Oct 30, 2017 at 2:07 PM, Oleg Bartunov <obartunov@gmail.com> wrote:
On Mon, Oct 30, 2017 at 12:05 PM, Oleg Bartunov <obartunov@gmail.com> wrote:
> On Sun, Oct 29, 2017 at 10:07 AM, Connor Wolf
> <wolf@imaginaryindustries.com> wrote:
>> Hi there!
>>
>> I'm looking at implementing a custom indexing scheme, and I've been having
>> trouble understanding the proper approach.
>>
>> Basically, I need a BK tree, which is a tree-structure useful for indexing
>> arbitrary discrete metric-spaces (in my case, I'm interested in indexing
>> across the hamming edit-distance of perceptual hashes, for fuzzy image
>> searching). I'm pretty sure a SP-GiST index is the correct index type, as my
>> tree is intrinsically unbalanced.
>>
>> I have a functional stand-alone implementation of a BK-Tree, and it works
>> very well, but the complexity of managing what is basically a external index
>> for my database has reached the point where it's significantly problematic,
>> and it seems to be it should be moved into the database.
>>
>> Anyways, looking at the contents of postgres/src/backend/access/spgist, it
>> looks pretty straightforward in terms of the actual C implementation, but
>> I'm stuck understanding how to "install" a custom SP-GiST implementation.
>> There are several GiST indexing implementations in the contrib directory,
>> but no examples for how I'd go about implementing a loadable SP-GiST index.
>>
>> Basically, my questions are:
>>
>> Is it possible to implement a SP-GiST indexing scheme as a loadable module?
>>
>> If so, how?
>> And is there an example I can base my implementation off of?
>
> Look on RUM access method ( https://github.com/postgrespro/rum ) we
> developed using
> api available since 9.6.

or even simple, there is contrib/bloom access method, which illustrates
developing access method as an extension.

I think Connor struggles to implement just an operator class.  Advising him to implement an index access method is a good way to get him away of PostgreSQL hacking for a long time :)

------
Alexander Korotkov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company 

pgsql-hackers by date:

Previous
From: Alexander Korotkov
Date:
Subject: Re: [HACKERS] How to implement a SP-GiST index as a extension module?
Next
From: Raúl Marín Rodríguez
Date:
Subject: Re: [HACKERS] pow support for pgbench