<div dir="ltr"><div dir="ltr">Wols, <div><br></div><div>Thanks for sharing your concerns, replete with quotes from Einstein :-) ! </div><div><br></div><div>I believe I share those concerns... but there are of course some liberties we can take as an academic group that you folks managing a popular spreadsheet tool cannot take (e.g., doing a proof of concept as opposed to a robust implementation.)   From a research/academic standpoint it is valuable to note that something is possible, even if the solution is not ideal given other pragmatic considerations.  BTW, I don't believe that anything we're doing *requires* a relational database -- a NoSQL setup would work just fine. </div><div><br></div><div>I'd be happy to discuss more.  Our goal is to understand the stumbling blocks in translating our work into spreadsheet tools such as Calc and see how we can best help with what we've learned.  </div><div><br></div><div>Cheers,</div><div>Aditya</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Dec 9, 2019 at 3:37 PM Wols Lists <<a href="mailto:antlists@youngman.org.uk" target="_blank">antlists@youngman.org.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 09/12/19 19:14, Aditya Parameswaran wrote:<br>
>            The idea of converting to SQL queries is an interesting one<br>
>     but I find<br>
>     it very hard to believe it would provide any performance advantage at<br>
>     the same memory footprint. Furthermore - I'd be interested to know how<br>
>     you do other spreadsheet operations: row & column insertion, addressing,<br>
>     and dependency work on top of a SQL database with any efficiency.<br>
> <br>
> <br>
> We started by having the relational database be a simple persistent<br>
> storage layer, when coupled with an index to retrieve data by position,<br>
> can allow us to scroll through large datasets of billions of rows at<br>
> ease. We developed a new positional index to handle insertions and<br>
> deletions in O(log(n)) -- <a href="https://arxiv.org/pdf/1708.06712.pdf" rel="noreferrer" target="_blank">https://arxiv.org/pdf/1708.06712.pdf</a>. I agree<br>
> that pushing the computation to the relational database does have<br>
> overheads; but at the same time, it allows for scaling to arbitrarily<br>
> large datasets. <br>
<br>
"the quickest way to optimise database access is to ditch first normal<br>
form".<br>
<br>
A provocative statement I know, but I'm very much in the NoSQL camp. I<br>
can hunt up the details of a face-off between Oracle and Cache, where<br>
Oracle had to "cheat" to achieve 100K tpm (things like deferring index<br>
updates) whereas Cache blasted through 250K barely breaking a sweat ...<br>
(or it might well have been tps)<br>
<br>
The maths supports this ...<br>
<br>
That said, a spreadsheet is inherently first normal formal, so tying a<br>
spreadsheet and a relational database together MAY make sense.<br>
<br>
In general though, Einstein said "make things as simple as possible BUT<br>
NO SIMPLER". Relational oversimplifies the database side, which means<br>
the application side is over-complex in order to compensate. (Which is<br>
why Cache blew Oracle out of the water.)<br>
<br>
I'm quite happy to wax lyrical, but I'd rather not preach to an audience<br>
who aren't at least interested. Feel free to ask me to continue on list,<br>
or contact me privately, and I'll try to prove everything as<br>
mathematically as I can :-)<br>
<br>
> but at the same time, it allows for scaling to arbitrarily<br>
> large datasets.<br>
<br>
At the price of massive unnecessary complexity.<br>
<br>
Cheers,<br>
Wol<br>
</blockquote></div></div>