Re: index

From: Brian Selzer <brian_at_selzer-software.com>
Date: Wed, 30 Jul 2008 11:30:02 -0400
Message-ID: <_N%jk.34323$ZE5.19364_at_nlpi061.nbdc.sbc.com>


"David BL" <davidbl_at_iinet.net.au> wrote in message news:c87f64b2-ceb3-4134-b3ca-93fa7c117359_at_h17g2000prg.googlegroups.com... [snip]
> >
> > > It may be useful to look at an analogy in C++. Consider a bijection
> > > between two integer attributes named x and y coded as follows:
> >
> > > class Bijection
> > > {
> > > public:
> > > void insert(int x,int y) {xtoy[x]=y; ytox[y]=x;}
> > > int getx(int y) {return ytox[y];}
> > > int gety(int x) {return xtoy[x];}
> > > private:
> > > map<int,int> xtoy;
> > > map<int,int> ytox;
> > > };
> >
> > > As a systems programmer I have used this technique in various forms on
> > > a number of occasions. I see a class instance as analogous to a
> > > single “table”, and the two maps as “clustered indexes”. Each is
> > > redundant with respect to the other. Both are needed for performance.
> >
> > I think I see what you're driving at, even though your example is
> > broken:
> >
> > Bijection b; int i, j, k, l;
> > b.insert(4, 3); b.insert(4, 5); b.insert(4, 7);
> > i = b.getx(3); // returns 4
> > j = b.getx(5); // returns 4
> > k = b.getx(7); // returns 4
> > l = b.gety(4); // returns 7

>
> Yes of course I didn't bother worrying about repeats.  However whether
> one needs to test for that explicitly depends on the application.  For
> example in the past I have needed a transient bijection between GUID
> and memory pointer and I could *assume* uniqueness of both in the
> design.
>

> > Your example is illuminating--aside from the fact that it doesn't
> > operate as
> > its name suggests. I don't think it's thread safe: x ==
> > b.getx[b.gety[x]]
> > could sometimes return false. That highlights one of the pitfalls of
> > duplicating content.
>
> Most classes in most OO programs are not threadsafe because they do
> not need to be threadsafe.  Imagine the performance hit if every
> variable of every data type was protected with a mutex!
>
> Don't scoff at that Bijection class.  It is like a Lamborghini when
> used in an appropriate context.   Why use a general purpose off road
> vehicle when you know you're only driving on the highway?
>

I wouldn't dream of it.

> > But the bottom line is that what is a clustered index in the
> > implementation
> > implied by the original poster's question differs from what you consider
> > to
> > be a clustered index.

>
> Perhaps.
> 
Received on Wed Jul 30 2008 - 17:30:02 CEST

Original text of this message