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.
Thoughts?
Kohei
[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
Context
- R-tree to be available in mdds · Kohei Yoshida
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.