gist.sgml
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:4k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. <Chapter Id="gist">
  2. <DocInfo>
  3. <AuthorGroup>
  4. <Author>
  5. <FirstName>Gene</FirstName>
  6. <Surname>Selkov</Surname>
  7. </Author>
  8. </AuthorGroup>
  9. <Date>Transcribed 1998-02-19</Date>
  10. </DocInfo>
  11. <Title>GiST Indices</Title>
  12. <Para>
  13. The information about GIST is at
  14.  <ULink url="http://GiST.CS.Berkeley.EDU:8000/gist/">http://GiST.CS.Berkeley.EDU:8000/gist/</ULink>
  15. with more on different indexing and sorting schemes at
  16. <ULink url="http://s2k-ftp.CS.Berkeley.EDU:8000/personal/jmh/">http://s2k-ftp.CS.Berkeley.EDU:8000/personal/jmh/</ULink>
  17. And there is more interesting reading at the Berkely database site at 
  18. <ULink url="http://epoch.cs.berkeley.edu:8000/">http://epoch.cs.berkeley.edu:8000/</ULink>.
  19. </para>
  20. <Para>
  21. <Note>
  22. <Title>Author</Title>
  23. <Para>
  24. This extraction from an e-mail sent by 
  25. <ULink url="mailto:selkovjr@mcs.anl.gov">Eugene Selkov Jr.</ULink>
  26. contains good information
  27. on GiST. Hopefully we will learn more in the future and update this information.
  28. - thomas 1998-03-01
  29. </Para>
  30. </Note>
  31. </para>
  32. <Para>
  33. Well, I can't say I quite understand what's going on, but at least
  34. I (almost) succeeded in porting GiST examples to linux. The GiST access
  35. method is already in the postgres tree (<FileName>src/backend/access/gist</FileName>).
  36. </para>
  37. <Para>
  38. <ULink url="ftp://s2k-ftp.cs.berkeley.edu/pub/gist/pggist/pggist.tgz">Examples at Berkeley</ULink>
  39. come with an overview of the methods and demonstrate spatial index 
  40. mechanisms for 2D boxes, polygons, integer intervals and text
  41. (see also <ULink url="http://gist.cs.berkeley.edu:8000/gist/">GiST at Berkeley</ULink>).
  42. In the box example, we
  43. are supposed to see a performance gain when using the GiST index; it did
  44. work for me but I do not have a reasonably large collection of boxes
  45. to check that. Other examples also worked, except polygons: I got an 
  46. error doing
  47. <ProgramListing>
  48. test=> create index pix on polytmp
  49. test-> using gist (p:box gist_poly_ops) with (islossy);
  50. ERROR:  cannot open pix
  51. (PostgreSQL 6.3               Sun Feb  1 14:57:30 EST 1998)
  52. </ProgramListing>
  53. </para>
  54. <Para>
  55. I could not get sense of this error message; it appears to be something
  56. we'd rather ask the developers about (see also Note 4 below). What I
  57. would suggest here is that someone of you linux guys (linux==gcc?) fetch the 
  58. original sources quoted above and apply my patch (see attachment) and 
  59. tell us what you feel about it. Looks cool to me, but I would not like 
  60. to hold it up while there are so many competent people around.
  61. </para>
  62. <Para>
  63. A few notes on the sources:
  64. </para>
  65. <Para>
  66. 1. I failed to make use of the original (HPUX) Makefile and rearranged
  67.    the Makefile from the ancient postgres95 tutorial to do the job. I tried
  68.    to keep it generic, but I am a very poor makefile writer -- just did
  69.    some monkey work. Sorry about that, but I guess it is now a little
  70.    more portable that the original makefile.
  71. </para>
  72. <Para>
  73. 2. I built the example sources right under pgsql/src (just extracted the
  74.    tar file there). The aforementioned Makefile assumes it is one level
  75.    below pgsql/src (in our case, in pgsql/src/pggist).
  76. </para>
  77. <Para>
  78. 3. The changes I made to the *.c files were all about #include's,
  79.    function prototypes and typecasting. Other than that, I just threw 
  80.    away a bunch of unused vars and added a couple parentheses to please
  81.    gcc. I hope I did not screw up too much :)
  82. </para>
  83. <Para>
  84. 4. There is a comment in polyproc.sql:
  85. <ProgramListing>
  86. -- -- there's a memory leak in rtree poly_ops!!
  87. -- -- create index pix2 on polytmp using rtree (p poly_ops);
  88. </ProgramListing>
  89.    Roger that!! I thought it could be related to a number of
  90.    <ProductName>Postgres</ProductName> versions
  91.    back and tried the query. My system went nuts and I had to shoot down
  92.    the postmaster in about ten minutes.
  93. </para>
  94. <Para>
  95. I will continue to look into GiST for a while, but I would also
  96. appreciate
  97. more examples of R-tree usage.
  98. </para>
  99. </Chapter>