Hello Paul,

Thank you very much for your active participation in this discussion. I
agree that we shouldn't blindly accept Arrow as the only option in the
world.
Also, I would like to learn more about the fixed-size blocks. So I'll read
the paper and hope I'll have some related ideas to discuss later.

Thanks,
Igor


On Fri, Jan 10, 2020 at 9:17 PM Paul Rogers <par0...@yahoo.com.invalid>
wrote:

> Hi All,
>
> Glad to see the Arrow discussion heating up and that it is causing us to
> ask deeper questions.
>
> Here I want to get a bit techie on everyone and highlight two potential
> memory management problems with Arrow.
>
> First: memory fragmentation. Recall that this is how we started on the EVF
> path. Allow allocates large, variable-size blocks of memory. To quote a
> 35-year old DB paper [1]: "[V]ariable-sized pages would cause heavy
> fragmentation problems."
>
> Second: the idea of Arrow is that tool A creates a set of vectors that
> tool B will consume. This means that tool A and B have to agree on vector
> (buffer) size. Suppose tool A wants really big batches, but B can handle
> only small batches. In a columnar system, there is no good way to split a
> bit batch into smaller ones. One can copy values. but this is exactly what
> Arrow is supposed to avoid.
>
> Hence, when using Arrow, a data producer dictates to Drill a crucial
> factor in memory management: batch size. And, Drill dictates batch size to
> its clients. It will require complex negotiation logic. All to avoid a copy
> when the tools will communicate via RPC anyway. This is, in the larger
> picture, not a very good design at all. Needless to say, I am personally
> very skeptical of the benefits.
>
> A possible better alternative, one that we prototyped some time back, is
> to base Drill memory on fixed-size "blocks", say 1 MB in size. Any given
> vector can use part of, all of, or multiple of the blocks to store data.
> The blocks are at least as large as the CPU cache lines, so we retain that
> benefit. Memory management is now far easier, and we can exploit 40 years
> of experience in effective buffer management. (Plus, the blocks are easy to
> spill to disk using classic RDBMS algorithms.)
>
> Point is: let's not blindly accept the work that Arrow has done. Let's do
> our homework to figure out the best system for Drill: whether that be
> Arrow, fixed-size buffers, the current vectors, or something else entirely.
>
> Thanks,
> - Paul
>
>
>
> [1]
> http://users.informatik.uni-halle.de/~hinnebur/Lehre/2008_db_iib_web/uebung3_p560-effelsberg.pdf

Reply via email to