C++ to Go
C++ to Go
Introducing Ziegel
박재완
Luft
- Ziegel and TrailDB
Luft
- OLAP database for analize the analyzing user behavior in real-time
- Use TrailDB as a storage
- Written in C/C++ and Go
TrailDB
- TrailDB is an efficient tool for storing and querying series of events
- Written in C
Ziegel
- New storage engine for the Luft
- Written in Go
Why?
- TrailDB has been a suitable solution for the Luft
- But development was halted in 2019
- Issues with peformance and productivity
Issues
- Inefficient multi-core utilization
// finalize. this could take a while with idle CPU usage but don't panic.
// it's not freeze;
// it's because TrailDB indexing process is not parallelized yet :(
- Row store data structure
- Use multiple language: C/C++ and Go
Journey for the migration
- Add more tests for consistency verification
- Add interface for engine replacement
- With this interface, we can easily replace the engine(partial or full)
- Implement storage engine
- Peformance tuning
- 2x fater for the ingestion, 1.2 slower for the query
Peformance tuning
Measuring performance
Go provides great tools for measuring performance.