Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <h1>Architecture of the file</h1> <p>Well, it's pages (= blocks). The pages should have a multiple of the page size of the underlying storage, so probably 1kb or 8kb blocks. Each block has a number and can be references this way.</p> <p>Directory pages store the bounding boxes of the children and their page numbers.</p> <p>Child pages store the actual data objects.</p> <h1>Managing the tree</h1> <p>Well, in theory: whenever you modify a page in memory, you write the changes to disk. That's it.</p> <p>In practise, you might want to use a cache for performance, and you might want to have transactions for keeping your tree consistent in case of an application crash.</p> <p>On both of these things you can find a lot of literature in the field of RDBMS architecture.</p> <p>A key benefit of the R*-tree is that it is a regular page-oriented tree as you would have them in database systems all over the place. If you have a good on disk B+-tree implementation, you can <em>reuse most of your code</em> for the R*-tree.</p> <h1>How to get started</h1> <p>To get started, you need to get used to disk-based data indexing, as it is done in classic RDBMS. I'd suggest starting with an <strong>on disk</strong> B-tree or B+-tree. Do allow deletions, because you need to think about managing deleted pages and all this.</p> <p>Once you figured out the B-Tree on disk (and maybe spend some time on optimizing it!), doing an on-disk R-tree should be fairly obvious.</p> <p>I havn't looked at the code, but this might be a good starting point: <a href="http://www.die-schoens.de/prg/" rel="nofollow noreferrer">http://www.die-schoens.de/prg/</a> or some of the others linked in <a href="https://stackoverflow.com/questions/1720738/looking-for-a-disk-based-b-tree-implementation-in-c-or-c">Looking for a disk-based B+ tree implementation in C++ or C</a></p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload