R-tree to be available in mdds

Kohei Yoshida libreoffice at kohei.us
Tue Jul 31 00:06:06 UTC 2018

Hey there,

I'm currently working toward getting the next version of mdds [1] released.  One highlight of the next release is the inclusion of R-tree.  For those of you unfamiliar with R-tree, it is a data structure known to be optimal for indexing multi-dimensional spatial data, and is heavily used in e.g. storing 2D/2D map data and shape data with bounding boxes.  The one being implemented in mdds is a variant of R-tree known as R*-tree [2].

I can think of many areas where R-tree could be used inside the libreoffice code base, but one area I am particularly interested in is formula dependency tracking, especially those that involve cell ranges.  I suspect that, if implemented correctly, the use of R-tree could improve the query speed and also potentially minimize the complexity of the range-based listener-broadcaster handling on the libreoffice side (by moving the complexity of managing the data structure into mdds).  Also, by using R-tree to manage formula dependency data, we could in theory merge all of cell-to-cell, cell-to-range, range-to-cell and range-to-range dependency tracking into a single data structure, which to me is a very attractive proposition.

Now, this all sounds good, but I'm fully aware that I'm being overly optimistic not to mention biased, and it's entirely possible that I'm wrong, and using R-tree in range-based dependency tracking would end up in more pain and less gain.  So, my current plan is to experiment this idea of mine in the ixion library [3] first, then if it works well there, we can re-visit it here perhaps with more confidence.  I just wanted to throw this idea on this list early, and see what you guys think.



[1] https://gitlab.com/mdds/mdds
[2] https://en.wikipedia.org/wiki/R*_tree
[3] https://gitlab.com/ixion/ixion

Kohei Yoshida, LibreOffice Calc volunteer hacker

More information about the LibreOffice mailing list