DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

Umbra


Umbra is an a relational DBMS design to support in-memory analytics for flash-based storage.

Country of Origin
DE
Start Year
2018 [04]
Project Type
Academic
Written in
C++
Derived From
HyPer
Embeds / Uses
LeanStore
Compatible With
PostgreSQL
Operating System
Linux
License
Proprietary

Database Entry

Umbra


Umbra is an a relational DBMS design to support in-memory analytics for flash-based storage.

History


Umbra is the new system built at TUM after the HyPer project.

Data Model


Joins


Query Compilation[02][03]


Umbra performs Just-In-Time (JIT) compilation of queries into Umbra IR, a custom intermediate representation (IR) similar to LLVM IR but optimized for use in a database system. After generating Umbra IR, the code is lowered using one of two backends:

  1. LLVM
  2. Flying Start

The LLVM backend emits LLVM IR, compiled at optimization level -O3. This backend is the slowest but generates the fastest executing code, making it suitable for long-running queries.

The Flying Start backend emits x86 machine code using asmJIT, generating x86 in a single pass. In addition, the Flying Start backend implements Stack Space Reuse, Machine Register Allocation, Lazy Address Calculation, and Comparison-Branch Fusion optimizations. As a result, the code generated by Flying Start has performance on par with code generated by LLVM -O0 (i.e., with optimizations disabled). Additionally, Flying Start outperforms interpretation of Umbra IR, making Flying Start suitable for all but the longest-running queries.

Umbra supports adaptive execution, pioneered by HyPer, allowing the DBMS to switch execution strategies while processing a single query. Umbra first generates x86 machine code using the Flying Start backend and then switches to the code generated by the LLVM backend for long-running queries.

Storage Architecture


Derivative Systems
CedarDB CedarDB
Revision #5 Last Updated: