Full Chunk-based Computing
Presented by Chi Zhang (@skyzh)
Contents
What is Chunk-based Computing
Motivation
Changes in Developer Interface
For primitive types (Int, Decimal, etc.)
Changes in Developer Interface
For “Bytes” and “Json”
Changes in Developer Interface
For functions that return “NULL” if any of the argument is “NULL”
Changes in Developer Interface
For functions that may return large amounts of data
Changes in Developer Interface
For functions that may return large amounts of data
Changes in Developer Interface
Internal Changes
Some(128)
Some(64)
None
Vec<Option<Int>>
(16 * 3 = 48 bytes)
128
64
0
(8 * 3 + 1 = 25 bytes)
ChunkedVecSized<T>
11000000
bitmap (BitVec)
lowest - highest bit
Internal Changes
abcd
efgh
ijkl
Vec<Option<Bytes>>
abcdefghijkl
ChunkedVecBytes
ptr
ptr
NULL
ptr
(Somewhere in memory)
offsets
0
4
8
8
12
11010000
bitmap (BitVec)
lowest - highest bit
Internal Changes
add(a: &Int, b: &Int)
11100111
bitmap of A
11011111
bitmap of B
bitwise and
11000111
merged bitmap
evaluate
Micro Benchmarks
Future works
Thank You !