Boost.MySQL是一个基于Boost.Asio的C++11客户端,用于MySQL和MariaDB数据库服务器。
MySQL和MariaDB是广泛使用的SQL数据库服务器。MySQL客户端连接到服务器以发出SQL查询。为此,MySQL使用了专用协议。Boost.MySQL是该协议客户端端的实现。
这个库是MySQL客户端/服务器协议的完整实现。它旨在以高效而易于使用的方式公开协议原语。在范围上类似于官方的libmysqlclient,但与Asio兼容,更安全且更具表达力。请注意,Boost.MySQL不使用libmysqlclient:它是MySQL协议的完整实现,因此可以与Asio本地兼容。
这个库相对较低级。它让你访问文本SQL查询和预准备语句。不要期望一个ORM。本节简要介绍主要库功能。
该库的设计目标是:
与Asio的互操作性:该库采用与Boost.Asio和Boost.Beast相同的原则。使用任何这些库的用户将立即理解Boost.MySQL,并且很容易将其集成到他们的程序中。 进一步抽象的基础:它允许有效地访问MySQL客户端/服务器协议,因此可以被更高级别的组件用作构建块。做一件事,并做得很好。 效率。 易于使用:MySQL协议充满了陷阱。我们信奉简单。在保留对重要部分的控制的同时,该库尽可能多地隐藏了协议的复杂性。 非目标:
成为ORM。 成为SQL查询生成器。该库不专注于生成查询的实用程序。不要期望类似于table("orders").select(["id", "quantity"]).where("id", 42)的语法糖。 可移植性到其他SQL数据库。该库专注于MySQL。它将不适用于Postgres或SQLite等其他数据库。 何时使用 如果以下任何陈述为真,您可能考虑使用Boost.MySQL:
您的应用程序使用Boost.Asio,您需要访问MySQL服务器。 您需要从C++应用程序异步访问MySQL服务器。 您需要从C++应用程序有效地访问MySQL服务器。 您需要一个BSL许可的库来访问您的MySQL服务器。 您正在编写一个更高级别的数据库访问库,比如ORM。 用例可能包括Web服务器、ETL流程和物联网系统。
您只需要同步访问MySQL服务器,效率对您的应用程序不重要。在这种情况下,官方客户端库可能更适合您。 您需要对不同SQL数据库(不仅是MySQL访问)进行同质SQL访问。您可能会发现在使用sqlpp11或类似的封装库时更有价值。 已测试的编译器和系统 Boost.MySQL在以下编译器下进行了测试:
gcc 5.4(Linux) gcc 6.5(Linux) gcc 10.3(Linux) gcc 11.2(Linux) gcc 13.0(Linux) clang 3.6(Linux) clang 7.0(Linux) clang 11.0(Linux) clang 14.0(Linux) clang 16.0(Linux) clang 14.0(OSX) MSVC 14.1 - Visual Studio 2017(Windows) MSVC 14.2 - Visual Studio 2019(Windows) MSVC 14.3 - Visual Studio 2022(Windows) 以及以下RDBMS系统:
MySQL v5.7.41。 MySQL v8.0.33。 MariaDB v11.0。