Boost logo

Boost :

From: Dominique Devienne (ddevienne_at_[hidden])
Date: 2022-05-11 08:22:04


On Tue, May 10, 2022 at 10:54 PM Richard Hodges via Boost
<boost_at_[hidden]> wrote:
> It is worth remembering that because this is MySQL, nothing can be done
> with the connection object until the resultset has been fully read.

Interesting, didn't know that (not being familiar with MySQL).

Note that PostgreSQL's official C client API now offers a *pipeline* mode [1],
which was part of the protocol for a while, but not exposed
client-side until v14.

The protocol also supports two *encoding* modes, text or binary. Is
MySQL's protocol text only?
We tested both, and binary is faster (surprise, right), which matter to me/us.

There's also a special COPY mode, for higher-performance (and
incremental IO) bulk row access.
Any equivalent MySQL side? Again, COPY IN and OUT is faster than
regular DML in PostgreSQL.

A little off-topic for this review, but OTOH answers to the above
would help understand the kind of async
possible with MySQL in general, and thus the proposed Boost.MySQL, at
the protocol level.

More related to this review, I don't see any performance chapter in
the doc's TOC with the official MySQL (C I guess) API.
Doing away with the official client code is a risk, and using ASIO
brings in significant complexity (from my POV),
so how is proposed Boost.MySQL better than the official C client, or a
good C++ wrapper on top of it?

Or is the target market of this library only existing ASIO users who
want to perform MySQL queries/statements?
What's the target use-case? Small (in resultset size) and frequent
(thus low duration / overhead) queries?
Any wins on large bulk data loads for ETL tools, especially compared
to (simpler?) code using the official client?

Efficiency is listed as a goal, but there's no absolute metric, nor
comparison to the obvious alternative that's the offical client API.

Again, I'm not a MySQL user at this point. But I'm a heavy user of
PostgreSQL and SQLite.
And also of Oracle OCI in the past. So I have interest and perspective
on the domain.

I'm also aware of the Boost.PostgreSQL demo/proto Ruben made in the
past, in the same style as Boost.MySQL.
Thus IF I was a user of MySQL, the questions above would be first and
foremost in my mind, about Boost.MySQL.
And OTOH, if Boost.MySQL really has benefits, then maybe I can
translate those benefits to that Boost.PostgreSQL proto?

Beyond the design and implementation of such an ASIO-based
*from-scracth* C++ client,
I feel like there's too much missing for me to evaluate the "What-In-It-For-Me"
and tradeoffs associated with proposed Boost.MySQL.

Hopefully that makes sense :). Thanks, --DD

[1]: https://www.postgresql.org/docs/current/libpq-pipeline-mode.html


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk