Thread: indices and cidr/inet type

indices and cidr/inet type

From
Richard Welty
Date:
in looking over the section of the users manual on indices, i see that
R-Tree indices are recommended for <<, but this advice is clearly tied to
the geometric interpretation of << ("to the left of") rather than the
network interpretation ("is contained in").

what type of index is recommended when the dominant lookup on a field is

'<networkaddress>' << ipblock

where the ipblock column is of type cidr?

thanks,
  richard
--
Richard Welty                                         rwelty@averillpark.net
Averill Park Networking                                         518-573-7592
    Java, PHP, PostgreSQL, Unix, Linux, IP Network Engineering, Security

Re: indices and cidr/inet type

From
Tom Lane
Date:
Richard Welty <rwelty@averillpark.net> writes:
> what type of index is recommended when the dominant lookup on a field is
> '<networkaddress>' << ipblock

I don't think we have a suitable index type at the moment; or more
accurately, we don't have a suitable operator class.  It would be an
interesting exercise to write an inet opclass for either rtree or GiST.
I'm not sure which one would be more suitable, but probably you could
handle << with one or the other.

            regards, tom lane

Re: indices and cidr/inet type

From
Richard Welty
Date:
On Tue, 05 Aug 2003 15:09:00 -0400 Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Richard Welty <rwelty@averillpark.net> writes:
> > what type of index is recommended when the dominant lookup on a field
> is
> > '<networkaddress>' << ipblock
>
> I don't think we have a suitable index type at the moment; or more
> accurately, we don't have a suitable operator class.  It would be an
> interesting exercise to write an inet opclass for either rtree or GiST.
> I'm not sure which one would be more suitable, but probably you could
> handle << with one or the other.

hmmm. where should i go looking for sample code implementing operator
classes as an example?

by way of context, i do a _lot_ of email work, and my client of the moment
is the owner of an ISP who is migrating his user & system configurations
into postgresql as much as he possibly can. this includes his list of
allowed mail relay hosts and locally blacklisted spam sources. while the
tables aren't that large right now and the planner probably wouldn't use an
index even if one existed, i can definitely see fast << operations on CIDR
and INET types as being more than a little valuble in cases where things do
get large.

richard
--
Richard Welty                                         rwelty@averillpark.net
Averill Park Networking                                         518-573-7592
    Java, PHP, PostgreSQL, Unix, Linux, IP Network Engineering, Security

Re: indices and cidr/inet type

From
Tom Lane
Date:
Richard Welty <rwelty@averillpark.net> writes:
> On Tue, 05 Aug 2003 15:09:00 -0400 Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> I don't think we have a suitable index type at the moment; or more
>> accurately, we don't have a suitable operator class.  It would be an
>> interesting exercise to write an inet opclass for either rtree or GiST.

> hmmm. where should i go looking for sample code implementing operator
> classes as an example?

contrib.  Specifically, I'd suggest looking at contrib/seg, which
defines a datatype for "interval on the real line" and builds a GIST
opclass for it.  This seems like it'd map very easily to CIDR subnets.
There is a lot of cruft in contrib/seg that you don't need (at least
some coming from the fact that it originally was an rtree opclass not
a GiST opclass --- in GiST you can make your own choices about what
set of operators need to be supported, but seg just slavishly follows
the rtree design).  But it's a working example...

I'd also suggest trying to get Oleg and Teodor involved, as they are the
only active hackers who have done anything much with GiST.

            regards, tom lane

Re: indices and cidr/inet type

From
Richard Welty
Date:
On Tue, 05 Aug 2003 18:46:47 -0400 Tom Lane <tgl@sss.pgh.pa.us> wrote:

> Richard Welty <rwelty@averillpark.net> writes:
> > hmmm. where should i go looking for sample code implementing operator
> > classes as an example?
>
> contrib.  Specifically, I'd suggest looking at contrib/seg, which
> defines a datatype for "interval on the real line" and builds a GIST
> opclass for it.  This seems like it'd map very easily to CIDR subnets.

very good, thanks.

i'll go rooting about for documentation on how GIST works.

also, how does 7.4 handle comparison of v6 and v4 addresses? i should think
it should map the v4 addresses into the v6 space provided for v4 mapping,
but that's not the only thing that might have been done.

richard
--
Richard Welty                                         rwelty@averillpark.net
Averill Park Networking                                         518-573-7592
    Java, PHP, PostgreSQL, Unix, Linux, IP Network Engineering, Security

Re: indices and cidr/inet type

From
Oleg Bartunov
Date:
On Tue, 5 Aug 2003, Richard Welty wrote:

> On Tue, 05 Aug 2003 15:09:00 -0400 Tom Lane <tgl@sss.pgh.pa.us> wrote:
>
> > Richard Welty <rwelty@averillpark.net> writes:
> > > what type of index is recommended when the dominant lookup on a field
> > is
> > > '<networkaddress>' << ipblock
> >
> > I don't think we have a suitable index type at the moment; or more
> > accurately, we don't have a suitable operator class.  It would be an
> > interesting exercise to write an inet opclass for either rtree or GiST.
> > I'm not sure which one would be more suitable, but probably you could
> > handle << with one or the other.
>
> hmmm. where should i go looking for sample code implementing operator
> classes as an example?

you may look at http://www.sai.msu.su/~megera/postgres/gist/tree/README.tree.english



>
> by way of context, i do a _lot_ of email work, and my client of the moment
> is the owner of an ISP who is migrating his user & system configurations
> into postgresql as much as he possibly can. this includes his list of
> allowed mail relay hosts and locally blacklisted spam sources. while the
> tables aren't that large right now and the planner probably wouldn't use an
> index even if one existed, i can definitely see fast << operations on CIDR
> and INET types as being more than a little valuble in cases where things do
> get large.
>
> richard
> --
> Richard Welty                                         rwelty@averillpark.net
> Averill Park Networking                                         518-573-7592
>     Java, PHP, PostgreSQL, Unix, Linux, IP Network Engineering, Security
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly
>

    Regards,
        Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83