C++Now 2018 has ended
Back To Schedule
Wednesday, May 9 • 11:00am - 12:30pm
Design And Implementation Of DBMS Asynchronous Client Library with C++17, Boost.Hana and Boost.Asio

Log in to save this to your schedule, view media, leave feedback and see who's attending!

Feedback form is now closed.
How to communicate with a database and use a connection efficiently, make queries and get results in a type-safe manner? What is the design for a library which provides a convenient and efficient interface to interact with DBMS? What are customization points? Where are extensions required and what could they be? But don't forget about performance.

We'll talk about data transmissions, and the techniques providing typed requests and responses. How to implement queries with strongly typed arguments and no boilerplate. How to extend the library type system with custom types using convenient introspection mechanisms of Boost.Hana and Boost.Fusion and without code generation at all. What C++17 allows us to provide flexibility and strong type guarantee. Where are the limits of constexpr in this field. How to implement the library in an efficient asynchronous manner using Boost.Asio and Networking TS. We'll try to consider various asynchronous programming techniques and the ways to support them in a single interface. Finally, we will talk about the library design. How the concepts help us to provide an efficient mechanism with wide customization. Eventually, we'll look at how to test all of it by GUnit.

All of this is implemented in PostgreSQL client library named ozo. Ozo is production ready and supports the binary protocol, retries, transactions, streaming.

avatar for Roman Siromakha

Roman Siromakha

Software Developer, Yandex
Roman graduated from Bauman Moscow Technical University as M.S. in Software Engineering. He is a Software Developer at Yandex, making backend for web mail interface dealing with C++. His hobby is to learn about AI by studying and participating in the Russian AI Cup competition, OpenMW... Read More →

Wednesday May 9, 2018 11:00am - 12:30pm MDT
Hudson Commons