Why are we rebuilding the same database execution engine over and over?
I recently dug into Meta’s Velox, an open-source C++ execution engine designed to act like a reusable “engine block” for data systems.
Instead of Presto, Spark, etc. independently implementing things like vectorized execution, joins, memory management, spilling, and file readers, Velox provides these building blocks as a shared execution layer.
The performance numbers are interesting too:
- 8.4× faster on TPC-H Q1
- 9× faster on Q6
- 6–7× average speedup on Meta production traffic
- Up to 3× fewer servers
Checkout this interesting deep dive that how Velox actually works and why this architecture could matter for the future of data engines.
Do you think shared execution layers like Velox will become the norm, or will specialized engines always win?