<Chapter Id="gist">
<DocInfo>
<AuthorGroup>
<Author>
<FirstName>Gene</FirstName>
<Surname>Selkov</Surname>
</Author>
</AuthorGroup>
<Date>Transcribed 1998-02-19</Date>
</DocInfo>
<Title><!--GiST Indices-->GiSTインデックス</Title>
<indexterm><primary sortas="いんでっくす">インデックス</primary><secondary sortas="GiSTいんでっくす">GiSTインデックス</secondary></indexterm><indexterm><primary sortas="GiSTいんでっくす">GiSTインデックス</primary></indexterm>
<para>
<!--The information about GIST is at-->
Gistについての情報は、<ULink url="http://GiST.CS.Berkeley.EDU:8000/gist/">http://GiST.CS.Berkeley.EDU:8000/gist/</ULink>にあります。また、
<!--with more on different indexing and sorting schemes at-->
他のインデックスとソートに関するスキーマは<ULink url="http://s2k-ftp.CS.Berkeley.EDU:8000/personal/jmh/">http://s2k-ftp.CS.Berkeley.EDU:8000/personal/jmh/</ULink>.あります。
<!--And there is more interesting reading at-->
また、<ULink url="http://epoch.cs.berkeley.edu:8000/">http://epoch.cs.berkeley.edu:8000/</ULink> <!--and-->と<ULink url="http://www.sai.msu.su/~megera/postgres/gist/">http://www.sai.msu.su/~megera/postgres/gist/</ULink>にも、より興味深い記事があります。
</para>

<Note>
<Title><!--Author-->著者</Title>
<para>
<!--This extraction from an email sent by 
Eugene Selkov, Jr. (<email>selkovjr@mcs.anl.gov</email>)
contains good information
on GiST. Hopefully we will learn more in the future and update this information.
- thomas 1998-03-01-->

これは、Eugene Selkov, Jr.（<email>selkovjr@mcs.anl.gov</email>）によるメールからの抜粋であり、GiSTに関する優れた情報が含まれています。今後もっと調査を行い、この情報を更新する予定です。
</para>
</Note>

<para>
<!--Well, I can't say I quite understand what's going on, but at least
I (almost) succeeded in porting GiST examples to linux. The GiST access
method is already in the postgres tree (<FileName>src/backend/access/gist</FileName>).-->

何をしているのかを正しく理解しているとはいえませんが、少なくとも、GiSTの例をLinuxに移植することに（ほぼ）成功しました。GiSTアクセスメソッドはすでにpostgresのソースツリー（<FileName>src/backend/access/gist</FileName>）にあります。
</para>

<para>
<!--<ULink url="ftp://s2k-ftp.cs.berkeley.edu/pub/gist/pggist/pggist.tgz">Examples at Berkeley</ULink>
come with an overview of the methods and demonstrate spatial index 
mechanisms for 2D boxes, polygons, integer intervals and text
(see also <ULink url="http://gist.cs.berkeley.edu:8000/gist/">GiST at Berkeley</ULink>).
In the box example, we
are supposed to see a performance gain when using the GiST index; it did
work for me but I do not have a reasonably large collection of boxes
to check that. Other examples also worked, except polygons: I got an 
error doing-->

<ULink url="ftp://s2k-ftp.cs.berkeley.edu/pub/gist/pggist/pggist.tgz">バークレイの例</ULink><![%book-publish;[（ftp://s2k-ftp.cs.berkeley.edu/pub/gist/pggist/pggist.tgz）]]>では、そのメソッドの概略を示し、また、2次元の四角形、多角形、整数間隔、テキスト用の空間的インデックスのデモを行っています（<ULink url="http://gist.cs.berkeley.edu:8000/gist/">バークレイでのGiST</ULink><![%book-publish;[――http://gist.cs.berkeley.edu:8000/gist/]]>を参照してください）.ボックス用の例で、GiSTインデックスを使った場合性能が向上していることがわかると思います。私のところではうまく動きましたが、適当な量のボックスの集合を使って試していません。多角形を除いて、他の例もうまく動作しました。多角形の場合は以下ようなエラーになりました。
</para>

<programlisting>
test=> <userinput>create index pix on polytmp</userinput>
test-> <userinput>using gist (p:box gist_poly_ops) with (islossy);</userinput>
ERROR:  cannot open pix

(PostgreSQL 6.3               Sun Feb  1 14:57:30 EST 1998)
</programlisting>

<para>
<!--I could not get sense of this error message; it appears to be something
we'd rather ask the developers about (see also Note 4 below). What I
would suggest here is that someone of you linux guys (linux==gcc?) fetch the 
original sources quoted above and apply my patch (see attachment) and 
tell us what you feel about it. Looks cool to me, but I would not like 
to hold it up while there are so many competent people around.-->

私にはこのエラーメッセージの意味が理解できませんでした。開発者に聞いたほうがよさそうです（後述のメモ4を見てください）。私がここで提案したいことは、Linuxユーザーのどなたかに上で引用した元のソースを入手して、私が作ったパッチ<!--（添付参照）-->を適用して、そして、その感想を聞かせて欲しいということです。私は結構よいと思いましたが、多くの有能な方々がいらっしゃるので、このパッチに固執するつもりはありません。

</para>
<para>
<!--A few notes on the sources:-->
ソースに関するメモを数個、下記に示します。
</para>

<orderedlist>
<listitem>
<para>
<!--1. I failed to make use of the original (HPUX) Makefile and rearranged
   the Makefile from the ancient postgres95 tutorial to do the job. I tried
   to keep it generic, but I am a very poor makefile writer - just did
   some monkey work. Sorry about that, but I guess it is now a little
   more portable that the original makefile.-->

   オリジナルのHP-UX用のMakefileを使ってmakeすることはできませんでしたので、昔のPostgres95のチュートリアルを参考にMakefileを再構成し、makeを行いました。一般的な形を保持しようと思いましたが、makefile作成には長けていませんので、素人仕事となってしまいました。この点は謝罪しますが、元々のmakefileより移植性に優れたものになったと思っています。
</para>
</listitem>

<listitem>
<para>
<!--2. I built the example sources right under pgsql/src (just extracted the
   tar file there). The aforementioned Makefile assumes it is one level
   below pgsql/src (in our case, in pgsql/src/pggist).-->

   サンプルソースをpgsql/src下の適当なところで構築しました（tarファイルを展開するとできる）。前述のMakefileでは、pgsql/srcの1階層下のディレクトリにあるものとして扱っています。
</para>
</listitem>

<listitem>
<para>
<!--3. The changes I made to the *.c files were all about #include's,
   function prototypes and typecasting. Other than that, I just threw 
   away a bunch of unused vars and added a couple parentheses to please
   gcc. I hope I did not screw up too much -->

   私が*.cファイルに行った変更は、すべて#includeと関数プロトタイプと型キャストに関することです。これ以外に、使用していない変数群の削除とgccを通すための2つのかっこの追加を行っています。私が台無しにしていなければいいのですが。
</para>
</listitem>

<listitem>
<para>
<!--4. There is a comment in polyproc.sql:-->
   polyproc.sqlに下記のようなコメントがあります。
</para>

<programlisting>
-- -- <!--there's a memory leak in rtree poly_ops!!-->r-treeタイプのpoly_opsにはメモリリークがあります
-- -- <!--create index pix2 on polytmp using rtree (p poly_ops);-->rtree (p poly_ops)を使ってpix2インデックスをpolytmpに作ってください
</programlisting>

<para>
   <!--Roger that!! I thought it could be related to a number of
   <ProductName>Postgres</ProductName> versions
   back and tried the query. My system went nuts and I had to shoot down
   the postmaster in about ten minutes.-->

   それを踏まえ、何世代か前の<ProductName>Postgres</ProductName>バージョンに関連すると思い、その問い合わせを試みました。私のシステムはおかしくなってしまい、およそ10分後、postmasterを停止させなければならなくなりました。
</para>
</listitem>
</orderedlist>

<para>
<!--I will continue to look into GiST for a while, but I would also
appreciate
more examples of R-tree usage.-->

しばらくはGiSTに注目していきますが、R-treeの多くの例も歓迎します。
</para>
</Chapter>
